我用SonarQube 6.3分析了一个项目,它给了我错误:
测试需要覆盖32行代码才能达到最小值 门槛覆盖率为65.0%
这与规则有关:
线条应具有足够的测试覆盖率
我想知道这条规则是否包含我所做的所有类型的测试,或者特定的测试,或者是否意味着SonarQube无法覆盖这些线路进行分析。
我问这个的原因是我根本没有测试,所以这个问题消息可能意味着SonarQube可以识别其他线路的某些测试,但事实并非如此呢?
答案 0 :(得分:0)
从6.2开始,SonarQube能够识别代码文件中的“可执行行”,无论文件中是否有任何测试。您的分析仪还必须支持并提供该功能。我猜你正在使用一个提供这些数据的分析器版本,而这正是你在计算这些文件缺失覆盖范围的地方,这些文件不受单元测试的影响。
请注意,在添加此功能之前,情况看起来像这样
+--------------+-----------+-------+
| File | Cvd lines | Cvg % |
+--------------+-----------+-------+
| 100LineFile | 75 | 75 |
+--------------+-----------+-------+
| Total | 75 | 75 |
+--------------+-----------+-------+
和
+--------------+-----------+-------+
| File | Cvd lines | Cvg % |
+--------------+-----------+-------+
| 100LineFile | 75 | 75 |
| 100LineFile2 | 0 | - |
+--------------+-----------+-------+
| Total | 75 | 75 |
+--------------+-----------+-------+
因为任何单元测试未触及的文件在计算中被省略,所以给出了整体覆盖率的错误玫瑰色图片。 现在它看起来像这样:
+--------------+-----------+-------+
| File | Cvd lines | Cvg % |
+--------------+-----------+-------+
| 100LineFile | 75 | 75 |
| 100LineFile2 | 0 | 0 |
+--------------+-----------+-------+
| Total | 75 | 37.5|
+--------------+-----------+-------+