如何从jacoco代码覆盖率,pom.xml或java代码中排除inputStream.close()
?
public void run() {
InputStream inputStream = null;
try {
inputStream = fileSystem.newFileInputStream(file);
}
finally {
if(inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {}
}
}
}
答案 0 :(得分:4)
我怀疑您的真正目标是100%覆盖率。考虑改用try-with-resources块重写代码。例如:
try (final InputStream inputStream = new FileInputStream(file)){
//work with inputStream; auto-closes
}
catch (final Exception ex){
//handle it appropriately
}
答案 1 :(得分:4)
就目前而言,尚不能排除特定行(请参见the link):
到目前为止,JaCoCo Core仅适用于类文件,没有源处理。这将需要对体系结构进行重大修改,并增加其他配置麻烦。
这意味着,Jacoco将分析程序的字节代码,而不是源代码,cannot use hints like comments将其分析。
跟随the corresponding issue跟踪此类功能实现的状态。
作为一种解决方法,您可以将其放入单独的方法中,但是请注意,当您更改代码以使其达到100%覆盖级别时,这是一种难闻的气味。
答案 2 :(得分:0)
我认为没有办法排除特定的陈述。但是,有一项规定排除了方法though its not recommended
。作为一种不好的解决方法,我们可以在语句外创建方法。
JaCoCo的0.8.2版本中已添加了新功能,该功能过滤了用@Generated
注释的方法。有关详细信息,请参见下面的文档:
在生成报告的过程中会滤除带有运行时可见和不可见注释(其简单名称为Generated)的类和方法
有关更多信息,请参考https://github.com/jacoco/jacoco/wiki/FilteringOptions#annotation-based-filtering。
答案 3 :(得分:0)
你不能。如果要从覆盖范围中排除某些行,从而使类覆盖率降至某个强制性限制以下,则只需排除整个类或程序包即可。您可以在这里找到更多信息:Maven Jacoco Configuration - Exclude classes/packages from report not working