À propos de l’analyse des langages compilés
Pour les langages compilés tels que C/C++, C#, Go, Java, Kotlin et Swift, CodeQL analyse uniquement les fichiers générés pendant l’analyse. 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 fonctionnalité
autobuild
de CodeQL utilise des heuristiques pour générer le code dans un dépôt. Toutefois, cette approche entraîne parfois une analyse incomplète d’un dépôt. Par exemple, quand plusieurs commandesbuild.sh
existent dans un même dépôt, l’analyse peut ne pas être terminée, car l’étapeautobuild
n’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 analyse CodeQL analyse moins de lignes de code que prévu, vous pouvez tenter de remplacer l’étape autobuild
par des commandes de génération si votre workflow contient une étape autobuild
, ou inspecter la copie des fichiers sources de la base de données CodeQL.
Remplacer l’étape autobuild
Remplacez le processus autobuild
par les commandes de génération que vous utiliseriez en production. Ainsi, CodeQL sait exactement comment compiler tous les fichiers sources que vous souhaitez analyser.
Pour plus d’informations sur la définition des étapes de génération, consultez « Analyse du code CodeQL pour les langages compilés ».
Inspecter la copie des fichiers sources dans la base de données CodeQL
Vous pourriez comprendre pourquoi certains fichiers sources n’ont pas été analysés en inspectant la copie du code source incluse dans la base de données CodeQL. Pour obtenir la base de données à partir de workflow Actions, modifiez l’étape init
de votre fichier de workflow CodeQL et définissez debug: true
.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
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 « Stockage et partage des données d’un workflow ».
L’artefact contient une copie archivée des fichiers sources analysés par CodeQL appelée 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 changer le workflow pour l’analyse CodeQL.