Skip to main content

O CodeQL verificou menos linhas do que o esperado

Se o CodeQL tiver analisado menos código do que o esperado, talvez seja necessário usar um comando de build personalizado.

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:

  1. 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 comandos build.sh existem em um só repositório, talvez a análise não seja completa, pois a etapa autobuild executará apenas um dos comandos. Portanto, alguns arquivos de origem podem não ser compilados.

  2. 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@v3
  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.