隨著公司業(yè)務(wù)發(fā)展,項目逐漸龐大,代碼也越來越多,而不同的開發(fā)人員在編碼習(xí)慣以及技術(shù)能力上也會有較大的差異,為了進行高質(zhì)量的項目代碼管理,并及時的對代碼進行分析并給出合理的解決方案已經(jīng)成為必需。
SonarQube 是一個開源的代碼質(zhì)量管理系統(tǒng),它可以通過使用插件與 eclipse 集成,從而實現(xiàn)了對代碼的質(zhì)量的全面自動化分析和管理。SonarQube 并不是簡單地將各種質(zhì)量檢測工具的結(jié)果(例如 FindBugs,PMD 等)直接展現(xiàn)給客戶,而是通過不同的插件算法來對這些結(jié)果進行再加工,最終以量化的方式來衡量代碼質(zhì)量,從而方便地對不同規(guī)模和種類的工程進行相應(yīng)的代碼質(zhì)量管理。
部署步驟如下:
1、 下載sonarqube-7.1,地址為:https://www.sonarqube.org/downloads/
2、 解壓sonarqube-7.1.zip,根據(jù)操作系統(tǒng)的版本啟動sonarqube,這里的環(huán)境為啟動的腳本為:sonarqube-7.1\bin\windows-x86-32\StartSonar.bat;
注意:jdk的版本需要jdk8,需要設(shè)置環(huán)境變量JAVA_HOME,并將JAVA_HOME/bin目錄加入到系統(tǒng)環(huán)境的PATH
3、 啟動后采用http://127.0.0.1:9000/訪問系統(tǒng),默認的用戶和密碼為admin/admin.
4、 建一個project,如下
[圖片上傳失敗...(image-8bc2a6-1526545610440)]
5、 對于采用Maven的工程比較簡單,進行如下設(shè)置,修改文件, 文件路徑為$MAVEN_HOME/conf或者~/.m2,修改得內(nèi)容如下:
<settings>
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
``
<sonar.host.url>[http://ocalhost:9000](http://ocalhost:9000)</sonar.host.url>
</properties>
</profile>
</profiles>
</settings>
6、 在需要分析的項目下面執(zhí)行:mvn clean verify sonar:sonar;需要注意的創(chuàng)建的project必須和我們需要分析的項目工程名字保持一致,否則分析的數(shù)據(jù)無法導(dǎo)入到sonarqube中;
如下在分析的過程中提示內(nèi)容溢出,請設(shè)置:
set MAVEN_OPTS=-Xmx512m linux下面執(zhí)行export MAVEN_OPTS="-Xmx512m"
如果需要排除部分目錄可以進行設(shè)置:
maven的pom.xml文件里面加入sonar.exclusions指明哪些自動生成代碼的文件夾不需要分析。
具體的匹配規(guī)則可以參考sonar的官方文檔,非常簡單 (docs.sonarqube.org )。注意使用maven項目時匹配的文件夾基礎(chǔ)是project base dir。
Wildcard Matches
? 匹配單個字符 ** 匹配0個或多個文件夾 * 匹配0個或多個字符
在pom.xml文件中添加以下事列代碼即可,
<properties>
<sonar.exclusions>
src/main/java/com/.../domain/model//,
src/main/java/com/.../exchange//
</sonar.exclusions>
</properties>
7、 分析結(jié)束后即可在http://127.0.0.1:9000/projects中查看到分析結(jié)果,如下:
[圖片上傳中...(image.png-412ca1-1526545463323-0)]
進一步查看詳細的信息:
[圖片上傳失敗...(image-ab5cb2-1526545385966)]
具體到代碼的錯誤信息:
[圖片上傳失敗...(image-155cc7-1526545385966)]
代碼統(tǒng)計信息:
[圖片上傳失敗...(image-9cf362-1526545385966)]
8、 其它的類型工程請參照https://docs.sonarqube.org/display/SCAN進行設(shè)置;
[圖片上傳失敗...(image-63005-1526545385966)]
9、 如果是一個普通的工程就需要下載sonar-scanner,這里下載的地址為:https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.1.0.1141.zip
10、 解壓文件,并將sonar-scanner-3.1.0.1141\bin目錄加入的系統(tǒng)的PATH中
11、 在需要分析的工程目錄下面創(chuàng)建一個sonar-project.properties文件,內(nèi)容如下:
must be unique in a given SonarQube instance
sonar.projectKey=pcsys
this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=pcsys
sonar.projectVersion=1.0
Path is relative to the sonar-project.properties file. Replace "" by "/" on Windows.
This property is optional if sonar.modules is set.
sonar.sources=.
Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8
Language
sonar.language=java
sonar.java.binaries=build/classes
sonar.java.binaries=.
排除掉的目錄
sonar.exclusions=./WebRoot/plug-in
執(zhí)行sonar-scanner,如果提示內(nèi)存溢出,執(zhí)行
set SONAR_SCANNER_OPTS=-Xmx512m linux系統(tǒng)執(zhí)行export SONAR_SCANNER_OPTS="-Xmx512m"
12、 最新的java分析插件版本為:sonar-java-plugin-5.3.0.13828.jar,分析工程的時候有問題,會提示Please provide compiled classes of your project with sonar.java.binaries property
解決方法為下載老版本的jar文件,這里下載的文件為:https://sonarsource.bintray.com/Distribution/sonar-java-plugin/sonar-java-plugin-4.10.0.10260.jar。
下載完成后,重命名sonarqube-7.1\extensions\plugins目錄下的sonar-java-plugin-5.3.0.13828.jar,并將剛下載的文件復(fù)制到此目錄下面
[圖片上傳失敗...(image-256f18-1526545385966)]
13、 執(zhí)行完成后結(jié)果如下:
總攬
[圖片上傳失敗...(image-3ff97c-1526545385966)]
詳細的代碼分析:
[圖片上傳失敗...(image-826284-1526545385966)]
多次設(shè)定不同版本的執(zhí)行結(jié)果對比分析:
[圖片上傳失敗...(image-d1ae09-1526545385966)]
14、