一、sonarqube簡介
Sonar是一個用于代碼質(zhì)量管理的開源平臺,用于管理Java源代碼的質(zhì)量。通過插件機(jī)制,Sonar 可以集成不同的測試工具,代碼分析工具,以及持續(xù)集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。
通過不同的插件對這些結(jié)果進(jìn)行再加工處理,通過量化的方式度量代碼質(zhì)量的變化,從而可以方便地對不同規(guī)模和種類的工程進(jìn)行代碼質(zhì)量管理。同時 Sonar 還對大量的持續(xù)集成工具提供了接口支持,可以很方便地
在持續(xù)集成中使用 Sonar。 此外,Sonar 的插件還可以對 Java 以外的其他編程語言提供支持,對國際化以及報告文檔化也有良好的支持。
二、代碼質(zhì)量檢測規(guī)劃
隨著代碼量的增多,服務(wù)模塊的拆分,代碼越來越難進(jìn)行管理,質(zhì)量與效率的矛盾慢慢凸顯出來,而人為的管理代碼質(zhì)量,耗時耗力。因此實現(xiàn)自動化工具檢測勢在必行,
平臺規(guī)劃使用云端和本地結(jié)合的方式實現(xiàn)代碼質(zhì)量的管控。云端Git + Jenkins + Sonar執(zhí)行自動代碼質(zhì)量分析,研發(fā)人員在Git提交代碼后,會自動觸發(fā)Jenkins構(gòu)建項目,構(gòu)建
項目前,自動觸發(fā)Sonar檢測代碼質(zhì)量,并將結(jié)果展示在頁面。本地研發(fā)人員提交代碼前,先用編碼規(guī)范進(jìn)行代碼檢測,檢測沒有異常,才能提交代碼。
Sonar本身提供了大量的代碼檢測規(guī)則,但是很多規(guī)則并不影響代碼的質(zhì)量和效率。目前業(yè)界比較好的java代碼規(guī)范是阿里發(fā)布的《阿里巴巴java開發(fā)手冊》,而二者也可以很方便的集成在一起。
本地代碼檢測規(guī)則和云端Sonar的配置的規(guī)則應(yīng)保持一致,Sonar提供了IDE開發(fā)工具插件sonarLint,可以將sonarQube服務(wù)上配置的規(guī)則同步到開發(fā)工具上。但是目前Sonar并不支持自定義規(guī)則的同步,所以需要先在開發(fā)工具裝安裝阿里的p3c編碼規(guī)范插件,然后從中選擇平臺適用的規(guī)范。目前這是折中方案,后續(xù)將繼續(xù)研究如何將第三方的規(guī)則從sonarQube上同步到本地IDE中,使自定義規(guī)則的同步更方便。
推薦使用Idea進(jìn)行研發(fā),idea可以自定義配置需要的代碼檢查規(guī)則。
一、pmd插件整合阿里開發(fā)規(guī)則
sonar-pmd是sonar官方的支持pmd的插件,但是還不支持p3c,需要在pmd插件源碼中添加p3c支持(p3c是阿里在pmd基礎(chǔ)上根據(jù)阿里開發(fā)手冊實現(xiàn)了其中的49開發(fā)規(guī)則)。
源碼下載地址:https://github.com/mrprince/sonar-p3c-pmd
此源碼工程已經(jīng)添加了P3C支持,直接mvn package打包即可。
打好jar包后拷貝到sonar的plugins目錄下:
|
sonarQube_Home/extensions/plugins
|
重啟sonarQube,進(jìn)入sonarQube后,選擇“代碼規(guī)則”菜單,在頁面中,選擇“Java”,搜索框中搜索“p3c”,右側(cè)列表能顯示規(guī)則則導(dǎo)入成功
注意:注意SonarQube版本匹配問題,當(dāng)前SonarQube 7.2社區(qū)版

二、配置阿里開發(fā)規(guī)則
選擇“質(zhì)量配置”菜單,點擊“創(chuàng)建”按鈕

在彈出的頁面出輸入配置名稱并選擇編程語言,創(chuàng)建配置

進(jìn)入配置頁面后,點擊“更多激活規(guī)則”,可以進(jìn)入規(guī)則選擇頁面

語言選擇“Java”,并在搜索框中輸入“p3c”,查找出之前導(dǎo)入的阿里編碼規(guī)則

點擊需要添加的規(guī)則后的“活動”按鈕,可以將此條規(guī)則激活,加入創(chuàng)建的質(zhì)量配置中

點擊“活動”按鈕的彈出框中可以選擇此條規(guī)則的適用嚴(yán)重程度

三、設(shè)置Java和項目的質(zhì)量配置
選擇“質(zhì)量配置”菜單,在頁面中選擇剛才創(chuàng)建的質(zhì)量配置,點擊配置按鈕選擇“設(shè)為默認(rèn)”,可以將
該質(zhì)量配置設(shè)置為java默認(rèn)配置,提交的java代碼會自動被質(zhì)量配置中的規(guī)則進(jìn)行質(zhì)量檢查

如果不設(shè)置未默認(rèn),也可以點擊剛才創(chuàng)建的質(zhì)量配置,在跳出的頁面中選擇“修改項目”,來添加
適用該質(zhì)量配置的項目

IDEA添加阿里編碼規(guī)范
打開IDEA的Settings

選擇Plugins,右側(cè)選擇Alibaba Java Coding Guidelines,并install

重啟IDEA后,可以看到Tools下已有阿里編碼規(guī)約

二、IDEA選擇適用的阿里編碼規(guī)范
打開IDEA的Settings,選擇Inspections,在右側(cè)的界面中Copy一個Profile并改名,與系統(tǒng)的Profile進(jìn)行區(qū)別。
Leavel 是Project Leavel,用橡皮檫清空原來的選擇的規(guī)則后選擇Ali-Check下的規(guī)則,Ali-Check分類下即是
阿里巴巴的編碼規(guī)范。

配置好Ali-Check后,可以選擇將Profile導(dǎo)出,其他同事可以直接導(dǎo)入使用

三、IDEA使用配置的編碼規(guī)范進(jìn)行代碼檢測
選擇Analyze下的Inspect Code菜單

在彈出的界面中選擇配置的Ali-Check進(jìn)行檢測

檢測結(jié)果會顯示在IDEA的下方

也可以在想要檢查的類上右擊,Analyze→Inspect Code,進(jìn)行當(dāng)前類的檢測
