私はclang libtoolingでリファクタリングツールを書いています。
必要なのは、ライブ変数情報に従ってソース コードを書き直すことです。たとえば、関数内の基本ブロックごとに、ライブアウト変数をダンプします。
分析チェッカーを書いていれば、それは非常に簡単です。
void checkASTCodeBody(const Decl *D, AnalysisManager& mgr,
BugReporter &BR) const {
if (LiveVariables* L = mgr.getAnalysis<LiveVariables>(D)) {
L->dumpBlockLiveness(mgr.getSourceManager());
}
}
mgr.getAnalysis(D) を呼び出すだけで、この関数の LiveVariables を取得できます。次に、各ブロックをダンプします。
しかし、私はスタンドアロンのリファクタリング ツールを作成しています。AnalysisManager オブジェクトを作成するにはどうすればよいですか?
どうもありがとうございます。