2017-03-01 119 views
0

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

if(a != null){ 

system.out.print("Hello"); 

} 

如果为NOT由单元测试,这意味着不执行覆盖报告条件。 但是,里面的逻辑system.out.print(“Hello”)被报告为单元测试覆盖。那是不合逻辑的,对吗?

回答

1

这不是SonarQube的问题,而是您的覆盖引擎。 SonarQube只会传送您的覆盖率引擎报告的内容。这就是说,你可能会误解SonarQube界面中的标记,尽管没有截图很难确定。如果您在if旁看到对角线条纹标记,则SonarQube会告诉您,该线条是部分所涵盖的。也就是说,通过代码有多条路径,只有其中的一些被用于测试。具体来说,这听起来像是在测试条件为真的路径。我猜想你没有测试条件为false的路径。

+0

真实情况是If条件被标记为从未覆盖而不是部分覆盖。你所说的确实是合乎逻辑的,因为真实情况已经过测试,所以if条件中的逻辑被标记为被覆盖,这是合乎逻辑和可接受的。出乎意料的是,真实情况并不符合你的猜测。同样,你前面提到的可能是原因,覆盖引擎正在报告导致SonarQube报告错误的错误指标。所以,我会尽力关注覆盖引擎,感谢您的好意,非常感谢。 –