Sonar靜態(tài)掃描的使用

一、簡(jiǎn)介

SonarQube是一個(gè)用于代碼質(zhì)量管理的開源平臺(tái),用于管理多源代碼的質(zhì)量,目前支持Java、JS、PHP、Python、C等25+語言。
通過插件機(jī)制,Sonar 可以集成不同的測(cè)試工具,代碼分析工具,以及持續(xù)集成工具,比如findbugs、Jenkins。通過不同的插件對(duì)這些結(jié)果進(jìn)行再加工處理,通過量化的方式度量代碼質(zhì)量的變化,從而可以方便地對(duì)不同規(guī)模和種類的工程進(jìn)行代碼質(zhì)量管理。

簡(jiǎn)單來說,SonarQube是一個(gè)質(zhì)量平臺(tái),用于收集質(zhì)量數(shù)據(jù)(代碼掃描結(jié)果、測(cè)試覆蓋率等),并對(duì)數(shù)據(jù)進(jìn)行各維度的統(tǒng)計(jì)分析。
而代碼分析(也就是得到質(zhì)量數(shù)據(jù)的過程),需要用到Sonar的客戶端(或插件)。下面就簡(jiǎn)單介紹一下sonar客戶端(插件)的使用。

Sonar的客戶端共有四種:
  1. Sonar-Scanner。一個(gè)獨(dú)立的掃描器,通過簡(jiǎn)單的命令就能對(duì)項(xiàng)目進(jìn)行靜態(tài)掃描,并將掃描結(jié)果上傳至SonarQube。
  2. sonar maven插件。一個(gè)maven插件,能通過maven命令執(zhí)行靜態(tài)掃描。
  3. sonar ant插件。ant上的插件。
  4. sonar IDE插件??梢灾苯蛹傻絀DE中(比如IntelliJ)。

以下主要介紹前兩種的用法。

二、Sonar-Scanner的使用

1. 下載Sonar-Scanner包,并解壓。(需要注意的是,Sonar-Scanner版本與SonarQube存在版本兼容性,若不兼容會(huì)有相應(yīng)的報(bào)錯(cuò)提示)
2. 將Sonar-Scanner目錄/bin路徑加入環(huán)境變量。
3. 編輯Sonar-Scanner目錄/conf/sonar-runner.properties文件,如下所示,填寫SonarQube的相關(guān)信息(安照實(shí)際情況填寫url和login信息):
sonar.host.url=http://127.0.0.0:8090

#----- MySQL
sonar.jdbc.url=jdbc:mysql://127.0.0.0:3306/sonar?useUnicode=true&characterEncoding=utf8

#----- Default source code encoding
sonar.sourceEncoding=UTF-8

#----- Security (when 'sonar.forceAuthentication' is set to 'true')
sonar.login=admin
sonar.password=admin
4. 在需要掃描的項(xiàng)目根目錄,新建一個(gè)文件sonar-project.properties,文件中填入以下必要信息:
# 需要掃描的源代碼目錄
sonar.sources=src
# 項(xiàng)目的Key,可任意,必須唯一
sonar.projectKey=org.sonarqube.demo
# 項(xiàng)目在SonarQube上顯示的名稱
sonar.projectName=php demo
# 項(xiàng)目版本
sonar.projectVersion=1.0
# 掃描的語言
sonar.language=php

備注1:還可以填寫其它參數(shù),詳細(xì)見官方文檔。
備注2:在Jenkins中,可以通過sonar插件配置以上數(shù)據(jù),可免去在項(xiàng)目中配置該文件。

5. 打開終端,進(jìn)入項(xiàng)目根目錄,mac下執(zhí)行sonar-runner,windows下執(zhí)行sonar-runner.bat命令即可。

掃描成功后,數(shù)據(jù)會(huì)自動(dòng)上傳到SonarQube。

三、Maven中Sonar的使用

1. 打開"maven安裝目錄/conf/settings.xml",在<profiles></profiles>標(biāo)簽中增加以下配置信息(安照實(shí)際情況填寫url、賬號(hào)等):
<profile>
   <id>sonar</id>
   <activation>
       <activeByDefault>true</activeByDefault>
   </activation>
   <properties>
        <sonar.jdbc.url>
        jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&amp;characterEncoding=utf8
        </sonar.jdbc.url>
        <sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
       <sonar.host.url>http://127.0.0.1:8090</sonar.host.url>
       <sonar.login>admin</sonar.login>
       <sonar.password>admin</sonar.password>
   </properties>
</profile>
2. 在pom.xml中配置sonar插件
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>2.6</version>
</plugin>
3. 執(zhí)行mvn sonar:sonar即可。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容