À 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 :
-
La CodeQL
autobuildfonctionnalité 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 commandesbuild.shexistent dans un même dépôt, l’analyse peut ne pas être terminée, car l’étapeautobuildn’exécute qu’une des commandes, ce qui peut empêcher la compilation de certains fichiers sources. -
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.