僅僅安裝部署完sonarQube是沒有C++掃描規則的,需要安裝一些插件才可以,而且sonarQube提供的CFamily插件還是收費的,就很蛋疼,不過還好網上有個sonar-cxx插件,說是作者看不慣CFamily的收費,自己寫了一個開源的(牛批!)
內建這些插件的思路
首先 sonar-cxx插件本身是不會運作任何靜态代碼分析工具的,cppcheck、Valgrind等,是以需要確定在分析之前生成報告
sonar-cxx官方是這麼說的
是以內建每個靜态分析工具的思路其實就是先使用工具給你的代碼在本地掃一遍,并生成相應的報告(xml等),然後通過sonar-cxx插件使這些報告與sonarqube的代碼規則進行比對并上傳到sonarqube上顯示出來,供我們檢視。
了解了這些思路就好說了。我們做的無非就是幾件事情
空降指揮部
-
- 安裝sonar-cxx
- 本地安裝cppcheck
- 通過改些配置把他們倆連起來(sonar-cxx內建cppcheck)
安裝sonar-cxx
官方下載下傳位址:https://github.com/SonarOpenCommunity/sonar-cxx
下載下傳下來之後 直接丢到你的sonarQube根目錄下的
/sonarqube-7.5/extensions/plugins/
中即可
然後重新開機你的sonarQube服務,進入sonarQube根目錄/bin下
sh sonar.sh restart
進入web頁面就會看到相關的品質配置了
這裡建立新的品質配置
選擇c++
激活你感興趣的規則即可,設定自己的項目,授權等操作都在這裡,這個就不詳細說了
本地安裝cppcheck
下載下傳位址:https://sourceforge.net/projects/cppcheck/files/cppcheck/
這裡我下載下傳的是1.88版本
丢到linux機 /usr/local/cppcheck目錄下(可選,放哪都行)
tar –zxvf cppcheck-1.88.tar.gz
解壓
cd cppcheck-1.88
進入cppcheck根目錄
make CFGDIR=/usr/local/cppcheck-1.88/cfg/
編譯并設定編譯選項
這裡強調下,編譯時要指定cfg的目錄,否則直接make,在使用cppcheck時會提示找不到std.sfg,錯誤類型如下
make install
編譯之後 安裝即可
通過改些配置把他們倆連起來(sonar-cxx內建cppcheck)
前面思路也說了,先要使用cppcheck掃一下你的項目,生成report.xml報告
進入到你的項目目錄下 使用如下指令 生成報告
cppcheck --xml --xml-version=2 --enable=all ./ 2> cppcheck-report.xml
參考官方說明文檔
修改sonar-project.properties
在項目的配置檔案裡加入一行
sonar.cxx.cppcheck.reportPath=cppcheck-report.xml
執行sonar-scanner掃描 上傳到sonarqube
sonar-project.properties這個檔案是配合sonar-scanner掃描使用的,具體操作參考之前的文章sonar-scanner使用
除了cppcheck,sonar-cxx提供的其他的一些插件大家可以參考官方文檔嘗試自己內建哈~
反正除了cppcheck我是一個都沒成功過。。。
官方文檔位址戳這裡!
Thanks.