10

Java5とJava6の間で、@Override(スーパークラスではなく)インターフェースで発生するメソッドのアノテーションに関するルールが変更されました。許可される前は許可されていましたが、許可された後です。ただし、javacでは必要ありません。

eclipseなどの一部のIDEは、このようなオーバーライドの欠落に対してエラーまたは警告を生成する可能性があります。欠落しているオーバーライドを検出できるあらゆる種類の静的分析ツールを探しているので、プログラムでそれらをレポート/ブロックできます。

findbugsなどのように私が知っている大きなものはどれもできないようです-おそらく@Overrideソース保持レベルしかないため、これらのツールが動作する.classファイルやソースレベルには存在しませんcheckstyleのようなツールは、クラス階層全体を理解していません。

4

3 に答える 3

3

Eclipse で保存アクションを有効にして、不足している @Override 注釈を自動的に追加することができます。[ウィンドウ] > [設定] > [Java] > [エディター] > [アクションの保存] > [不足しているコード] > [不足している注釈を追加] を参照してください。

于 2012-06-15T16:48:57.530 に答える
1

明らかに、Java ソース コードを処理し、コード構造と属性にアクセスできるものが必要です。

Eclipse には JDT にいくつかの解析機構があることを理解しています。それを使用できるかもしれません。

当社の DMS Software Reengineering Toolkit には、完全な Java ソース パーサー (属性キャプチャを含む)、完全な名前と型の解決、および多数のソース ファイルを一度に読み取る機能が備わっています。DMS は、独自のカスタム分析ツールを構築できるように設計されているため、属性が存在するかどうかを主張する条件を定義できます。

DMS はプログラム変換機能も提供するため、どの属性が存在する必要があるかが明確なソース コードを変更するカスタマイズ ルールを定義することもできます。

DMS と Java 言語のルールを学ぶのは簡単ではありません。これを構成するには多少の労力が必要です。しかし、実際に何千人もの開発者がいる場合、このコストは彼らが何をしているかを制御できないことによって圧倒されるため、投資は理にかなっています。

于 2013-03-12T03:43:34.740 に答える
0

JArchitectは、CQLinq を使用して問題を解決し、このようなリクエストを実行できます

from t in Types where !t.HasAnnotation("Override") select t

もちろん、クエリをカスタマイズして、他の条件を追加することもできます。

于 2013-03-14T15:58:34.510 に答える