免费使用SonarQube审查C/C++代码

文章目录

  • SonarQube审查C/C++代码
  • 一、背景
  • 二、工具准备(附本例版本)
  • 三、部署环境
    • 1、JDK
    • 2、SonarQube
    • 3、Sonar-cxx
    • 4、Sonar-scanner
    • 5、Cppcheck
  • 四、实战
    • 1、Sonarqube自定义cxx规则
    • 2、使用Cppcheck对项目代码进行分析
    • 3、配置项目的一些必要信息
    • 4、Sonarqube创建项目
    • 5、使用sonar-scanner进行代码的静态扫描

SonarQube审查C/C++代码

一、背景

 SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误。SonarQube有很多版本(社区版、开发人员版、企业版等),只有社区版是免费使用,但该版本不支持C/C++语言的静态代码分析。下面通过配备一些免费的插件集成到SonarQube以达到审查C/C++代码的目的。

二、工具准备(附本例版本)

  • SonarQube (8.9.8 LTS : Community Edition) : 展示扫描报告
    下载网址:https://www.sonarqube.org/downloads/
  • JDK (11.0.15) 版本过低SonarQube启动会报错,必须是11+的JDK
    下载网址:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
  • Sonar-cxx plugin (V2.0.7)
    下载网址:https://github.com/SonarOpenCommunity/sonar-cxx/releases
    • 支持C/C++多种编码标准
    • 支持windows/Linux
    • 提供了多种传感器: 如cppcheck/gcc/valgrind等
    • 提供了对单元测试/覆盖率数据的分析功能
    • 支持自定义扩展规则
  • Sonar-scanner (4.7) : 扫描仪
    下载网址:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
  • Cppcheck (2.7) : c/c++代码的静态分析工具
    下载网址:https://cppcheck.sourceforge.io/
    注:S00和Sonar-cxx版本要对应。可参考下表选择需要的版本。
    免费使用SonarQube审查C/C++代码_第1张图片

三、部署环境

1、JDK

(1)下载JDK时保存好安装路径
免费使用SonarQube审查C/C++代码_第2张图片
(2)配置系统环境变量
 新建系统变量:JAVA_HOME
 变量值:C:\Program Files\Java\jdk1.8.0_331(jdk安装路径)

免费使用SonarQube审查C/C++代码_第3张图片

 新建系统变量:CLASSPATH
 变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
免费使用SonarQube审查C/C++代码_第4张图片

 编辑Path环境变量
 添加:%JAVA_HOME%\bin
     %JAVA_HOME%\jre\bin
免费使用SonarQube审查C/C++代码_第5张图片
(3)验证测试
 在cmd窗口中运行java、javac、java -version语令不报错即配置成功。
免费使用SonarQube审查C/C++代码_第6张图片

2、SonarQube

(1)下载好sonarqube后,解压打开bin目录,启动对应OS目录下的StartSonar。如本例使用的是win的64位系统,则打开…\bin\windows-x86-64\StartSonar.bat
免费使用SonarQube审查C/C++代码_第7张图片
(2)启动浏览器访问http://localhost:9000,如出现下图则安装成功
  第一次登陆,默认Login、Password为:admin
免费使用SonarQube审查C/C++代码_第8张图片
(3)登陆Sonarqube后如需下载中文包,请按以下步骤安装插件(需联网)
  Administration->Marketplace
免费使用SonarQube审查C/C++代码_第9张图片

3、Sonar-cxx

 将下载好的.jar文件,放到你的sonarqube目录/extensions/plugins目录下,重启SonarQube生效(此处报错重启PC能解决大部分问题)。Language中出现cxx则配置成功。
免费使用SonarQube审查C/C++代码_第10张图片

4、Sonar-scanner

(1)下载好后解压打开bin目录、配置环境变量
编辑Path环境变量,将Sonar-scanner的bin目录添加进去
免费使用SonarQube审查C/C++代码_第11张图片
(2)cmd中验证是否配置成功
免费使用SonarQube审查C/C++代码_第12张图片

5、Cppcheck

(1)安装路径添加到Path环境变量
免费使用SonarQube审查C/C++代码_第13张图片
免费使用SonarQube审查C/C++代码_第14张图片
(2)cmd中验证是否配置成功
免费使用SonarQube审查C/C++代码_第15张图片

四、实战

1、Sonarqube自定义cxx规则

  在sonarqube平台质量配置页面,新增cxx的质量配置项并激活更多规则
免费使用SonarQube审查C/C++代码_第16张图片

——>
免费使用SonarQube审查C/C++代码_第17张图片

——>
免费使用SonarQube审查C/C++代码_第18张图片

——>
免费使用SonarQube审查C/C++代码_第19张图片

——>
免费使用SonarQube审查C/C++代码_第20张图片

激活完成后,将该规则项设置为默认
免费使用SonarQube审查C/C++代码_第21张图片

2、使用Cppcheck对项目代码进行分析

在项目文件夹的根目录下使用cppcheck工具扫描代码,结果记录到cppcheck-report.xml中
语令:cppcheck --xml --xml-version=2 --enable=all ./ 2>cppcheck-result.xml
注:扫描时间会有些长,等待完成后再进行下一步操作
免费使用SonarQube审查C/C++代码_第22张图片

项目根目录下生成的cppcheck-report.xml文件
免费使用SonarQube审查C/C++代码_第23张图片

3、配置项目的一些必要信息

(1)在项目的根目录创建sonar-project.properties文件
免费使用SonarQube审查C/C++代码_第24张图片

(2)文件内容:

#sonarqube中相对应项目的key(可省)
#sonar.projectKey=TestMemory

#sonarqube中相对应项目的名字(可省)
#sonar.projectName= TestMemory

#sonar检测的编程语言种类
sonar.language=c++

#sonar检测的源文件目录,‘.’表示当前根目录下的所有文件目录
sonar.sources=.

#项目各文件的后缀名(可在sonarqube中定义)
sonar.cxx.file.suffixes=.cxx,.cpp,.c,.cc,.hxx,.hh,.h,.handles

#cppcheck生成的Report名称(可在sonarqube中定义)
sonar.cxx.cppcheck.reportPaths=cppcheck-result.xml

(3)在sonarqube中定义项目各文件的后缀名:
免费使用SonarQube审查C/C++代码_第25张图片
(4)在sonarqube中定义cppcheck生成的Report名称:
免费使用SonarQube审查C/C++代码_第26张图片
注:sonarqube中的设定比sonar-project.properties文件里的设定优先级要高

4、Sonarqube创建项目

免费使用SonarQube审查C/C++代码_第27张图片

——>
免费使用SonarQube审查C/C++代码_第28张图片

——>
免费使用SonarQube审查C/C++代码_第29张图片

——>
免费使用SonarQube审查C/C++代码_第30张图片

5、使用sonar-scanner进行代码的静态扫描

复制sonar-scanner语令:
免费使用SonarQube审查C/C++代码_第31张图片

项目根目录下打开cmd执行上面Copy的语令:
免费使用SonarQube审查C/C++代码_第32张图片

在Sonarqube上查看结果:
免费使用SonarQube审查C/C++代码_第33张图片

你可能感兴趣的:(C/C++,c语言,c++,开发语言)