netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2006-05-20 [長年日記] ▲
_ [ツール] bddbddb 使ってみました ▲
解析ツールは,joeq_core として別途配布されているので,bddbddb-full.jar だけ取ってきても Java 解析はできません.基本的に cvs を使って bddbddb と関連パッケージを一式 Eclipse に取り込んでから使うという形式が正しいみたいです.
Java バイトコードを解析ツールに食わせるとコールグラフと bdd ファイルが生成されます.コールグラフ自体,多態性を解決できる範囲で解決されているので,これ単体でもけっこう便利そうな印象.
出力された bdd ファイルに対して points-to set analyzis の datalog ファイルを与えるとそれなりに動作します.ただし,bddbddb が依存するパッケージ javabdd をちゃんと用意することと,例として配布されてる datalog ファイルそのままだと微妙なエラーが出たりするというところは,ちょっと厄介です.
また,bdd 1個はリレーション(リレーショナル代数でいうところのリレーション)を表現しており,bdd エンコードされたものを tuple のリストに変換して,tuple に入ってる整数値が意味する中身を map ファイルから探してくることで,中身のデコードができます.ただし,context-sensitive な解析結果などは,コンテキストの数が多すぎてデコードできませんが.何に使うかちゃんと決めて,できる限り datalog で処理をして,最後にデコードしないと役に立たないようです.
この辺の使い方については,あとで文書としてちゃんとまとめます.
ちなみに,メモリは512MBくらいは割り当てないと,厳しいようです.でも,小規模なプログラム(ライブラリ含めてメソッド数1万程度)ならノートPCでも数分で処理が終わるので,そんなに負荷は高くないといえるかもしれません.処理用の別PCがほしくなるくらいには負荷がかかりますが.