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

在SonarQube中,“要覆盖的行”和“未覆盖的行”度量在含义上有什么区别?

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

    我正在查看SonarQube分析C++项目的“测量”选项卡中的覆盖报告。在这一页上,我的总结信息如下:

    SonarQube Coverage Overview

    “覆盖线”和“未覆盖线”指标之间有什么区别?

    我已经看过了 the sonarqube website's Metric Definitions page 但这两个条目对我没有帮助。

    要覆盖的行 -单元测试可以覆盖的代码行数(例如,空行或完整注释行不被视为要覆盖的行)。

    未覆盖线

    所给的数字显然是相反的,所以我一定没有理解正确的意思。


    我有一些单元测试作为CI系统的一部分运行,它们的代码覆盖率是使用lcov和gcov编译的。lcov数据通过genhtml传递,以生成单独的覆盖率报告,该报告目前在某些情况下提供数据,因此我可能会遇到部分配置错误的问题,从而增加了混淆。

    1 回复  |  直到 6 年前
        1
  •  10
  •   TafT    6 年前

    “要覆盖的行”是“生产”代码中的所有行,在所谓的完美世界中,您应该对这些行进行测试。这是源代码文件中的每一行,不是注释、空白或类似的非代码行。

    在现实世界中,你的测试只会覆盖其中的一部分。遗漏的行是“未覆盖行”。

    换句话说,您可以将“覆盖范围”表示为:

    "Coverage" = 100% - 100 * "Uncovered Lines" / "Lines to Cover"