2017-07-06 21 views
0

しばらくの間、私はSootのコントロールフローグラフを作成するのに苦労していましたが、私はちょっとtutorialsで迷子になりました。 EclipseプラグインとしてSootを使用するのではなく、SootをライブラリまたはAPIとして使用しようとしています。スートでコントロールフローグラフを作成するには?

私がやりたいことは、Javaプロジェクトがたくさんあることです。これらのプロジェクトのコントロールフローグラフを作成/生成したいと思います。また、Sootには、DOT形式のコントロールフローグラフを生成できるという特徴があることもわかりました。これは私にとっても受け入れやすいものです。

Sootを使用してコントロールフローグラフを作成/生成する方法を示すガイドやコードのサンプルは素晴らしいでしょう!

答えて

1

メソッドローカルのCFGを作成するには、新しいExceptionalUnitGraphを作成し、メソッドのSootBodyを渡すだけです。 wikiのSootチュートリアルでは、その方法を説明します。すなわち、ICFG、あなたはすす拡張子ヒーローズを使用することができ、相互手続きCFGを取得するには

https://github.com/Sable/heros/blob/develop/src/heros/InterproceduralCFG.java

+0

は、応答していただきありがとうございます。しかし、私は、Javaプロジェクトを入力として与え、出力をCFGとして受け取るオプションがあるのだろうかと思っていました。私がJavadocから見たものは、各クラスをSootClass、各メソッドをSootMethodとして割り当てる必要があるからです。あるいは、私は間違った道を歩いていますか? – Ekin

+0

はい、誤解し​​ているようです。 Sootは自動的にクラスをSootClassesに変換します。 Wiki on Githubのチュートリアルをご覧ください。 – Eric

+0

私はGithubのWikiのチュートリアルに従いました。まず、https://github.com/Sable/soot/wiki/Introduction--Soot-as-a-command-line-toolの手順に従って、コマンドラインでSootを実行しようとしました。私はWin7でSootを実行することに言及することが重要です。与えられたコマンド 'java -cp soot-2.5.0.jar soot.Main -cpを入力すると、 -process-dir .. \ MyProject' java.util.regex.Patternをロード中にエラーが発生しました。しかし、 '-pp'でそれを使うと、' classfile:java.io.ObjectInputStream'を読み込めませんでした。残念ながら問題を乗り越える方法が見つかりませんでした。 – Ekin

関連する問題