gpt4 book ai didi

c++ - 如何正确设置SonarQube cfamil.gcov?

转载 作者:太空宇宙 更新时间:2023-11-04 12:48:09 25 4
gpt4 key购买 nike

我无法在 SonarQube 中获取覆盖率报告。我有一个 C++ 项目,我正在为其使用 build-wrapper-linux-x86-64 和 Sonar 扫描仪。源代码的基本静态分析似乎有效,但 SonarQube 中没有关于测试代码覆盖率的报告。

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

我将我的代码组织成模块。 sonar-project.properties 文件包括以下内容:

# 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 扫描仪的文档,我不知道未列出的测试是否相关。

最佳答案

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

当我设置 GitLab CI 系统以将 .gcov 文件保留为人工制品时,覆盖率报告突然开始工作。

.gcov 文件是由测试作业生成的,需要通过 artefact 存储传输到 Sonar 扫描仪作业。这是因为 GitLab CI 不在相关作业之间共享工作区,您必须明确说明必须复制哪些文件。

关于c++ - 如何正确设置SonarQube cfamil.gcov?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50332834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com