誰かが私にJavaのエイリアス解析のフレームワークまたは実装を教えてもらえますか?asmフレームワークを見ましたが、データフロー分析と制御フロー分析しか提供していません。
更新:興味がありますが、Findbugsがエイリアス分析を行うかどうか誰かが知っていますか?
誰かが私にJavaのエイリアス解析のフレームワークまたは実装を教えてもらえますか?asmフレームワークを見ましたが、データフロー分析と制御フロー分析しか提供していません。
更新:興味がありますが、Findbugsがエイリアス分析を行うかどうか誰かが知っていますか?
私は、Java のエイリアス分析を備えたオープンソースのプログラム分析フレームワークを 3 つ知っています。
これらのフレームワークで実際に実装されているのは、可能性のあるエイリアシングを判断できるポイントツー分析であることに注意してください。WALA のポインター分析の詳細については、http: //wala.sourceforge.net/wiki/index.php/UserGuide:PointerAnalysis を参照してください。
ポイントツー分析/エイリアス分析はほとんどのプログラム分析タスクの基本的な部分であるため、これは非常に重要な質問だと思います。そこで、Java のフレームワークのより完全なリストを作成しようとしました。いくつかは他のものよりも完全であり、これは活発な研究分野であるため、いくつか見逃している可能性があります. どちらの実装が最適かを言うのは難しいですが、DOOP と SPARK は学者の間で人気のある選択肢のようです。
サードパーティのライブラリを扱うためのボーナス補助ツール。
OOPSLAで見たdoopがあるんだけど、どういう状態なのかわからない。
私は他の実装を知らず、大量の論文しか知りません。
1 つの可能性は、OCaml で実装されたSawjaです。エイリアス分析はまだ含まれていないようですが、エイリアス分析を作成するためのビルディング ブロックが提供されています。
あなたのアップデートに関して、Bill Pugh の Google トークは、Findbugs がポインターを解決せずにコード内の特定のパターンを探すように聞こえます。もちろん、それは 2006 年のことなので、それ以降に何が起こったのかは誰にもわかりません... 時の流れは速いものです。
当社のDMS ソフトウェア リエンジニアリング ツールキットとそのJava フロント エンドを使用して、これを構築できます。
DMS は、汎用解析、ツリー/シンボル テーブルの構築、およびフロー分析 (制御フロー、データ フロー、ポイント先、コール グラフなど) 機能を提供します。フロントエンドをこの機械に接続することで、ほとんどの機械をゼロから構築することなく、言語固有の分析を実装できます。これらは、非常に大規模な C アプリケーションでグローバル ポイントツー分析とコール グラフの構築を行い、C++ でフロー分析を制御するために使用されています。
Java の場合、メソッド ローカル制御フローが実装されており、ローカル データ フローのいくつかの側面があります。適切なエイリアス分析を行うには、コール グラフの作成に記入する必要があります。