Visual Studio IntelliSense for VC ++には、「完全な」EDG C ++パーサーが含まれています(Intelなどでも使用されています)。C#コードDOMはアドオンにアクセスできるので(間違っている場合は修正してください)、C ++コードDOMにもアクセスできますか?これを使用して、VS環境内で開いているVC ++プロジェクトを分析できますか?
Visual Studio IntelliSense for VC ++には、「完全な」EDG C ++パーサーが含まれています(Intelなどでも使用されています)。C#コードDOMはアドオンにアクセスできるので(間違っている場合は修正してください)、C ++コードDOMにもアクセスできますか?これを使用して、VS環境内で開いているVC ++プロジェクトを分析できますか?
回答:
Visual C ++リファクタリングの拡張子は、プロジェクト全体のメンバーの名前を変更することができます。それはMSによって構築されましたが、明らかに内部コードDOMを使用してこれを実現しました。ですから、それは可能です。まだ方法がわかりません。
CppListerの拡張は、クラス内のさまざまなメンバーを一覧表示するVSによって作成されたインテリセンスデータベースを読み取ることができます。
いつでもオープンソースのClang C ++パーサー(実際にはコンパイラー)を使用して、ASTをC#オブジェクトモデルに読み込むことができます。ClangへのC#バインディングについては、CppSharpおよびClangSharpを参照してください。
「C ++コードDOM」が存在するかどうかはわかりません。重要なのは、MSVSがEDGフロントエンドを使用して、MSVS IDEアクションをサポートするためにシンボルの意味を解析および決定することです。EDG IIRCは、プログラムを表す独自の内部データ構造を構築します。これらのデータ構造が「C ++コードDOM」であると信じる理由はありません。あるいは、それらがあなたに見えるか、MSDNでそれらについて知ることができるでしょう。
あなたの本当の問題は、C ++ソースコードを分析することです。EDGのフロントエンド情報があることは、そのための大きな助けになると私は同意します。あなたは 本当にあなた自身のC ++パーサーを書こうとすることを本当に望んでいません(そしてあなたは構文解析の前にたくさんのものを必要とします、「構文解析後の人生」に関する私のエッセイをググってください)。
したがって、次の選択肢があります。