java – SonarQube – 为什么在catch语句上调整Coverage指标

我有像java的代码

try (FileInputStream fileInputStream = new FileInputStream(filePath);
            PrintWriter out = response.getWriter()) {
        while ((i = fileInputStream.read()) != -1) {
            out.write(i);
        }
    } catch (IOException e) {
        throw new IOException(e);
    }

为此,我编写了所有测试,并使用Sonarqube作为代码覆盖工具.但不幸的是,有条件的覆盖率结果(测试涵盖了2个条件)将在我的捕获声明中出现.据我所知,有条件保险仅适用于条件检查.为什么它在catch语句中显示.有人可以在这里说清楚.

解决方法:

这是JaCoCo方面的问题,因为尝试资源构建:
生成的字节码有几个分支,以便安全地关闭开放资源和JaCoCo仪器字节码,并将其中一些分支报告为未覆盖.

有关更详细的说明,请参阅此问题:https://github.com/jacoco/jacoco/issues/82和此https://github.com/jacoco/jacoco/issues/15.

上一篇:jenkins sonar plugin


下一篇:java – 声纳代码覆盖率分析不添加