Javaのどの静的解析ツールが最も簡単に拡張できますか? [閉まっている]
-
10-07-2019 - |
質問
Java用の静的解析ツールには、最も簡単な拡張メカニズムがあります。 PMD をチェックしました
しかし、カスタムルールを作成するプロセスは非常に複雑に思えます。
具体的には、コードの興味深い領域を選択するための構文のような AspectJ を提供するツールがあるかどうかを知りたいですか? AspectJの を認識しています。警告を宣言します
が、できることは限られているようです。
関連する質問を見つけました:
Java用の静的分析ツールの推奨事項 Javaの静的分析ツールの推奨事項
回答には多くのツールがリストされています。しかし、カスタムルールを記述するための最も簡単なオプションを提供するものを見つけたいと思います。
編集:これまでのところ、Guillaumeによって提案されたPMDのXPath式は、探しているものに最も近いようです。まもなく調査します。
解決
" extending"の実際の問題静的分析ツールは「静的分析」です。非常に広範なトピックであるため、一般的にそれを行うには多くの機械が必要です:解析、ツリー構築、制御フローグラフ抽出、データフロー抽出、ポイントツー分析、手続き間分析、範囲分析、リストが続く、プログラムの分析に関する多数のコンパイラー資料を参照してください。
表面構文のパターンマッチングを使用して、ツールの注意を一部のプログラムコードに集中させることもできますが、 ツールに「静的に分析する」ことを説明します。その時点で (および[point-to]などの一部の分析では、どこでも分析を行う必要があります 最初に、次に必要な部分を選択します)。
道徳:ツールを拡張して任意の分析を簡単に行えるとは思わないでください。 基本的に、どのような分析に関心があるかを事前に決定する必要があります (汚染された入力?添字の範囲チェック?APIの悪用?)そして、 すでにそのようなことをサポートしています。少なくともその後、「拡張機能」持ってる ツールが既に実行していることと類似しているためにシンプルになる可能性。
DMS Software Reengineering Toolkitは、多くのアプリケーションと言語にまたがるあらゆる種類の分析機械の構築コストを償却する試みです。 解析、制御/データフロー分析、ポイントツー分析を提供します C、C ++、Java、およびCOBOLのさまざまな程度に。そして、それは表面構文を持っています 「ポイント」を支援するパターンマッチング。 http://www.semanticdesigns.com/Products/DMS/DMSToolkit.htmlをご覧ください。 a>