2012-04-20 10 views
2

リソースを取得するメソッドがそれを解放するかどうかを確認しようとしています。単一のjarファイル内のクラス内のメソッドの呼び出し元を見つけるための最良のツールは何ですか? CheckStyleまたはFindBugsでこれを行うことはできますか?どうやって?メソッドの呼び出し元を見つける

私はBCELなどを使用してこれを行うことができますが、以前はバイトコードで作業したことがなく、これを行うには時間がかかりすぎます。

"java call graph"を検索すると便利なものは見つかりませんでしたが、これは非常に基本的な機能であると思われます。しかし、この非常に大きなプロジェクトでコールグラフ全体を生成する必要はありません。

+0

監査しようとしているリソースの種類がわからなくても、推薦するのは難しいです。 'what'と 'how'に応じて、JavassistのようなAOPツールやSootのようなコールフロー解析ツールを見たいかもしれません。 – Perception

+0

@Perception私は仕事をするだろうと思った私の検索でSootを見つけましたが、プログラミングが必要です。私は任意の*リソースのために直ちに使うことができるものを見つけることができるようにしたいと思います - 'SomeResource.acquire'を呼び出すjarのすべてのメソッドを探したいとします。 –

+0

確かにFindBugsには閉じられていないストリームを見つける機能があります。私はそのサポートがどれほど一般化されているか分かりません。 –

答えて

1

チェックthis link。あなたの要件を満たすかもしれないようです。

+0

おそらく、リンクが死んで移動すると、リンクしているものに名前を付けて説明するべきでしょう。 – pvg

1

Eclipse Call Hierarchyの実装を見ることができます。たぶんそれはちょっと役立ちます。

+0

あなたはいくつかのUI機能を指摘しました...私はEclipseにコール階層があり、それがオープンソースであることを知っています、あなたは特定の情報を持っていますか? –

+0

私は自分の実装に「インスピレーション」を与えたいと思っています。 –

+0

しかし、コールグラフを作成しようとしているとき*コールグラフを表示しているコードからインスピレーションを得るにはどうすればよいですか? –

1

私は自分で使っていませんが、私はJava Callgraphがあなたの望むことをすると信じています。

+0

+1はい、 'Java Callgraph'がジョブを行います。別のポスターが最初にそれを示唆したので、私は彼が私が受け入れることができる答えを作るのを待つだろう。 –

関連する問題