【问题标题】:SonarQube wrong reporting resultsSonarQube 错误报告结果
【发布时间】:2017-03-01 20:13:20
【问题描述】:

我使用sonarqube做线路覆盖分析,但是报告的结果是错误的。 例如下面的 if 方法:

if(a != null ){ 

system.out.print("Hello");

}

if 条件被报告为不被单元测试覆盖,即未执行。 但是,里面的逻辑 system.out.print("Hello") 被报告为被单元测试覆盖了。这不合逻辑,对吧?

【问题讨论】:

    标签: sonarqube


    【解决方案1】:

    这实际上不是 SonarQube 的问题,而是您的覆盖引擎的问题。 SonarQube 仅转发您的覆盖引擎报告的内容。

    也就是说,您可能误解了 SonarQube 界面中的标记,尽管没有屏幕截图很难确定。如果您在 if 旁边看到一个斜条纹标记,那么 SonarQube 会告诉您该行被部分覆盖。也就是说,代码中有多个路径,并且在您的测试中只采用其中的一些路径。具体来说,听起来您正在测试条件为真的路径。我猜你没有测试条件为假的路径。

    【讨论】:

    • 真实情况是If条件被标记为从不覆盖而不是部分覆盖。您说的确实是逻辑的,测试了真实的情况,因此将if条件内的逻辑标记为已覆盖,即合乎逻辑且可以接受。没想到,实际情况与您的猜测不符。同样,您前面提到的原因可能是覆盖引擎报告了错误的指标,这导致了 SonarQube 的错误报告。因此,我将尝试专注于覆盖引擎,感谢您的友好建议,非常感谢。
    猜你喜欢
    • 2021-06-20
    • 1970-01-01
    • 2017-08-25
    • 2018-09-08
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    相关资源
    最近更新 更多