Sobre a análise de linguagens compiladas
Para linguagens compiladas como, por exemplo, C/C++, C#, Go e Java, CodeQL só faz a digitalização de arquivos criados durante a análise. Portanto, o número de linhas de código digitalizadas será menor do que o esperado se parte do código-fonte não for compilado corretamente. Isso pode ocorrer por diversos motivos:
-
O recurso
autobuild
do CodeQL usa a heurística para compilar o código em um repositório. No entanto, às vezes essa abordagem resulta em uma análise incompleta de um repositório. Por exemplo, quando vários comandosbuild.sh
existem em um só repositório, talvez a análise não seja completa, pois a etapaautobuild
executará apenas um dos comandos. Portanto, alguns arquivos de origem podem não ser compilados. -
Alguns compiladores não funcionam com CodeQL e podem causar problemas ao analisar o código. Por exemplo, a maioria dos compiladores C específicos do fornecedor não será reconhecida por CodeQL. O código C precisará ser compilado com um compilador reconhecido (por exemplo, GCC, Clang ou MSVC) para ser analisado.
Se a análise do CodeQL examinar menos linhas de código do que o esperado, você poderá tentar substituir o autobuild step
ou inspecionar a cópia dos arquivos de origem no banco de dados do CodeQL.
Substituir a etapa autobuild
Substitua a etapa autobuild
pelos os mesmos comandos de build que serão usados em produção. Isso garante que CodeQL sabe exatamente como compilar todos os arquivos de origem que você deseja digitalizar.
Para obter mais informações, confira "Verificação de código do CodeQL para linguagens compiladas".
Inspecionar a cópia dos arquivos de origem no banco de dados de CodeQL
Talvez você seja possa entender por que alguns arquivos de origem não foram analisados inspecionando a cópia do código-fonte incluído na base de dados de CodeQL. Para obter o banco de dados por meio do fluxo de trabalho do Actions, modifique a etapa init
do arquivo de fluxo de trabalho do CodeQL e defina debug: true
.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
debug: true
Isso faz o upload do banco de dados como um artefato de ações que você pode baixar para a sua máquina local. Para obter mais informações, confira "Armazenar dados do fluxo de trabalho como artefatos".
O artefato conterá uma cópia arquivada dos arquivos de origem verificados pelo CodeQL chamada src.zip. Se você comparar os arquivos do código-fonte no repositório e os arquivos no src.zip, poderá ver quais tipos de arquivos estão ausentes. Uma vez que você sabe quais tipos de arquivo não estão sendo analisados, é mais fácil entender como você pode precisar alterar o fluxo de trabalho para a análise de CodeQL.