Skip to main content

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

Si CodeQL a 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 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 :

  1. 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 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 analyse CodeQL analyse moins de lignes de code que prévu, vous pouvez tenter de passer le mode de génération sur manual et spécifier les commandes de génération si votre workflow spécifie un mode de génération, 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.

Passer à un processus de génération manual

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 build, 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.