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:
-
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 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@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 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.