使用 Sonar 進行代碼質量管理
Sonar 是一個開源的代碼質量管理平台。通過插件機制,Sonar 可以集成不同的測試工具,代碼分析工具,以及持續集成工具(如Jenkins)。
Sonar 並不是簡單地把不同的代碼檢查工具結果(例如 FindBugs,PMD 等)直接顯示在 Web 頁面上,而是通過不同的插件對這些結果進行再加工處理,通過量化的方式度量代碼質量的變化,從而可以方便地對不同規模和種類的工程進行代碼質量管理。
Sonar 的安裝
我安裝的是sonarQube6.7,要求JDK1.8,MySQL5.6及以上,maven3.0.2以上。
下載
sonarQube官網下載安裝包
下載 zip 包後,直接解壓到任意目錄。
資料庫配置
sonar默認使用H2內存資料庫,可以直接使用。不過建議用其他資料庫,Sonar 可以支持大多數主流關係型資料庫(例如 Microsoft SQL Server, MySQL, Oracle, PostgreSQL 等)。
本文使用mysql,需要提前裝好MySQL,並創建sonar庫(不詳述)。
修改/conf/sonar.properties文件
sonar.jdbc.username= root
sonar.jdbc.password= 123456
sonar.jdbc.url= jdbc:mysql://192.168.1.56:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
1
2
3
運行
windows環境
在 windows 環境中,直接啟動 Soanr 的 bin 目錄下 windows-x86-64StartSonar.bat 即可。
然後在瀏覽器中訪問:http://localhost:9000 默認賬戶:admin/admin
linux環境
使用命令bin/linux-x86-64/sonar.sh start啟動服務。
注意:由於elasticsearch不支持root用戶啟動,需要在非root用戶下啟動sonar
docker環境
鏡像詳情
安裝鏡像
docker pull sonarqube
1
啟動
默認使用h2資料庫
docker run -p 9000:9000 sonarqube
1
使用外置資料庫
docker run -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=pwd -e SONARQUBE_JDBC_URL="jdbc:mysql://101.132.184.251:3306/sonar?useUnicode=true&characterEncoding=utf8" -p 9000:9000 sonarqube
1
marathon中部署
{
"id": "/sonarqube",
"cmd": null,
"cpus": 0.2,
"mem": 1024,
"disk": 0,
"instances": 1,
"container": {
"type": "DOCKER",
"volumes": [],
"docker": {
"image": "sonarqube:6.7.5",
"network": "BRIDGE",
"portMappings": [
{
"containerPort": 9000,
"hostPort": 0,
"servicePort": 19999,
"protocol": "tcp",
"labels": {
"VIP_0": "sonarqube:19999"
}
}
],
"privileged": true,
"parameters": [],
"forcePullImage": true
}
},
"env": {
"SONARQUBE_JDBC_USERNAME": "sonar",
"SONARQUBE_JDBC_PASSWORD": "pwd",
"SONARQUBE_JDBC_URL": "jdbc:mysql://192.168.1.193:3306/sonar?useUnicode=true&characterEncoding=utf8"
},
"healthChecks": [
{
"protocol": "TCP",
"portIndex": 0,
"gracePeriodSeconds": 60,
"intervalSeconds": 30,
"timeoutSeconds": 60,
"maxConsecutiveFailures": 3,
"ignoreHttp1xx": false
}
],
"labels": {
"HAPROXY_GROUP": "external",
"LOAN_SONAR_BUILD_ID": "1"
},
"portDefinitions": [
{
"port": 19999,
"protocol": "tcp",
"labels": {}
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
安裝插件
舉個栗子,我們安裝一個漢化插件:Chinese Pack
進入Administration->Marketplace
搜索Chinese Pack,點擊install。
再安裝一個分析java的插件:
搜索SonarJava 點擊install
安裝後重啟sonar。
使用 Sonar maven插件進行代碼解析
使用前提:
- 需要maven版本3.0.2及以上。
- 安裝好SonarQube。
- 使用了已安裝的SonarQube支持的最低的JDK。
- 已經安裝好了你要分析的語言的插件。
配置 settings.xml
進入$MAVEN_HOME/conf or ~/.m2編輯settings.xml,添加插件和sonarQube server地址:
<settings>
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Optional URL to server. Default value is http://localhost:9000 -->
<sonar.host.url>
http://192.168.1.56:9000
</sonar.host.url>
</properties>
</profile>
</profiles>
</settings>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
開始分析項目
編譯命令如下:
mvn clean install
1
編譯成功後,再使用如下命令:
mvn sonar:sonar
1
Maven 插件會自動把所需數據(如單元測試結果、靜態檢測結果等)上傳到 Sonar 伺服器上,需要說明的是,關於 Sonar 的配置並不在每個工程的 pom.xml 文件里,而是在 Maven 的配置文件 settings.xml 文件里。
將 Soanr 所需要的數據上傳到 Sonar 伺服器上之後,Sonar 安裝的插件會對這些數據進行分析和處理,並以各種方式顯示給用戶,從而使用戶方便地對代碼質量的監測和管理。
如果使用其他方式分析項目,請參考https://docs.sonarqube.org/display/SCAN/Analyzing+Source+Code,這裡提供了Gradle,Ant,Jenkins等方式。


※原生JS實現旋轉輪播圖+文字內容切換
※MongoDB安全、其他命令
TAG:程序員小新人學習 |