我有像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);
}
Run Code Online (Sandbox Code Playgroud)
为此,我编写了所有测试,并使用Sonarqube作为代码覆盖工具.但不幸的是,条件覆盖结果(2 conditions are covered by test)正在我的catch陈述中出现.据我所知,有条件保险仅适用于条件检查.为什么它在catch声明中显示.有人可以在这里说清楚.
这是JaCoCo方面的一个问题,因为尝试资源构造:生成的字节码有几个分支,以便安全地关闭开放资源和JaCoCo仪器字节码,并将一些分支报告为未覆盖.
请参阅此问题:https://github.com/jacoco/jacoco/issues/82和这一个https://github.com/jacoco/jacoco/issues/15以获取更详细的说明.