Coberturaカバレッジレポートにコードを含めることから除外する方法はありますか?カバレッジレポートに含めるべきではないため、カバレッジの数値を下げない方法がいくつかあります。
Cloverにそのような機能があることは知っていますが、Coberturaに似たものは見つかりませんでした。
クラスをインスツルメンテーションから除外できます。その後、レポートに表示されるべきではありません。以下のexcludeステートメントを参照してください。
一部のメソッドの呼び出しを無視することもできます。以下のignoreステートメントを参照してください。
Mavenを使用している場合は、 maven plugin manual を参照してください。
<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については this を参照してください。
<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>
これは今しばらく頭を痛めていました。
私の問題は、ビルドセクションの代わりにレポートセクションにcobertura mavenプラグインが設定されていることでした。
インストルメンテーション設定、つまりクラスまたはパッケージの除外は、ビルドセクションで設定しないと適用されないため、注意してください。
内部クラスも除外することを忘れないでください。
<exclude>path/to/class/MyClass*.class</exclude>
アスタリスクが欠落していることに気付くのに何年もかかりました!
Coberturaは現在このような機能を提供しておらず、今後の拡張機能としてリストされていますが、Emma(使用している)も提供していません。ただし、除外ルールの拡張の形ではありますが、注釈ではありません。
あなたがばかげていることなく100%のために努力できるように、それらのいくつかのアクセスできないコーナーをきれいに隠すのは便利でしょう。
アノテーションはおそらくもっとわかりやすい方法だと思いますが、「@ ExcludeFromCoverage」のようなものが寛大に追加されるのではないかと心配するため、かなり明確に名前を付け、許容可能なシナリオのリストに基づいてください。
2.0以降、独自の@CoverageIgnore
注釈。
Coberturaによって認識され、注釈付きmethodsの検討を回避します(私の知る限り、クラスでは機能しません)。
public @interface CoverageIgnore {}
public class SomeClass {
@CoverageIgnore
public void foo(String baz) {
// useless stuff
}
}
ソース: https://github.com/cobertura/cobertura/wiki/Coverage-Annotations