sonarqube安装c++插件并检测c++代码
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用一ubuntu20.04 搭建SonarQube服务器&&sonar-scanner二sonarqube安装c++插件并检测c++代码三sonarqube安装gitlab插件集成gitlab-ci提示:写完文章后,目录可以自动生成,如何生成可参考右
系列文章目录
一 ubuntu20.04 搭建SonarQube服务器&&sonar-scanner
二 sonarqube安装c++插件并检测c++代码
三 sonarqube安装gitlab插件集成gitlab-ci
前言
前面我们搭建了sonarqube服务器以及sonar-scanner,为了能够检测c++代码,需要安装插件sonar-cxx-plugin。
一、cxx-plugin及其下载安装
1.相关介绍
(以下基本上翻译,英语好的同学可以去github上阅读)
(源码地址:https://github.com/SonarOpenCommunity/sonar-cxx
访问不了的话可以用这个镜像网站:https://github.com.cnpmjs.org/SonarOpenCommunity/sonar-cxx这个c++插件整合了一些现有的c++代码检测工具,使得社区版的sonarqube能够支持对c++的检测。)
主要特性:
- 语法分析器支持:
C++03, C++11, C++14,C++17, C++20
C89, C99, C11, C17
- 编译器特定扩展(compiler specific extensions):
Microsoft extensions: C++/CLI, Attributed ATL
GNU extensions
CUDA extensions
- 运行时环境:
Microsoft Windows
Linux
- cxx-plugin能集成的静态和动态分析工具包括:
Cppcheck warnings support (http://cppcheck.sourceforge.net/)
GCC/G++ warnings support (https://gcc.gnu.org/)
Visual Studio and Core Guideline Checker warnings support (https://www.visualstudio.com/)
Clang Static Analyzer support (https://clang-analyzer.llvm.org/)
Clang-Tidy warnings support (http://clang.llvm.org/extra/clang-tidy/)
Infer warnings support (https://fbinfer.com/)
PC-Lint warnings support (http://www.gimpel.com/)
RATS (https://github.com/andrew-d/rough-auditing-tool-for-security)
Valgrind (http://valgrind.org/)
Vera++ (https://bitbucket.org/verateam/vera/wiki/Home)
Dr. Memory warnings support (http://drmemory.org/)
(注意,cxx-plugin本身并不包含上面的工具,它只能阅读并集成这些工具所产生的分析报告,我们必须自己调用这些工具来生成报告。然后在配置文件sonar-project.properties(后面介绍)里面写上报告所在的路径,如:sonar.cxx.cppcheck.reportPath=)
2.下载安装
在上面的github地址https://github.com/SonarOpenCommunity/sonar-cxx
根据这个表选择对应的版本:
我们前面安装的sonarqube版本是6.7,在这里https://github.com/SonarOpenCommunity/sonar-cxx/releases找到对应的release下载,然后把sonar-cxx-plugin-x.y.z.jar放到/opt/sonarqube/extensions/plugins里。然后重启sonarqube服务器:
(别忘了ubuntu切换到sonar用户su sonar
)
/opt/sonarqube/linux-x86-64/sonar.sh restart
访问sonarqube服务器:http://localhost:9000 可以看到
证明安装成功。
二、扫描c++代码
1.项目配置
进入你要扫描的项目的根目录,创建一个叫sonar-project.properties的文件。这是用来配置sonar项目的文件。在这里我们配置如下:
sonar.projectKey=test
sonar.projectName=test
sonar.projectVersion=1.0
sonar.sourceEncoding=UTF-8
sonar.language=c++
sonar.sources=.
#files to be handled by the cxx plugin
sonar.cxx.file.suffixes=.cxx,.cpp,.cc,.c,.hxx,.hh,.handled
#include path
sonar.cxx.includeDirectories=/usr/include,/usr/include/c++/9
这里的sonar.projectName和sonar.projectName对应我们在sonarqube服务器上的项目Name和Key;
sonar.language是我们要扫描的语言,这里是c++;
sonar.cxx.file.suffixes表示我们为扫描的文件的后缀(即我们认为这些后缀的文件是c++代码文件),用逗号隔开;
sonar.cxx.includeDirectories是包含文件的路径,这里我们仅包含了c/c++标准库的路径,如果要包含自己创建的文件,还要添加其他路径,后面我们会用shell脚本自动生成这一项,来包含我们根目录下的所有路径;
sonar.sources表示我们要扫描的代码文件所在的路径;
此外,还有一些常用的配置项:
sonar.exclusions表示不需要扫描的路径,我们可以把我们不希望扫描的代码所在的目录写在这里;
sonar.cxx.cppcheck.reportPath、sonar.gcc.reportPath等,表示其他代码检测软件生成的报告路径,sonar可以读取这些报告并整合它们。(具体见github上的文档)
2.扫描并上传扫描结果
在项目的根目录执行命令
sonar-scanner
看到类似下面的输出
INFO: Task total time: 30.657 s
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time: 32.513s
INFO: Final Memory: 12M/47M
INFO: ------------------------------------------------------------------------
用浏览器访问sonarqube服务器,http://localhost:9000,登录,用户名admin,密码admin,可以看到名为test的工程(如下图所示),证明成功扫描并上传检测报告。
总结
至此,使用sonar-scanner扫描c++代码并将检测结果上传至sonarqube服务器的流程就跑通了。
在后面的文章里我们将介绍如何利用gitlab-plugin这一插件将gitlab-ci与sonarqube相结合。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)