【问题标题】:How does SonarQube calculate the overall coverage?SonarQube 如何计算整体覆盖率?
【发布时间】:2018-08-16 08:29:22
【问题描述】:

上图显示了我的一个文件夹的 SonarQube 覆盖率,但如果你对该文件夹中所有文件的百分比取平均值,它将达到 49%,而 SonarQube 将显示为 31.4%。如果不取平均值,SonarQube 如何计算整体覆盖率?所有文件夹都是如此,即使是最上面的文件夹也是如此。

【问题讨论】:

    标签: javascript sonarqube sonarqube-scan istanbul sonarqube7


    【解决方案1】:

    整体覆盖率计算为

    Coverage = (CT + CF + LC)/(2*B + EL)
    

    在哪里

    CT = 至少一次被评估为“真”的条件
    CF = 至少一次被评估为“假”的条件
    LC = 覆盖线 = lines_to_cover - 未覆盖线

    B = 条件总数
    EL = 可执行行总数 (lines_to_cover)

    更多详情请见documentation

    【讨论】:

    • 感谢您的回复,蒂博尔!我知道这部分,我的问题更多是关于特定文件夹的覆盖率如何不是该文件夹中文件的覆盖率的聚合......换句话说,所有文件的覆盖率的聚合该文件夹中的文件占 49%,然而,SonarQube 显示 34%……它从哪里获得 34%?这怎么可能?如果你能回答这个问题,我会将此答案标记为已接受。谢谢!
    • 总体覆盖率是使用相同的公式计算的,但会覆盖目录中的所有文件。它不能只是一个简单的平均值 - 想象一个包含两个文件的目录,覆盖的小 1 行文件和未覆盖 1000 行的大文件 - 简单的平均值将是 50% 的整体覆盖率,这会产生误导
    • 是的,现在说得通了。谢谢你的解释!
    • 文档链接失效
    • @bhantol 链接现已修复。
    猜你喜欢
    • 2019-08-04
    • 2017-01-03
    • 2017-01-07
    • 2015-04-10
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 2020-02-12
    相关资源
    最近更新 更多