2012-03-21 20 views
1

findBugsを既存のプロジェクト(コマンドライン上に現在522個のバグがあります)で起動したいと考えています。findBugsターゲットがバグを発見した場合のAntビルドの失敗方法

522個以上のバグが見つかった場合、antファイル(findbugsターゲットの下)でビルドに失敗するオプションを設定するにはどうすればよいですか?

私は、実際にはantのビルドに失敗し、出力レポートから手動でアンダーパンすることはしません。

ありがとうございました。

+0

ビルドサーバーを使用していますか? – blank

答えて

1

これは可能ではない可能性があります。データマイニングタスクを使用して、特別な処理を行うことができます。 http://findbugs.sourceforge.net/manual/datamining.html

+0

ありがとう、それは本当にストレートフォワードではありません - 私はそのdoinの外部の方法を見つけるでしょう。 – user1025852

+1

AntはJavaコードで拡張可能です。 Antの内部構造に入るだけの簡単な作業ではないかもしれませんが、Javaでは不可能でない限り、Antでは不可能なことはありません。 –

2

これはちょっと遠すぎるかもしれませんが、答えとしてそれを追加しています。

これにはsonarを使用できます。ソナーは、コード品質を測定し追跡するための無料のプラットフォームです。 findbugsメトリクスが含まれています。

Build Breaker Pluginがあります。これは、特定の条件でビルドを破ることになります。

+0

+1合意。ソナーはビルドに統合しやすく、ビルドプロセスに追加する価値があります。 –

1

You need to write a custom ant taskであり、AntのTaskベースクラスから派生したもので、プロパティを設定して後で削除するログリスナーを追加します。カスタムタスクは現在のProject and add the log listener via addLogListener(...)をフェッチします。

ログリスナーは、findBugsがいつロギングするのかを識別し、バグの数をリストし、その行を解析し、プロパティを設定し、ログリスナーのセットから自身を削除するログメッセージを特定する必要があります。

このタスクが完了すると、you need to also write a new conditionはAntとして数値比較条件付きで出荷されません。次に、他の条件と同様に、失敗タスクでカスタム条件を使用できます。

<findBugCountListener prefix="findbugs.count"/> 
<findBugs ...> 
</findBugs> 
<fail> 
    <condition property="allupper"> 
    <and> 
     <isset property="findbugs.count"/> 
     <greaterThan value="${findbugs.count}" limit="522"/> 
    </and> 
    </condition> 
</fail> 

リスナーは、理想的にはバグの数でAntプロパティを設定します。その後、AntContribのAssertタスクを使用して、バグの数が多すぎる場合にビルド例外をスローすることができます。

はい、いくつかのタグを設定するだけでは手作業ではありませんが、少なくともカスタム拡張機能を読み込むことができるため、Antでは可能です。 Antが、findBugsプラグイン(後で書かれなければならない)の明白な知識を持って書かれたのとは異なります。

もう1つの方法は、findBugs ANTプラグインのソースコードを検索し、正式な変更が許可されていると仮定して、ANTプラグインを新しい「追加」プロパティsetCount="propName"に変更してからプロパティを取得して設定します既存のfindBugs ANTプラグインの中にあります。

関連する問題