當前位置:
首頁 > 知識 > 使用 Sonar 進行代碼質量管理

使用 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等方式。

使用 Sonar 進行代碼質量管理

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

原生JS實現旋轉輪播圖+文字內容切換
MongoDB安全、其他命令

TAG:程序員小新人學習 |