6

私はhudsonCIを使用してストレートJavaWebプロジェクトを管理し、antを使用してビルドしています。

単体テストのカバレッジが以前のビルドよりも悪くならないようにすることで、新しいコードが常にテストされるようにするか、少なくともカバレッジが継続的に改善されるようにします。

このように機能するハドソンプラグインはありますか?

編集:私は現在Emmaを使用していますが、別のカバレッジアプリに切り替えてもかまいません。

また、明確にするために、私はいくつかのハドソンプラグインのしきい値を見てきましたが、それは私が求めているものではありません。たとえば、ビルド#12のカバレッジが全体で46%で、誰かがビルド#13を45%のカバレッジでチェックインした場合、ビルドが壊れることがあります。

これを実行したい理由は、テストカバレッジが低いコードベースを使用しているためです。戻って単体テストをさかのぼって書く時間はありませんが、カバレッジが改善され続けることを確認したいと思います。

更新:ダンは、間違いなく問題になる私の計画のエッジケースを指摘しました。これがいい考えかどうかを考え直す必要があると思います。

4

4 に答える 4

8

はい。どのカバレッジツールを使用していますか?

Hudson の Cobertura プラグインはこれを確実にサポートしています。プロジェクト構成画面では、しきい値を指定できます。

または、cobertura-check タスクを使用して、(Hudson ではなく) Ant をビルドに失敗させることもできます。

編集:あなたが求めていることを正確に行うことができるかどうかはわかりません。できたとしても、問題になる可能性があります。たとえば、平均カバー率が 75% で、あるクラスのカバー率が 80% であるとします。その 80% のクラスとそのすべてのテストを削除すると、以前ほどテストされていない他のコードはなくても、全体的なカバレッジのパーセンテージが低下します。

于 2008-12-23T18:34:00.803 に答える
3

これは一種のハックですが、Findbugs や Checkstyle と同様の理由で使用しています。次のことを行う Ant タスクをセットアップできます (これは複数のタスクに分割できますが、簡潔にするためにそれらを組み合わせています)。

  1. カバレッジを使用してテストを実行する
  2. カバレッジ結果を解析し、カバレッジ パーセンテージを取得します
  3. 最後のビルドから tmp/lastCoverage.txt を読み取ります (ステップ #5a を参照)。
  4. 現在のカバレッジ パーセンテージを、lastCoverage.txt から読み取ったパーセンテージと比較します。
    1. パーセンテージが減少しなかった場合は、tmp/lastCoverage.txt の内容に新しいパーセンテージを上書きします
    2. DID のパーセンテージが減少した場合は、元のファイルを保持し、"COVERAGE FAILURE" をエコーし​​ます (ant のechoタスクを使用)。

ステップ 2 から 5 は必ずしもネイティブの Ant タスクで実行する必要はないことに注意してください。Ant のjavacタスクのようなものを使用して Java プログラムを実行し、これを行うことができます。

次に、Hudson を構成します。

  • 「ソースコード管理」の下で、「アップデートを使用」がチェックされていることを確認してください。これにより、ビルド間で lastCoverage.txt ファイルを保持できます。ビルド間でクリーンアップする必要がある場合、これは問題になる可能性があることに注意してください。
  • Hudson Text Finderプラグインを正規表現で使用して、ビルド出力で「COVERAGE FAILURE」を検索します (プラグインの「コンソール出力も検索する」がオンになっていることを確認してください)。テキスト ファインダー プラグインは、ビルドを不安定とマークすることができます。

ファイル名/パスやコンソール出力などを、ビルドのコンテキスト内に収まるものに置き換えることができます。

上で述べたように、これはかなりハックですが、おそらく Hudson に以前のビルドと現在のビルドを比較させる数少ない (唯一の?) 方法の 1 つです。

于 2008-12-23T19:34:46.343 に答える
0

Atlassian の Clover は、あなたが望むものをサポートします。clover-check Ant タスク、特に historyDir 属性を見てください。

于 2009-07-23T10:12:35.700 に答える
0

もう 1 つのアプローチは、Hudson 用の Sonar プラグインを使用して、時間の経過に伴うカバレッジの傾向を維持し、結果の同化と分析を容易にすることです。また、checkstyle や pmd などの他のメジャーのコンテキストでのカバレッジも表示されます。

于 2009-01-06T07:56:55.873 に答える