所需安装包以及插件

我的文件夹如下,文件最好按我的方式存放,以免后面修改路径


下载文件并复制到Linux环境
下载以上所有文件,下载链接:
链接:https://pan.baidu.com/s/1WUYqFg1MEqVEzbb_sn49Ig
提取码:6q51
也可以直接去官网下载,下载后直接从Windows系统将文件拖入虚拟机,将文件复制到Linux环境下。
安装 java-jdk11
SonarQube 需要 Java 环境,JDK 已经包含在上面下载的文件夹里面,在projects目录下打开终端,执行如下命令安装:
sudo dpkg -i jdk-11.0.17_linux-x64_bin.deb
安装结束后还要配置Java环境变量,在终端输入vim ~/.bashrc进入bashrc修改环境变量。在末尾输入一下内容:
export JAVA_HOME=/usr/lib/jvm/jdk-11
export JRE_HOME=${JAVA HOME}
export CLASSPATH=.:${JAVA_HOME}/lib:$
export PATH=S{JAVA_HOME}/bin:$PATH
注意第一行/usr/lib/jvm/jdk-11 是jdk的安装路径,要根据自己虚拟机中jdk的实际安装位置进行修改,修改完成后输入source ~/.bashrc。
安装chrome
由于sonarqube平台需要使用chrome打开,所以这里还有安装chrome,同样在projects目录下打开终端,执行如下命令安装:
sudo dpkg-i google-chrome-stable_107.0.5304.121-1_amd64.deb
配置sonar-cxx-plugin-2.1.0.349和sonar-cnes-report-4.1.3插件
将这两个jar包存放到sonarqube文件夹下的extensions/plugins文件夹下,再重启sonarqube即可。

安装cppcheck
解压cppcheck压缩包,进入cppcheck目录,执行make installl,执行结束后会在文件夹下生成一个可执行文件cppcheck

执行vim ~/.bashrc进行环境变量配置,在末尾输入如下信息然后保存退出,退出后执行source ~/.bashrc命令
export PATH=$PTAH:/home/nfs/project/cppcheck-2.9
这里的路径是cppcheck可执行文件的路径
测试cppcheck
安装完成后,在cppcheck-2.9目录下随便新建一个bad.c文件,执行命令
cppcheck bad.c

有图示结果说明配置成功
编写脚本
编写如下两个脚本,分别用于启动sonarqube服务器和扫描文件
run-sonarqube-web.sh
#!/bin/bash
#export PATH="$PWD/bin:$PATH"
SHELL_DIR=$(cd $(dirname $0); pwd)
sonar="$SHELL_DIR/sonarqube-9.8.0.63668/bin/linux-x86-64/sonar.sh"
$sonar console
sonar="$SHELL_DIR/sonarqube-9.8.0.63668/bin/linux-x86-64/sonar.sh"是sonarqube启动脚本的路径。其中$SHELL_DIR表示当前文件夹,也就是现在所在的project文件夹。
analyse-project.sh
#!/bin/bash
#export PATH="$PWD/bin:$PATH"
SHELL_DIR=$(cd $(dirname $0); pwd)
PROJECT_DIR=$1
PROJECT_KEY=$2
PROJECT_TOKEN=$3
scanner="$SHELL_DIR/sonar-scanner-4.7.0.2747-linux/bin/sonar-scanner"
cppcheck="$SHELL_DIR/cppcheck-2.9/cppcheck"
Cd $PROJECT_DIR
$cppcheck -j4 --xml --xml-version=2./2> cppcheck-report.xml
#sonar-scaner set max memory (default 4G)
export SONAR_SCANNER_OPTS="-Xmx4096m"
$scanner -X\
-Dsonar.verbose=true\
-Dsonar.projectKey=SPROJECT_KEY\
-Dsonar.login=SPROJECT_TOKEN\
-Dsonar.cxx.file.suffixes=.cxx,.cpp,.cc,.C,.hxx,.hpp,.hh,.h\
-Dsonar.cxx.cppcheck.reportPaths=cppcheck-report.xml
scanner="$SHELL_DIR/sonar-scanner-4.7.0.2747-linux/bin/sonar-scanner"
cppcheck="$SHELL_DIR/cppcheck-2.9/cppcheck"
上面两个路径分别是sonar-scanner和cppcheck所在的路径。
启动脚本
输入以下命令:
./run-sonarqube-web.sh
脚本运行结束以后在chrome访问http:.//localhost:9000,登录sonarqube,默认用户名admin,密码admin。
分析程序
先在sonarqube服务器新建项目

创建后选择 local 模式

会得到一个项目 Token,记住它

使用自动化脚本 analyse-project.sh 分析 指定程序,命令如下:
./analyse-project.sh<项目路径><SonarQube项目名称><SonarQube项目token>
分析结束后可以在网站上看分析结果


可以生成 DOCX 格式的报告。
测试
这里以cppcheck-2.9/samples目录下的项目为例,先在sonar服务器上新建项目erase(项目名随便),按照上面的步骤得到token,执行如下所示的命令

等待结束后服务器上面会出现如下结果

说明测试成功,能正常使用。发现7个问题,点进问题列表如下图:

并且在samples文件夹下面生成了一个cppcheck-report.xml。内容如下:

注意:xml文件里面显示的内容是由analyse-project.sh脚本控制的,脚本14行
只显示error信息:
$cppcheck -j4 --xml --xml-version=2./2> cppcheck-report.xml
显示所有信息:
$cppcheck -j4 --xml --xml-version=2 --enable=all ./2> cppcheck-report.xml
sonar汉化
汉化包下载地址:https://gitcode.net/mirrors/sonarqubecommunity/sonar-l10n-zh?utm_source=csdn_github_accelerator
汉化包在我的我网盘链接中也可以下载。
下载和自己sonarqube版本对应的汉化包jar包,然后直接拖入虚拟机,再存放到sonarqube文件夹下的extensions/plugins文件夹下,再重启sonarqube即可。

汉化后的效果
