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 C/C++, C#, Go, Java, Kotlin, e Swift, CodeQL verifica apenas os arquivos que são compilados 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 sua análise do CodeQL está varrendo menos linhas de código do que o esperado, você pode tentar substituir a etapa autobuild por comandos de compilação se o seu fluxo de trabalho contiver uma etapa autobuild, ou inspecionar a cópia dos arquivos de origem no banco de dados do CodeQL.

Substitua a etapa autobuild

Substitua o processo autobuild pelos 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 saber mais sobre como definir as etapas de build, 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 saber mais, confira Armazenando e compartilhando dados de um fluxo de trabalho.

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.