Sonar介紹
Sonar是一個用于代碼掃描檢測的開放平臺。可以實現(xiàn)對不同語言(java、python、php、C++、C#等等)的項目代碼進行分析,同時可以集成不同的測試工具、代碼分析工具,以及持續(xù)集成工具(jenkins)。
當前Sonar的最新版本為8.6,由于新版本不支持mysql數(shù)據(jù)庫了,所以本技術文檔實現(xiàn)以Sonar 6.7版本為演示版本。下載的鏈接地址如下:https://www.sonarqube.org/downloads/
Sonar安裝
1、安裝mysql數(shù)據(jù)庫,版本為5.6版本以上
因為Sonar支持不同的數(shù)據(jù)庫,本文檔以mysql為主,所以安裝Sonar 6.7版本前需要安裝mysql 5.6或者5.6以上的版本,低于5.6的版本,啟動Sonar時會報錯。關于Mysql數(shù)據(jù)庫的安裝,這里不做詳細說明。
接下來需要在mysql數(shù)據(jù)庫中新增一個名為sonar的數(shù)據(jù)庫即可(不需要創(chuàng)建數(shù)據(jù)庫表)。
2、下載Sonar壓縮包進行安裝
第一步:Sonar壓縮包可以在下載邊接中進行下載。下載完成后進行解壓縮操作,解壓縮操作完成后,將解壓縮的目錄移動到一個不包含有中文的目錄下。
第二步:找開Sonar壓縮目錄下conf中的sonar.properties文件(我的文件路徑為:D:\Program Files\sonarqube-6.7.7\conf),修改以下配置項并保存:
sonar.jdbc.username=root? ? ? ? # 連接Sonar數(shù)據(jù)庫名的配置
sonar.jdbc.password=123456? ?# 連接Sonar數(shù)據(jù)庫密碼的配置
sonar.jdbc.url=jdbc:mysql://localhost:53306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false? ?#連接Sonar數(shù)據(jù)庫的鏈接地址信息
sonar.web.port=9000? # 設置Sonar連接數(shù)據(jù)庫的端口
第三步:啟動Sonar服務:進入到Sonar的bin目錄下,在Dos命令行中輸入:? startsonar.bat即可啟動。如果能看到以下信息就說明是成功的。

第四步:訪問Sonar服務:
在瀏覽器中訪問:? ?http://localhost:9000即可,如果能顯示以下圖片就說明Sonar服務已經(jīng)完全配置OK(登錄的用戶名和密碼默認為? admin/admin)

3、通過Sonar來掃描代碼
第一步:由于掃描的是Java的代碼,所以需要安裝Maven,且需要在Maven的配置文件Settings.xml中增加以下配置項(此項增加在profiles節(jié)點中):
<profile>
? ? <id>sonar</id>
? ? <activation>
? ? ? ? <activeByDefault>true</activeByDefault>
? ? </activation>
? ? <properties>
? ? ? ? ?<sonar.jdbc.url>jdbc:mysql://localhost:53306/sonar?useUnicode=true&characterEncoding=utf8</sonar.jdbc.url>
? ? ? ? ? ? ?<sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
? ? ? ? ? ? ?<sonar.jdbc.username>root</sonar.jdbc.username>
? ? ? ? ? ? ? <sonar.jdbc.password>123456</sonar.jdbc.password>
? ? ? ? <sonar.host.url>http://localhost:9000</sonar.host.url>
? ? </properties>
</profile>
第二步:針對Java的項目使用mvn進行編譯,然后再掃描:
執(zhí)行第一條命令: mvn? clean install
執(zhí)行第二條 命令: mvn? sonar:sonar
執(zhí)行完這兩條命令之后,就可以在Sonar的服務平臺web頁面查看掃描的結果。由于我所使用的代碼非常簡單,最終掃描結果沒有什么大的問題。
