Sobre a análise de linguagens compiladas
Quando os idiomas compilados são analisados usando o modo de autobuild ou de manual build, CodeQL verifica apenas os arquivos 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 CodeQL
autobuildrecurso usa heurística para criar 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.shexistem em um só repositório, talvez a análise não seja completa, pois a etapaautobuildexecutará 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 sua CodeQL análise examinar menos linhas de código do que o esperado, você poderá tentar alterar o modo manual de build e especificar comandos de build se o fluxo de trabalho especificar um modo de build, substituindo a autobuild etapa por comandos de build se o fluxo de trabalho contiver uma autobuild etapa ou inspecionando a cópia dos arquivos de origem no CodeQL banco de dados.
Alterar para um processo de build manual
Substitua o processo autobuild pelos mesmos comandos de build que serão usados em produção. Isso garante que CodeQL saiba exatamente como compilar todos os arquivos de origem que você deseja examinar.
Para obter mais informações sobre como especificar etapas de build, confira CodeQL code scanning for compiled languages.
Inspecionar a cópia dos arquivos de origem no CodeQL banco de dados
Talvez você possa entender por que alguns arquivos de origem não foram analisados inspecionando a cópia do código-fonte incluída no CodeQL banco de dados. Para obter o banco de dados do fluxo de trabalho do Actions, modifique a init etapa do arquivo de fluxo de CodeQL trabalho e defina debug: true.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
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 Armazenar e compartilhar dados com artefatos de fluxo de trabalho.
O artefato conterá uma cópia arquivada dos arquivos de origem escaneados por CodeQL chamados 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. Depois de saber quais tipos de arquivo não estão sendo analisados, é mais fácil entender como talvez seja necessário alterar o fluxo de trabalho para CodeQL análise.