我正在尝试开发一个SonarQube插件。我目前的问题是代码覆盖率。正如许多其他语言插件一样,我必须解析一个XML报告,该报告只包含被测试接触到的文件的覆盖率信息,因此覆盖率很高,因为所有未触及的文件都丢失了。
现在,我尝试使用以下代码强制对那些未经测试的文件进行0%的覆盖率:
for (String token : line.split(" ")) {
if (ArrayUtils.contains(CONDITION_KEYWORDS, token)) {
keywords++;
}
}
coverageMeasuresBuilder.setHits(lineNumber, 0);
if (keywords > 0) {
coverageMeasuresBuilder.setConditions(lineNumber, (int) Math.pow(2, keywords), 0);
}这段代码将针对每一行执行,在保存所有行之后,这些度量将被保存。这如预期的那样工作(覆盖率现在更正确了),但是在SonarQube web界面上发生了一些奇怪的事情:如果我使用上面的代码并单击“单元测试覆盖率”,则只显示覆盖率为0%的文件,并且不再列出具有真实覆盖率信息的文件。如果我不使用这段代码,我只能看到测试所接触的文件。
有人能帮我吗?
发布于 2016-03-18 06:59:10
我们在我们的驱动系统中使用了插件,因为我们没有其他选择。昨天,一些开发人员提出了一些排除请求,突然显示了所有的软件包。我猜SonarQube有一个包的限制,它可以显示在覆盖率视图中。
https://stackoverflow.com/questions/34724211
复制相似问题