Skip to main content

ソース コードの構造の探索

AST ビューアーを使用すると、CodeQL データベースの抽象構文ツリーを表示できます。

抽象構文ツリーについて

プログラムの抽象構文ツリー (AST) は、プログラムの構文構造を表します。 AST 上のノードは、ステートメントや式などの要素を表します。 CodeQL データベースは、これらのプログラム要素と、それらの間のリレーションシップをデータベース スキーマを介してエンコードします。 データベース スキーマの詳細については、CodeQL ドキュメントの「CodeQL 用語集」をご覧ください。

Visual Studio Code の CodeQL には AST ビューアーが含まれています。 ビューアーは、CodeQL データベース内のファイルの AST を探索できるグラフ視覚化ビューで構成されています。 これにより、どの CodeQL クラスがソース ファイルのどの部分に対応しているかを確認できます。

ソース ファイルの抽象構文ツリーの表示

注: ワークスペースに適切なクエリ (通常 printAST.ql) がない場合、次の手順では [CodeQL: AST の表示] コマンドが機能しません。 これを修正するには、main ブランチから github/codeql リポジトリのコピーを更新します。 これを行うと、クエリ キャッシュが破棄され、次のクエリの実行が遅くなる可能性があります。

  1. 拡張機能で [データベース] ビューを開き、探索するデータベースを右クリックします。 [データベース ソースをワークスペースに追加] をクリックします。

  2. エクスプローラーで、CodeQL データベースのソース ファイルに移動します。

  3. VS Code Command Palette から [CodeQL: AST の表示] を実行します。 これにより、アクティブなファイルに対して CodeQL クエリ (通常は printAST.ql という名前です) が実行されます。これには数秒かかる場合があります。 クエリが完了すると、AST ビューアーにソース ファイルの構造が表示されます。

  4. ソース ファイルの入れ子構造を表示するには、矢印をクリックしてノードを展開します。

AST ビューアーでノードをクリックすると、ソース コード内のその場所に移動できます。 逆に、ソース コードのセクションをクリックすると、AST ビューアーに対応するノードが表示されます。