当前位置: 首页 > 知识库问答 >
问题:

如何从Jacoco代码覆盖排除一行?

都阳辉
2023-03-14

如何排除inputStream。close()来自jacoco code coverage,在pom中。xml还是java代码?

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

共有3个答案

陆翰学
2023-03-14

我不认为有什么方法可以排除某个特定的陈述。但是,有一条规定排除方法,,尽管不建议使用该方法。作为一个糟糕的变通方法,我们可以创建语句外的方法。JaCoCo的0.8.2版本中添加了新功能,它过滤掉了带有@Generated注释的方法。有关详细信息,请参阅以下文档:

在生成报告期间,使用运行时可见和不可见注释(其简单名称已生成)进行注释的类和方法会被过滤掉

参考https://github.com/jacoco/jacoco/wiki/FilteringOptions#annotation-based-filtering了解更多信息。

文鸣
2023-03-14

我怀疑你真正的目标是100%覆盖。考虑使用“资源块”的尝试来重新编写代码。例如:

try (final InputStream inputStream = new FileInputStream(file)){
    //work with inputStream; auto-closes
}
catch (final Exception ex){
    //handle it appropriately
}
元叶秋
2023-03-14

到目前为止,还无法排除特定的行(请参见链接):

到目前为止,JaCoCo核心只适用于类文件,没有源代码处理。这将需要对架构进行重大返工,并增加额外的配置麻烦。

这意味着,Jacoco分析你的程序的字节码,而不是你的源,结果它不能使用像注释这样的提示。

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

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

 类似资料:
  • 我想以某种方式使用Jacoco,这样它就排除了。为了实现这一点,我加入了

  • 我的代码运行在具有单独JVM的单独虚拟机上。我想在此虚拟机上以tcpserver模式设置JaCoCo代理以收集覆盖率数据。然后,我将在我的maven项目中以tcpclient模式设置JaCoCo代理,以连接到上面提到的VM并获取覆盖率数据。 问题是代理不收集任何覆盖数据。在中创建了覆盖率数据文件,但该文件为空。 下面是代理选项:-Java agent:/usr/xx/plugins/org . j

  • 我在声纳中的代码覆盖率显示为0%,这不是真的,因为我有单元测试。 格拉德尔 当我打开inside然后我可以看到成功的单元测试。 我在Jenkins环境中运行作为

  • 我执行Jacoco单元测试代码覆盖,它显示了单元测试中需要覆盖的所有代码。 如何避免测试覆盖显示ui代码,比如onCreate()、onAttach()中的代码(fragment)。我不想要视图的代码覆盖率,但jacoco也给出了这一点。我有办法消除它吗?

  • 当我的Jenkins管道失败时,试图从覆盖报告中排除包。我有一个包含所有POJO: s的子项目。我不想为所有这些编写uittest。因此,它们会拖累覆盖范围将低于阈值的分支/线路覆盖范围,并使我的构建失败。 应该可以排除一些包,但我无法让它工作。 我有以下雅各布.gradle文件: 以下是我的声纳.gradle文件中的内容: 在我的build.gradle中: 最后从我的詹金斯文件中: 但是,xx

  • 我正在尝试使用JaCoCo-javaagent传递VM参数来获得代码覆盖率 -Java agent:/test/jaco co/jaco agent . jar = dest file =/test/jaco co/jaco co . exec,includes=com。*,append=true 我能在jacoco中获得一些价值。执行文件,但无法获取覆盖率报告。我怎样才能把jacoco转化成。执