抽象構文ツリーについて
プログラムの抽象構文ツリー (AST) は、プログラムの構文構造を表します。 AST 上のノードは、ステートメントや式などの要素を表します。 CodeQL データベースは、これらのプログラム要素と、それらの間のリレーションシップをデータベース スキーマを介してエンコードします。 データベース スキーマの詳細については、CodeQL ドキュメントの「CodeQL 用語集」をご覧ください。
Visual Studio Code の CodeQL には AST ビューアーが含まれています。 ビューアーは、CodeQL データベース内のファイルの AST を探索できるグラフ視覚化ビューで構成されています。 これにより、どの CodeQL クラスがソース ファイルのどの部分に対応しているかを確認できます。
ソース ファイルの抽象構文ツリーの表示
注: ワークスペースに適切なクエリ (通常 printAST.ql
) がない場合、次の手順では [CodeQL: AST の表示] コマンドが機能しません。 これを修正するには、main
ブランチから github/codeql
リポジトリのコピーを更新します。 これを行うと、クエリ キャッシュが破棄され、次のクエリの実行が遅くなる可能性があります。
-
拡張機能で [データベース] ビューを開き、探索するデータベースを右クリックします。 [データベース ソースをワークスペースに追加] をクリックします。
-
エクスプローラーで、CodeQL データベースのソース ファイルに移動します。
-
VS Code Command Palette から [CodeQL: AST の表示] を実行します。 これにより、アクティブなファイルに対して CodeQL クエリ (通常は
printAST.ql
という名前です) が実行されます。これには数秒かかる場合があります。 クエリが完了すると、AST ビューアーにソース ファイルの構造が表示されます。 -
ソース ファイルの入れ子構造を表示するには、矢印をクリックしてノードを展開します。
AST ビューアーでノードをクリックすると、ソース コード内のその場所に移動できます。 逆に、ソース コードのセクションをクリックすると、AST ビューアーに対応するノードが表示されます。