sonarqube安装c++插件并检测c++代码

系列文章目录

一 ubuntu20.04 搭建SonarQube服务器&&sonar-scanner

二 sonarqube安装c++插件并检测c++代码

三 sonarqube安装gitlab插件集成gitlab-ci

文章目录

  • 系列文章目录
  • 前言
  • 一、cxx-plugin及其下载安装
    • 1.相关介绍
    • 2.下载安装
  • 二、扫描c++代码
    • 1.项目配置
    • 2.扫描并上传扫描结果
  • 总结


前言

前面我们搭建了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=)
sonarqube安装c++插件并检测c++代码_第1张图片

2.下载安装

在上面的github地址https://github.com/SonarOpenCommunity/sonar-cxx
根据这个表选择对应的版本:
sonarqube安装c++插件并检测c++代码_第2张图片
我们前面安装的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 可以看到
sonarqube安装c++插件并检测c++代码_第3张图片
证明安装成功。

二、扫描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的工程(如下图所示),证明成功扫描并上传检测报告。
sonarqube安装c++插件并检测c++代码_第4张图片


总结

至此,使用sonar-scanner扫描c++代码并将检测结果上传至sonarqube服务器的流程就跑通了。
在后面的文章里我们将介绍如何利用gitlab-plugin这一插件将gitlab-ci与sonarqube相结合。

你可能感兴趣的:(SonarQube,c++,ubuntu,devops)