Sobre a árvore de sintaxe abstrata
A árvore de sintaxe abstrata (AST) de um programa representa a estrutura sintática do programa. Os nós na AST representam elementos como instruções e expressões. Um banco de dados do CodeQL codifica esses elementos de programa e as relações entre eles por meio de um esquema de banco de dados. Para obter mais informações sobre esquemas de bancos de dados, confira o glossário do CodeQL na documentação do CodeQL.
O CodeQL para Visual Studio Code contém um visualizador da AST. O visualizador consiste em um modo de exibição de visualização gráfica que permite explorar a AST de um arquivo em um banco de dados do CodeQL. Isso ajuda a ver quais classes do CodeQL correspondem a quais partes dos arquivos de origem.
Exibir a árvore de sintaxe abstrata de um arquivo de origem
Note
Se você não tiver uma consulta apropriada (geralmente, printAST.ql
) em seu espaço de trabalho, o comando CodeQL: View AST nas etapas a seguir não funcionará. Para corrigir esse problema, você pode atualizar sua cópia do repositório github/codeql
do branch main
. Se você fizer isso, os caches de consulta poderão ser descartados, dessa forma, a próxima execução da consulta poderá ser mais lenta.
-
Abra o modo de exibição "Bancos de Dados" na extensão e clique com o botão direito do mouse no banco de dados que você deseja explorar. Clique em Adicionar Origem do Banco de Dados ao Espaço de Trabalho.
-
Navegue até um arquivo de origem do banco de dados do CodeQL no Explorador de Arquivos.
-
Execute CodeQL: View AST no VS Code Command Palette. Isso executa uma consulta do CodeQL (geralmente denominada
printAST.ql
) no arquivo ativo, o que pode levar alguns segundos. Quando a consulta estiver concluída, o visualizador da AST exibirá a estrutura do arquivo de origem. -
Para ver a estrutura aninhada do arquivo de origem, clique nas setas e expanda os nós.
Você pode clicar em um nó no visualizador da AST para ir até ele no código-fonte. Por outro lado, se você clicar em uma seção do código-fonte, o visualizador da AST exibirá o nó correspondente.