SonarQube 代碼質(zhì)量檢查工具
官網(wǎng)對于SonarQube的描述
-
15種語言的靜態(tài)代碼分析
Java堂淡、JavaScript馋缅、C#、TypeScript绢淀、Kotlin萤悴、Ruby、Go皆的、Scala覆履、Flex、Python费薄、PHP硝全、HTML、CSS楞抡、XML和VB.NET
檢測缺陷和漏洞
查看安全熱點
跟蹤代碼氣味和修復(fù)你的技術(shù)債務(wù)
代碼質(zhì)量度量和歷史記錄
CI/CD集成
可擴展柳沙,有50個社區(qū)插件
官方網(wǎng)站
https://docs.sonarqube.org/latest/
由于 7.8以后的版本需要JDK11的支持,如果用的是JDK8請選擇 6.x~7.8.x中間的版本
內(nèi)存要求拌倍,至少2G
支持的數(shù)據(jù)庫
其他詳細的配置,請參與官網(wǎng)的配置說明
https://docs.sonarqube.org/7.9/requirements/requirements/
首頁到最下方噪径,可以選擇不同版本進行下載
比如柱恤,我用的JDK8,這里選擇7.8版本的 Community 版本找爱,其他版本是收費的梗顺,下載好之后,解壓縮并進入到對應(yīng)的操作系統(tǒng)目錄下车摄,例如我這里用的是ubuntu寺谤,因此仑鸥,切換到Linux目錄下
/sonarqube-7.8/bin/linux-x86-64
## 啟動
sh sonar.sh start
## 查看啟動日志
tail -200f ../../logs/sonar.log
## 看到以下日志時,表示啟動成功
2021.01.09 22:33:03 INFO app[][o.s.a.SchedulerImpl] Process[ce] is up
2021.01.09 22:33:03 INFO app[][o.s.a.SchedulerImpl] SonarQube is up
訪問SonarQube
SonarQube默認的端口號是9000:
http://localhost:9000
默認賬號密碼都是admin
登入系統(tǒng)之后的界面变屁,這里需要注意的是眼俊,默認SonarQube用的是內(nèi)嵌數(shù)據(jù)庫,這種數(shù)據(jù)庫是不用用于生產(chǎn)的粟关,因此疮胖,下方會有一段黃色的提示信息。
應(yīng)用到項目(整合到MAVEN)
方法一: 全局配置
在maven的setting.xml配置文件中添加 .例子
<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://myserver:9000
</sonar.host.url>
</properties>
</profile>
</profiles>
</settings>
這里使用的是沒有配置數(shù)據(jù)庫的例子闷板,如果需要添加數(shù)據(jù)庫澎灸,則需要在<properties></properties>
下添加關(guān)于數(shù)據(jù)庫的配置,例子:
<properties>
<sonar.jdbc.url>jdbc:postgresql://localhost/sonar?currentSchema=public</sonar.jdbc.url>
<sonar.jdbc.driver>org.postgresql.Driver</sonar.jdbc.driver>
<sonar.jdbc.username>itmuch</sonar.jdbc.username>
<sonar.jdbc.password>itmuch</sonar.jdbc.password>
<sonar.host.url>http://127.0.0.1:9000</sonar.host.url>
</properties>
接著遮晚,在需要分析的項目中執(zhí)行
clean verify sonar:sonar -Dmaven.test.skip=true
接著點擊All就可以看到對剛才項目的分析了
SonarQube還提供了強大的插件庫性昭,在解決項目分析出來的問題之前,我先安裝一個中文包
在Administration下县遣,選擇 Marketplace選項糜颠,在Plugins一欄中輸入 chines找到中文包,點擊install艺玲,這個安裝會稍微慢一些括蝠,耐心等待即可。
在安裝過程中饭聚,插件商店默認對應(yīng)的是最新的SonarQube忌警,因此會有版本不匹配的問題,這里我們可以去SonarQube的github找尋對應(yīng)的版本
https://github.com/xuhuisheng/sonar-l10n-zh/releases
比如我這里的SonarQube是7.8版本就使用這個版本對應(yīng)的插件包
下載好之后秒梳,將插件包復(fù)制到 SonarQube的以下 目錄
scp sonar-l10n-zh-plugin-1.28.jar frend@192.168.0.202:/home/frend/dev/tools/sonarqube-7.8/extensions/plugins
重啟SonarQube
修復(fù)bug法绵、漏洞
執(zhí)行分析語句之后,會將我們執(zhí)行的項目中的酪碘、bug朋譬、漏洞、以及不優(yōu)雅的地方展示展示出來兴垦,這里以上圖為例
點擊查看規(guī)則徙赢,會有一個示例
大致意思就是創(chuàng)建之后的狀態(tài)值,我們需要判斷是否創(chuàng)建成功探越,其中的例子也是很明顯能看出來的
這里將提示漏洞的地方狡赐,修改一下
if (!file.exists()) {
if (!file.createNewFile()) {
log.error("創(chuàng)建文件={},時不成功", file.getName());
}
}
重新執(zhí)行分析
mvn clean verify sonar:sonar -Dmaven.test.skip=true
漏洞就沒了,剩下的不優(yōu)雅的地方[異味]和安全熱點钦幔,枕屉,兄弟們,等我慢慢修復(fù)
參考官網(wǎng)的教程
https://docs.sonarqube.org/7.8/analysis/scan/sonarscanner-for-maven/
中文插件包安裝參考教程
https://blog.csdn.net/xinluke/article/details/52174026
方法二: 使用基于Token的命令行控制
SonarQube還有一個使用命令行控制的方式鲤氢,事先需要先創(chuàng)建一個用戶Token
在右上角搀擂,點擊用戶圖標西潘,選擇我的賬號
在令牌欄輸入令牌名稱,點擊生成哨颂,此時喷市,記住這個token
使用以下命令,攜帶token咆蒿,就可以進行分析了东抹,此時,不需要maven下的setting.xml的配置了沃测,為了驗證缭黔,我們先將setting.xml中的步驟一配置注釋掉
mvn sonar:sonar -Dsonar.host.url=http://192.168.0.202:9000 -Dsonar.login=37ad464c14b9bebc19cc606ec6ae85e0ffb7f379 -Dmaven.test.skip=true
至此: SonarQube簡單的使用就結(jié)束了,下方參考文章中有更多玩法蒂破,有興趣的朋友可以多了解了解馏谨,祝大家變得更強~
參考文章:
https://blog.csdn.net/wym2011aaj/article/details/98055438
https://docs.sonarqube.org/7.8/analysis/scan/sonarscanner-for-maven/
https://blog.csdn.net/xinluke/article/details/52174026
https://blog.csdn.net/weixin_40861707/article/details/82117232