SonarQube+Jenkins实现C++代码扫描

2018-07-19  本文已影响0人  荒原_狼

背景

最近接收到C++工程扫描的需求,一开始以为类似java般简单,下载插件直接扫描就可以出结果,调研过后发现并不是如此,现将自己调研结果记录于此。

工具准备

实现步骤

step1:SonarQube安装C++扫描插件
调研时遇到的第一个问题就是关于C++插件的,SonarQube的默认C/C++插件CFamily是收费的,差点就放弃,不过幸好搜索到替代方案,sonar-cxx插件,听闻插件作者就是看不惯CFamily的收费,自己写了个开源的, 更牛逼的插件。
下面是安装过程, 把jar文件下载下来,下载地址https://github.com/SonarOpenCommunity/sonar-cxx/releases, 然后放到你的sonarqube目录/extensions/plugins目录下,再将sonarqube重启即可。


重启加载正确后,即可在页面看到“C++ (Community)”

step2:下载Cppcheck工具
为什么需要Cppcheck工具,这个在sonar-cxx插件的安装文档中有说明。说明请戳这里

The C++ Community Plugin does not run any static analysis tools itself, make sure that the reports are generated before the analysis。

大意是说:C++ Community插件本身不会运行任何静态分析工具,所以需确保在分析之前生成报告。
查看官方文档Code checkers,也说明了可以使用那些C++的扫描工具。笔者这里选择的是Cppcheck工具。
下载地址:cppcheck
step3:安装Cppcheck
将下载好的Cppcheck安装在Jenkins服务器,或者Jenkins奴隶节点上。笔者Jenkins安装在本地Windows环境,下载的工具也安装在本地,按提示“下一步”安装即可,这里不累述。
安装成功后,配置一下环境变量。将cppcheck.exe所在的路径配置到高级系统设置>环境变量>系统变量的Path中。


此时,在cmd命令界面输入"cppcheck"会出现如下提示,表示配置成功。

step4:修改质量配置
sonar平台质量配置,新增C++的质量配置项


激活更多规则


激活完成后,将该规则项设置为默认。

step5:新建job
配置一个自由风格的构建任务


配置scm

配置cppcheck扫描

配置扫描报告传到sonar平台,并保存配置。

sonar平台配置C++扫描报告获取路径



执行构建


step7:查看扫描结果
Jenkins构建结果

远端Sonar平台报告



扫描执行完成,并成功展示报告。

总结

调研初期,配置多个工程扫描结果都没有bug,而且特意更换带有bug的源代码文件,扫描结果还是正常。一度纠结问题到底出在哪?后来仔细阅读sonar-cxx插件官方安装文件,才恍然大悟,是漏了安装扫描工具(cppcheck)步骤,这也再次警告自己,对不熟的工具,要耐下心,仔细阅读说明,这样能少走弯路。

上一篇下一篇

猜你喜欢

热点阅读