开发者社区> 问答> 正文

sonarqube 分析C++ 代码时,为什么无法检测出问题 - sonarqube报错

我用的软件版本如下:

          SonarQube:  4.4

sonar-runner:2.4

          sonar-cxx-plugin-0.9.1.jar(开源的C++分析插件)

          数据库使用的是mysql

自己写了个VC++测试工程,代码很简单,如下:

#include "stdafx.h"

int main(int argc, char* argv[])
{
printf("Hello World!\n");

int a = 1;

printf("helloworld!");
return 0;
}

\sonarqube-4.4\conf目录下的sonar.properties文件配置如下:

sonar.jdbc.username=root
sonar.jdbc.password=root

#----- MySQL 5.x
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
sonar.jdbc.driverClassName:com.mysql.jdbc.Driver

\sonar-runner-2.4\conf目录下的sonar-runner.properties文件配置如下:

#----- Default SonarQube server
sonar.host.url=http://localhost:9000

#----- MySQL
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8

#----- Default source code encoding
sonar.sourceEncoding=UTF-8

#----- Security (when 'sonar.forceAuthentication' is set to 'true')
sonar.login=admin
sonar.password=admin


在工程目录下新建了sonar-project.properties文件,配置如下:

sonar.projectKey=SampleProject.key
sonar.projectName=SampleProject
sonar.projectVersion=2.0
sonar.sources=.\
sonar.sourceEncoding=UTF-8

sonar.language=c++

完成后,使用cmd命令行进入工程目录下,然后使用sonar-runner命令进行分析,结果提示分析成功。

然后在IE9.0浏览器中输入http://localhost:9000进行访问SonarQube服务器。看到的效果界面如下:

我很好奇,为什么检测不出问题。我不知道哪里出现问题了,请各位大牛能给予帮助。万分感谢。

展开
收起
montos 2020-05-31 10:23:54 1469 0
1 条回答
写回答
取消 提交回答
  • 这个插件只是分析已经生成的报告,并非去检查代码,比如配置的规则中有cppcheck库的,那么运行sonar-runner时只会读取你用cppcheck检查后生成的问题报告######

    我也遇到过同样的问题,我是这样解决的:

    1、要先安装cppcheck工具。安装命令如下:

    make SRCDIR=build CFGDIR=/usr/bin/cfg HAVE_RULES=yes

    make install CFGDIR=/usr/bin/cfg

    2、在需要分析的项目里面执行“

    cppcheck -j 1 --enable=all --xml ./src/* 1>cppcheck-result-1.xml 2>&1”生成一个xml文件

    3、编辑sonar-project.properties配置文件,加入

    sonar.cxx.cppcheck.reportPath=cppcheck-result-1.xml
    sonar.cxx.includeDirectories=/usr/include/

    4、最后执行sonar-runner 分析。

    但是我觉得使用cppcheck插件分析的结果不够好,请教一下各位高手,还有没有更好的解决方法。

    另外 Valgrind /PC-lint/RATS /Vera++ 等插件要怎么与sonarqube使用?

    ######你好,想请问下用这个工具扫C++代码的具体步骤是怎样的???或者哪里有教程??######

    引用来自“mm3b712”的评论

    我也遇到过同样的问题,我是这样解决的:

    1、要先安装cppcheck工具。安装命令如下:

    make SRCDIR=build CFGDIR=/usr/bin/cfg HAVE_RULES=yes

    make install CFGDIR=/usr/bin/cfg

    2、在需要分析的项目里面执行“

    cppcheck -j 1 --enable=all --xml ./src/* 1>cppcheck-result-1.xml 2>&1”生成一个xml文件

    3、编辑sonar-project.properties配置文件,加入

    sonar.cxx.cppcheck.reportPath=cppcheck-result-1.xml
    sonar.cxx.includeDirectories=/usr/include/

    4、最后执行sonar-runner 分析。

    但是我觉得使用cppcheck插件分析的结果不够好,请教一下各位高手,还有没有更好的解决方法。

    另外 Valgrind /PC-lint/RATS /Vera++ 等插件要怎么与sonarqube使用?

    @mm3b712看了demo项目,也是引用下面的参数sonar.cxx.cppcheck.reportPath=build/cppcheck-report.xml

    sonar.cxx.pclint.reportPath=build/pclint-report.xml

    sonar.cxx.coverage.reportPath=build/gcovr-report*.xml
    sonar.cxx.coverage.itReportPath=build/gcovr-report*.xml
    sonar.cxx.coverage.overallReportPath=build/gcovr-report*.xml
    sonar.cxx.valgrind.reportPath=build/valgrind-report.xml
    sonar.cxx.vera.reportPath=build/vera++-report.xml
    sonar.cxx.rats.reportPath=build/rats-report.xml
    sonar.cxx.xunit.reportPath=build/xunit-report.xml
    ######

    make SRCDIR=build CFGDIR=/usr/bin/cfg HAVE_RULES=yes

    make install CFGDIR=/usr/bin/cfg

    通过这两句 看着像Linux系统下,请问windows系统下该怎么办,我也遇到了同样的问题。

    2020-05-31 10:24:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载

相关实验场景

更多