如何从jacoco代码覆盖率中排除一行?

nom*_*mer 5 java jacoco jacoco-maven-plugin

我如何inputStream.close()从pom.xml或Java代码中的jacoco代码覆盖率中排除?

public void run() {
    InputStream inputStream = null;
    try {
        inputStream = fileSystem.newFileInputStream(file);
    }
    finally {
        if(inputStream != null) {
            try {
                inputStream.close();
            } catch (IOException e) {}
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Goo*_*Dok 10

目前,无法排除特定行(请参阅链接):

截至今天,JaCoCo 核心仅适用于类文件,没有源处理. 这将需要对架构进行重大改造,并增加额外的配置麻烦。

这意味着,Jacoco 会分析您程序的字节码,而不是您的源代码,因此它不能使用诸如 comments 之类的提示

按照相应的问题来跟踪此类功能实现的状态。

作为一种解决方法,您可以将其放入一个单独的方法中,但是请注意,当您更改代码只是为了达到 100% 的覆盖级别时,这是一种难闻的气味。


Dom*_* D. 5

我怀疑您真正的目标是 100% 的覆盖率。考虑使用 try-with-resources 块重写代码。例如:

try (final InputStream inputStream = new FileInputStream(file)){
    //work with inputStream; auto-closes
}
catch (final Exception ex){
    //handle it appropriately
}
Run Code Online (Sandbox Code Playgroud)