Skip to main content

Moins de lignes analysées par CodeQL que prévu

Si CodeQL vous avez analysé moins de code que prévu, vous devrez peut-être utiliser une commande de build personnalisée.

À propos de l’analyse des langages compilés

Lorsque les langages compilés sont analysés à l’aide du mode de génération autobuild ou manual, CodeQL seuls les fichiers construits pendant l’analyse sont analysés. Ainsi, il y a moins de lignes de code analysées que prévu si une partie du code source n’est pas compilée correctement. Cela peut se produire pour plusieurs raisons :

  1. La CodeQLautobuild fonctionnalité utilise des heuristiques pour générer le code dans un référentiel. Toutefois, cette approche entraîne parfois une analyse incomplète d’un dépôt. Par exemple, quand plusieurs commandes build.sh existent dans un même dépôt, l’analyse peut ne pas être terminée, car l’étape autobuild n’exécute qu’une des commandes, ce qui peut empêcher la compilation de certains fichiers sources.

  2. Certains compilateurs ne fonctionnent pas avec CodeQL et peuvent provoquer des problèmes lors de l’analyse du code. Par exemple, la plupart des compilateurs C spécifiques au fournisseur ne sont pas reconnus par CodeQL. Le code C doit être compilé avec un compilateur reconnu (par exemple GCC, Clang ou MSVC) pour être analysé.

Si votre CodeQL analyse analyse moins de lignes de code que prévu, vous pouvez essayer de modifier le mode manual de génération et de spécifier des commandes de build si votre flux de travail spécifie un mode de génération, en remplaçant l’étape autobuild par les commandes de build si votre flux de travail contient une autobuild étape ou en inspectant la copie des fichiers sources dans la CodeQL base de données.

Passer à un processus de compilation manual

Remplacez le processus autobuild par les commandes de génération que vous utiliseriez en production. Cela garantit que CodeQL vous savez exactement comment compiler tous les fichiers sources que vous souhaitez analyser. Pour plus d’informations sur la définition des étapes de build, consultez Analyse CodeQL pour les langages compilés.

Inspecter la copie des fichiers sources dans la CodeQL base de données

Vous pouvez comprendre pourquoi certains fichiers sources n’ont pas été analysés en inspectant la copie du code source inclus dans la CodeQL base de données. Pour obtenir la base de données à partir de votre flux de travail Actions, modifiez l’étape init de votre CodeQL fichier de flux de travail et définissez debug: true.

- name: Initialize CodeQL
  uses: github/codeql-action/init@v4
  with:
    debug: true

Cette opération charge la base de données en tant qu’artefact d’actions que vous pouvez télécharger sur votre ordinateur local. Pour plus d’informations, consultez « Stocker et partager des données avec les artefacts de workflow ».

L’artefact contient une copie archivée des fichiers sources analysés par CodeQL_src.zip_. Si vous comparez les fichiers de code source dans le dépôt et les fichiers dans src.zip, vous pouvez voir quels types de fichiers sont manquants. Une fois que vous savez quels types de fichiers ne sont pas analysés, il est plus facile de comprendre comment vous devrez peut-être modifier le flux de travail pour CodeQL l’analyse.