排除Cobertura代码覆盖的方法

有没有办法将代码从列入Cobertura覆盖率报告中排除? 我们有一些方法不应该包含在覆盖报告中,因此不会降低覆盖率。

我知道三叶草有这样的function,但是我没有发现类似于Cobertura的东西。

您可以从检测中排除类。 那么他们不应该出现在报告。 请参阅下面的排除语句

您也可以忽略对某些方法的调用。 请参阅下面的ignore语句。

如果您使用的是maven,请参阅maven插件手册 。

<configuration> <instrumentation> <ignores> <ignore>com.example.boringcode.*</ignore> </ignores> <excludes> <exclude>com/example/dullcode/**/*.class</exclude> <exclude>com/example/**/*Test.class</exclude> </excludes> </instrumentation> </configuration> 

而ant看到这一点 。

 <cobertura-instrument todir="${instrumented.dir}"> <ignore regex="org.apache.log4j.*" /> <fileset dir="${classes.dir}"> <include name="**/*.class" /> <exclude name="**/*Test.class" /> </fileset> <fileset dir="${jars.dir}"> <include name="my-simple-plugin.jar" /> </fileset> </cobertura-instrument> 

这一段时间以来,我一直在打破我的头脑。

我的问题是,我有报告部分而不是构build部分cobertura maven插件安装。

如果你没有在build部分设置,那么这个工具设置,因此不包括类或者包,所以不要使用,所以要小心这个。

记得也要排除内部类。

 <exclude>path/to/class/MyClass*.class</exclude> 

我花了好几年才注意到我错过了一个星号!

Cobertura目前没有提供这样的function,虽然它被列为即将到来的增强,但Emma(我们使用)也没有,尽pipe我认为它是对排除规则的扩展,而不是作为注释。

可以很方便地干净地覆盖那些不能进入的angular落,这样你就可以百分百争取而不会变得荒谬。

我认为注释可能是一个更友好的方式来做到这一点,但他们应该是相当明确的命名和基于一个可接受的场景列表,因为我担心,否则类似“@ExcludeFromCoverage”将被慷慨地添加。