3

たとえば、Javaソースコードを分析するプログラムを作成しようとしています。たとえば、特定のメソッドへのすべての呼び出し元をチェックします。Eclipse IDEはこの種の機能を提供しますが、これは強力で印象的です。プログラムでもそれらの機能を使用できるように、いくつかのAPIが提供されているのではないかと思います。

オンラインでいくつかの資料をチェックしました。しかし、私が見つけることができるほとんどすべてのドキュメントは、Eclipseプラグインの開発に関連しており、それは私が望んでいるものではありません。それらをスタンドアロンプ​​ログラムで使用したい(おそらく、カスタマイズされたスタイルチェックを行うためのコンパイルチェーンの一部として)。

これは可能ですか?もしそうなら、私が研究を始めるための入り口としてのリンクをいただければ幸いです。そうでない場合、私が試すことができる代替手段はありますか?(私は以前ANTLRの使用を考えていましたが、ソースコードアナライザーからかなり離れたパーサーにすぎません)

4

5 に答える 5

1

Eclipse自体についてはわかりませんが、いくつかの選択肢があります。

まず、比較的軽量です。

  • Findbugs。あなたがまともなJavaプログラマーであれば、独自の分析を書くのは比較的簡単です。
  • PMD。私はそれを自分で使用したことはありませんが、Java分析に加えて-追加のボーナス-ソースコードASTのXPathスタイルのクエリをサポートすることを簡単に書くことができます。

これらはやり過ぎかもしれませんが、Java分析の重機関銃は、McGillU.のSootIBMのWALAです。

于 2012-06-01T01:51:42.337 に答える
1

JDTが好きだと判断した場合は、JDTで基本のEclipseのものだけを使用し、標準のコマンドラインアプリケーションとして機能するEclipse RCPアプリケーションを開発することは(ひどく)難しくありません。EclipseRCPに関するチュートリアルと論文が多数あります。

于 2012-06-01T03:19:12.623 に答える
0

Eclipse / ANTLRの代替として、Javaフロントエンドを備えたDMSソフトウェアリエンジニアリングツールキットを参照してください。DMSは、汎用の解析/ツリー構築/パターンマッチング/ソース書き換え機能を提供します。フロントエンドは、文法、シンボルテーブル、フロー分析(Javaの場合、現在はメソッドに限定されています)などの言語の詳細を認識するようにDMSをカスタマイズします。

于 2012-06-06T08:20:36.273 に答える
0

「実際の」静的分析を実行する場合は、SootChordなどの既存のフレームワークのいずれかを使用することをお勧めします。必要な分析は、おそらくすでにそこに実装されています(ただし、これらのツールは通常、バイトコードを好みます)。一方、特に「すべての呼び出し元を検索」-分析はEclipse内にすでに存在します。から探し始めることができますCallHierarchyViewPart

于 2012-06-06T09:28:08.403 に答える
0

静的コード分析を行うための単純なスタンドアロンプ​​ログラムを作成したい場合は、ANTLRを使用するための正しい道を進んでいるようです。

Checkstyleは、ANTLRを使用して静的コード分析も実行します。ANTLRは、抽象構文木(AST)の作成に役立ちます。ただし、必要なさまざまなタイプのチェックを実行するためのコードを作成する必要があります。ANTLRによって準備されたASTの「ウォーク」パターンを使用してすべてのトークンにアクセスし、それを実行して結果を保存または印刷するロジックを使用できます。開始するには、抽象クラスのクラス名チェックを実行して、「Abstract」で始まることを確認する非常に単純なスタンドアロンの例を次に示します。

于 2019-08-11T00:22:10.923 に答える