如何在自定义SonarQube插件中对未经测试的文件强制执行0%的代码覆盖?

时间:2016-01-11 14:43:56

标签: plugins sonarqube

我正在尝试开发一个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%覆盖率的文件,并且不再列出具有真实覆盖率信息的文件。如果我不使用此代码,我只能看到测试所触及的文件。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我们在prod系统中使用了插件,因为我们没有其他选择。昨天,一些开发人员要求排除一些,突然显示所有包裹。我猜SonarQube的封装限制可以在封面视图中显示。