3

[findbugs はここの例です。質問はそのような maven プラグインに適用できます]

少し前にビルドのレクチャーに参加したとき、非常に気に入ったパターンが話題になりました: チェーンに新しいツールを追加し、n 回の違反で開始する場合、n を減らし続け (最高水準点)、失敗する必要があります。現在のチェックが n の最後の値を超えた場合にのみビルドします。

findbugs がビルドに導入されたばかりで、このパターンを実装する方法を探していました。プラグイン構成を介してそれを行う方法が見当たらないので、誰かがこれをどのように達成したかについて言及できるかどうか興味がありました. 明らかな方法はプラグインをカスタマイズすることだと思いますが、先に進む前に、他の人からの考えを聞きたいです.

4

4 に答える 4

2

私の意見では、FindBugs のケースは少し特殊です。違反は表面的なものではなく、実際のバグである可能性があるため、少なくとも優先度の高いバグ (つまり、Highしきい値を使用する場合) を修正する必要があります。

念のため、同様のパターンに従います (done の定義には技術的負債の増加なしが含まれます) が、Maven では実装しませんでした (ビルドに失敗しません)。Sonarとそのタイム マシンを使用して、メトリクスの進化を追跡します (毎日の進化を追跡します)。ビルドに失敗するほど強力ではありませんが、私たちにとってはうまく機能します。

于 2010-06-25T09:57:48.233 に答える
2

Findbugs (および私が知っている他のすべてのコード メトリクス プラグイン) は、XML ファイルを生成します。私がすることは、これらの xml ファイルの読み取りに特化した Maven プラグインを作成することです。プライベート ルックアップ テーブルをどこかに保持し、ビルドごと、メトリックの最後の値ごとに保存します。

これは、メトリック プラグインごとに実装する必要がある共通のパーサー インターフェイスを使用します。構成は次のようになります。

<plugin>
    <groupId>com.yourcompany</groupId>
            <artifactId>your-plugin-id</artifactId>
            <version>1.0</version>
            <executions>
                    <execution>
                        <id>readmetrics</id>
                        <phase>process-classes</phase>
                        <goals>
                            <goal>analyse-metrics</goal>
                        </goals>
                    </execution>
             </executions>
             <configuration>
                  <metrics>
                      <metric>
                          <type>findbugs</type>
                          <file>${project.reporting.outputDirectory}/findbugs/output.xml</file>
                      </metric>
                      <metric>
                          <type>checkstyle</type>
                          <file>${project.reporting.outputDirectory}/checkstyle/output.xml</file>
                      </metric>
                      <metric>
                          <type>pmd</type>
                          <file>${project.reporting.outputDirectory}/pmd/output.xml</file>
                      </metric>
                  </metrics>
              </configuration>
        </plugin>
于 2010-06-25T05:05:45.597 に答える
1

この問題は、Maven の findbugs トラッカー ( http://jira.codehaus.org/browse/MFINDBUGS-115を参照) で取り上げました。

さらに、これを引き上げる一環として、提出されたパッチをコーディングしました。このパッチを実行して、大規模なマルチモジュール プロジェクトで成功を収めています。

コードを同期し、findbugs-maven-plugin サイトの指示に従ってパッチを適用するか、パッチまたはその派生物がプラグインの将来のバージョンに受け入れられることを願っています。

于 2010-06-30T03:54:10.350 に答える
0

あなたがこれについて言及するのはおかしいです。なぜなら、私は現在、雇用主のためにまさにこれに取り組んでいるからです。作業を保留するために、 dybdobと呼ばれるオープンソース プロジェクトをスピンオフしました。それは非常に進行中の作業であるため、現在レポにあるコードはかなり恐ろしく、非常にハードコーディング/ハックされています。ただし、seanizer が提案することとほぼ同じことを行う計画があります。つまり、XML を解析し、カウントを保持し、増加した場合は失敗します。

私が最初に実装したもの (これもハードコーディングされており、ハッキーで、文書化されていません) は、ビルドから出てくる javac コンパイラの警告を実際にカウントし、その量が増えるとビルドを中断するプラグインです。これは現在機能しており、現在、findbugs、checkstyle、および pmd の警告に並行して取り組んでいます。

あなたがそれをチェックして、助けに興味があるなら(または単にそれがどのように進化するかを見たいだけでも)、私に連絡してください。

于 2010-07-05T06:32:49.737 に答える