代码之家  ›  专栏  ›  技术社区  ›  TafT

如何设置SonarQube cfamil。gcov是否正确?

  •  2
  • TafT  · 技术社区  · 7 年前

    我无法在SonarQube内进行报道。我有一个C++项目,我正在使用build-wrapper-linux-x86-64以及声纳扫描仪。对源代码的基本静态分析似乎是可行的,但SonarQube中没有关于测试代码覆盖率的报告。

    作为同一工作流的一部分,我正在使用lcov和genhtml生成单元测试覆盖率报告,因此我确信大多数代码覆盖率步骤都得到了正确执行。当我手动查看时。gcov文件我可以在第一列中看到运行计数,所以那里有数据。

    我把代码组织成模块。声纳项目。属性文件包括以下内容:

    # List of the module identifiers
    sonar.modules=Module1,Module2
    
    # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
    # This property is optional if sonar.modules is set.
    sonar.sources=./Sources,./Tests
    HeliosEmulator.sonar.sources=./Application,./Sources,./Tests
    sonar.cfamily.build-wrapper-output=build_output
    
    # Existing reports
    sonar.cfamily.build-wrapper-output=build_output
    #sonar.cfamily.cppunit.reportsPath=junit
    sonar.cfamily.gcov.reportsPath=.
    #sonar.cxx.cppcheck.reportPath=cppcheck-result-1.xml
    #sonar.cxx.xunit.reportPath=cpputest_*.xml
    sonar.junit.reportPaths=junit
    

    我还希望在Sonar工具下显示单元测试结果。由于我使用的是CppUTest框架,所以目前我没有xunit或junit测试输出。这可以作为一个单独的问题来处理,但由于我找不到很多关于如何在线使用cfamily扫描仪的文档,我不知道没有列出的测试是否相关。

    1 回复  |  直到 7 年前
        1
  •  0
  •   TafT    7 年前

    我忘了正确设置CI系统。这个运行声纳扫描仪的作业不存在gcov文件。它们只存在于生成覆盖率报告的测试作业中。扫描仪作业中没有文件意味着无法生成覆盖率报告。

    当我设置GitLab CI系统时,我使用它来保持。gcov文件作为人工制品报道突然开始起作用。

    这个gcov文件由测试作业生成,需要通过人工制品存储库传输到声纳扫描仪作业。这是因为GitLab CI在从属作业之间不共享工作区,您必须明确指出必须复制哪些文件。