問題タブ [libclang]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - libclangはプリミティブ値を取得します
libclangを使用してプリミティブリテラルの値を取得するにはどうすればよいですか?
たとえば、カーソルの種類がCXCursor_IntegerLiteralのCXCursorがある場合、リテラル値を抽出するにはどうすればよいですか。
アップデート:
libclangを使用すると非常に多くの問題が発生しました。私はそれを完全に避け、代わりにclangが提供するC++インターフェースを使用することを強くお勧めします。C ++インターフェースは非常に使いやすく、十分に文書化されています:http: //clang.llvm.org/doxygen/annotated.html
libclangの唯一の目的は、次のコードのようにASTUnitオブジェクトを生成することです(それ以外の場合は簡単ではありません)。
ここで、libclangは安定しているが、C++インターフェースは安定していないと言うかもしれません。libclangを使用してASTを理解し、それを使用してクラッジを作成するために費やす時間は、とにかく多くの時間を浪費するため、これはほとんど問題になりません。バージョンのアップグレード後にコンパイルされないコードを修正するのに数時間を費やしたいと思います(必要な場合でも)。
c - libClang の「「-fsyntax-only」が存在する場合、「リンカー」入力は使用されません」
libclangを使用してコードでclangによって生成された実行可能ファイルを実行しようとしているときに、この種の問題を経験した人はいますか(gccを使用してコンパイルすると発生します)? いくつかの印刷を使用して、次の関数呼び出しで発生することに気付きました:fprintf(stderr, "%s\n", clang_getCString(String));
この場合、Cstring からの出力があります。Clang -lclang を使用してコンパイルしています
ありがとう。
c++ - メンバ関数が const か volatile かを libclang で調べる方法は?
CXCursor
kindのインスタンスがありますCXCursor_CXXMethod
。const
関数がまたはであるかどうかを調べたいvolatile
、たとえば:
libclang のドキュメントには有用なものが見つかりませんでした。試しclang_isConstQualifiedType
てみましたが、これらは常にC++ メンバー関数型でclang_isVolatileQualifiedType
返されるようです。0
llvm - libclangで、関数呼び出し時にカーソルの宣言タイプのカーソルを取得するにはどうすればよいですか?
インクルードされたヘッダーファイル内でプロトタイプが宣言されている関数呼び出しを指すカーソルがあります。そのような宣言の場所を取得したいのですが、以下のgdb出力に示されているように、関数呼び出しの型を取得した後、宣言型のカーソルを取得できません。正しく取得するにはどうすればよいですか。
関連するすべてのソースコードは次のとおりです。
c++ - libclang を使用して、特定の警告を有効または無効にするにはどうすればよいですか?
libclang API を使用して、C++ プロジェクトをプログラムで分析しようとしています。コンパイルは問題なく、ツールは生成された AST を適切に解析していますが、特定の警告をオン/オフする方法がわかりません。
関連するコード スニペットは次のとおりです。「未使用の変数」警告を有効/無効にしたいと思います。
clang - libclang:ASTにいくつかのステートメントがありませんか?
acソースファイル(tt.c)を解析してlibclangがどのように機能するかを確認するためのテストプログラム(parse_ast.c)を作成しました。出力は、ASTの階層構造です。
テストファイルは次のとおりです。
出力は次のようになります。
3つの関数(7行目のdirect_write/11行目のindirect_write/15行目のmain)があり、ほとんどのステートメントはASTにありますが、12行目のステートメントを表すものは見つかりません。 17行目。理由を知っている人はいますか?
私はdebian2.6.32squeezeを使用しており、clang 3.1と3.2(ソースからコンパイル)の両方でテストされています。
プログラムparse_ast.cは次のとおりです。
更新:
問題はヘッダーファイルstddef.hが欠落しているためであり、libclangのメールリストhttp://clang-developers.42468.n3.nabble.com/libclang-missing-some-statements-in-the-AST-td4029641で回答されています。 .html
llvm - libclang に関するチュートリアルはありますか?
libclang のわかりやすいガイドを探していました。ここまたは他のフォーラムでいくつかのスレッドを見てきましたが、推奨される唯一の情報源は、libclang source/doxygen doc、vim 用の完全なプラグインの clang、またはCompilerプレゼンテーションを超えた思考です。ただし、実際の使用に関する情報は提供されていません。コード補完/構文の強調表示 (おそらくいくつかの基本的なリファクタリング/解析) の実装に興味があります。
私の質問は、上記以外にわかりやすいチュートリアルはありますか? たぶん、上級の libclang ユーザーの一部はそれを書くことができます:)
注:clangのプラグインを書くことに興味はありません。
c++ - 特定の位置に表示される型名のリスト
ソースが不完全な場合 (編集中など) であっても、C++ ソースの特定の位置に表示されるすべての型名のリストをプログラムで取得する方法が必要です。
LibClang はおそらくコード補完モジュールの内部でそのようなリストを作成していることを理解していますが、仕様からわかる限り、それは公開されません。
さて、私は Clang ソースで手を汚すことを恐れていませんが、ハッキングを開始する前に、必要なものを入手するために見逃している簡単な方法はありますか? または、リストを取得できる別のライブラリまたはコマンド ラインツールはありますか?
c - C コードで libclang を静的にリンクする
libclang で利用可能なフロントエンドを使用して、C コードの単純な構文チェッカーを作成しようとしています。展開上の問題により、libclang 内のすべてのライブラリを静的にリンクできる必要があり、すべてのライブラリを含む .so ファイルを渡さないようにする必要があります。
ソースからclang/llvmを構築しています.llvm/Release + Asserts / libには、使用できるはずの.aファイルがたくさんありますが、動作していないようです(リンカは何千もの.シンボルの欠落に関するエラー)。ただし、libclang.so を使用してコンパイルすると、次のようにそのディレクトリにも存在します。
すべてがうまくいくようです。
これを機能させるために含める必要がある .a ファイルの最小セットは何ですか? ビルド出力ディレクトリに絶対にすべての .a ファイルを含めようとしましたが、それらは異なる順序で clang/gcc に提供されましたが、成功しませんでした。libclang の Index.h に記載されている関数だけが必要ですが、さまざまな libclang*.a ファイルの目的に関するリソースやドキュメントはないようです。libclang.so が取り込むファイルを知っておくと非常に役立ちます。