2009-06-24 14 views
4

Java用の静的解析ツールは、最も簡単な拡張メカニズムを備えています。私はチェックしたPMD しかし、カスタムルールを書くプロセスは非常に関与しているようです。 具体的には、AspectJのコードが興味深いコードを選ぶようなツールがあるかどうかを知りたいですか?私はAspectJのdeclare warningを知っていますが、できることには限られているようです。Java用の静的解析ツールはどれですか?

関連する質問があります:

静的解析ツールの推奨事項はありますか? Static Analysis tool recommendation for Java?

答えには多くのツールがリストされています。しかし、私はカスタムルールを書くための最も簡単なオプションを提供するものを探したい。

編集:これまでのところ、Guillaumeによって提案されたPMDのXPath式は、私が探しているものに最も近いようです。私はまもなくそれを探検するでしょう。

答えて

4

静的解析ツールを「拡張」との本当の問題は、「静的解析であります解析、ツリー構築、制御フローグラフ抽出、データフロー抽出、ポイントツー分析、プロシージャ間分析、範囲分析など、幅広いトピックがありますプログラムの分析に関するコンパイラの文献のトンを参照してください。

一部のプログラムコードでツールの注意を集中させるためにサーフェス構文のパターンマッチングを使用することもできますが、 がありますので、その点で「静的に解析する」ことをツールに説明してください。 あなたが分析をどこでも 最初に実行し、次にあなたが望む部分を選んで分析する必要があります。

モーラル:ツールを任意の分析を容易にするように拡張することは期待できません。 基本的には、あなたが気にかけている分析の種類を事前に決めておいて (汚れた入力?添え字の範囲のチェック?APIの乱用?)し、 が既にその種のものをサポートしているツールを見つけてください。少なくとも、あなたの「拡張機能」は、すでにツールが行っているのと同じように、 がシンプルになる可能性があります。

私たちのDMSソフトウェアリエンジニアリングツールキットは、多くのアプリケーションや言語間であらゆる種類の分析機器を構築するコストを償却する試みです。 C、C++、Java、COBOLの構文解析、制御/データフロー解析、ポイントツー分析 をさまざまなレベルで提供します。そして、それは表面の構文 パターンマッチングを持っています。 http://www.semanticdesigns.com/Products/DMS/DMSToolkit.html

+1

ありがとうございます。 DMS Toolkitはかなり面白そうです。 –

1

Findbugsカスタム検出器の書き込みはquite simpleです。

あなたはFindBugsインストールのプラグインディレクトリに、説明文hereのようにドロップするだけです。

+0

ありがとうございました。最初にそこを見ると、バイトコードスキャンの使用が低すぎるように見えました。 AspectJ構文に匹敵するものがなければ、もう一度見ていきます。 –

+1

私はここに検出器を追加した経験を書いています:http://dschneller.blogspot.com/2007/04/findbugs-writing-custom-detectors-part.html –

5

PMDのカスタムルールを書くのはかなり簡単です。 PMDはコードの興味深い領域を見つけるためにxPathのような構文を提供します。したがって、XMLで最小限の経験があれば、すぐに始めることができます。 PMDやFindbugsに1-2時間投資し、具体的な質問があればここに戻ってくることをお勧めします。

あなたが作成しようとしているルールのまさに種類を教えている場合私たちはあなたのより良い答えを与えることができるかもしれない...

+0

OK、私はPMDルールを書くAST Visitorスタイルを見ていました。その宣言的性質のためにXPathスタイルがよりよく見えます。確かに見ています。 ありがとう –