仅仅安装部署完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.