Skip to main content

Analyse du code trop longue

Vous pouvez affiner votre code scanning configuration pour réduire le temps d’analyse.

Il existe plusieurs approches que vous pouvez essayer pour réduire le temps de compilation lors d’une analyse code scanning.

Augmenter la mémoire ou le nombre de cœurs

Si vous utilisez des runners hébergés GitHub pour l’analyse code scanning, envisagez de passer à exécuteurs plus grands. Ce sont des runners hébergés sur GitHub avec davantage de mémoire vive, de processeur et d’espace disque que les runners standard. Pour plus d’informations sur exécuteurs plus grands et code scanning, consultez Utilisation des exécuteurs plus grands et Configuration de runners de plus grande capacité pour la configuration par défaut.

Si vous utilisez des exécuteurs auto-hébergés pour exécuter code scanning l’analyse, vous pouvez augmenter la mémoire ou le nombre de cœurs de ces exécuteurs. Si vous utilisez CodeQL avec une configuration avancée pour votre analyse, consultez les ressources matérielles recommandées pour CodeQL afin de vous assurer que vos runners auto-hébergés répondent à ces exigences. Pour plus d’informations, consultez « Ressources matérielles recommandées pour l’exécution de CodeQL ».

Utiliser des builds de matrice pour paralléliser l’analyse

Pour accélérer l’analyse des workflows qui impliquent plusieurs travaux, vous pouvez modifier votre workflow pour utiliser une matrice. Pour plus d’informations, consultez « Exécution de variantes de tâches dans un workflow ».

La valeur par défaut Workflow d’analyse CodeQL utilise une matrice de langages, ce qui entraîne l’analyse de chaque langage à s’exécuter en parallèle. Toutefois, si vous utilisez CodeQL une configuration avancée et que vous avez spécifié les langues que vous souhaitez analyser directement à l’étape « Initialiser CodeQL », l’analyse de chaque langage se produit de manière séquentielle. Dans cette configuration, vous pouvez accélérer votre analyse en modifiant votre workflow de configuration avancée pour utiliser une matrice. Pour obtenir un exemple, consultez l’extrait de workflow dans Certains langages n’ont pas été analysés avec l’installation avancée de CodeQL.

Réduire la quantité de code analysée dans un même workflow

La durée de l’analyse est généralement proportionnelle à la quantité de code analysé. Si vous utilisez CodeQL avec une configuration avancée, vous pouvez réduire le temps d’analyse en réduisant la quantité de code analysée à la fois. Par exemple, en excluant le code de test ou en découpant l’analyse en plusieurs workflows qui analysent uniquement un sous-ensemble de votre code à la fois.

Lorsque vous utilisez build-mode: autobuild ou build-mode: manual, pour des langages compilés tels que Java, Kotlin, Go, C, C++et C#, CodeQL analyse tout le code généré pendant l’exécution du flux de travail. Pour limiter la quantité de code analysée, générez uniquement le code que vous souhaitez analyser en spécifiant vos propres étapes de génération dans un bloc run. Vous pouvez simultanément spécifier vos propres étapes de génération et utiliser les filtres paths et paths-ignore sur les événements pull_request et push afin que votre workflow ne s’exécute que quand du code spécifique est modifié. Pour plus d’informations, consultez « Syntaxe de flux de travail pour GitHub Actions ».

Pour les langages tels que JavaScript, Python et TypeScript, que CodeQL analyse sans compiler le code source, ou pour un langage compilé utilisant build-mode: none, vous pouvez spécifier des options de configuration supplémentaires pour limiter la quantité de code à analyser. Pour plus d’informations, consultez « Options de configuration de flux de travail pour l’analyse du code ».

Si vous fractionnez votre CodeQL analyse en plusieurs flux de travail, nous vous recommandons toujours d’avoir au moins un flux de travail qui s’exécute sur un schedule qui analyse tout le code dans votre référentiel. Étant donné que CodeQL analyse les flux de données entre les composants, certains comportements de sécurité complexes ne peuvent être détectés que dans une version complète.

Exécuter uniquement pendant un événement schedule

Vous constaterez peut-être que votre analyse est lente pendant des événements push ou pull_request. Si c’est le cas, vous pouvez définir votre analyse pour qu’elle se déclenche uniquement sur l’événement schedule. Si vous utilisez CodeQL pour votre code scanning analyse, vous pouvez le configurer avec un flux de travail d’installation avancé, mais pas dans la configuration par défaut. Pour plus d’informations, consultez « Présentation des GitHub Actions ».

Vérifier les requêtes ou règles exécutées par le workflow

Une autre option permettant de réduire le temps d’analyse consiste à exécuter uniquement les requêtes ou les règles que vous considérez critiques dans les workflows qui s’exécutent sur des demandes de tirage. Si vous utilisez un outil tiers pour code scanning, reportez-vous à la documentation de l’outil.

Dans CodeQL, il existe deux suites de requêtes principales disponibles pour chaque langue. Si vous avez optimisé la CodeQL build de base de données et que le processus est encore trop long, vous pouvez réduire le nombre de requêtes que vous exécutez. La suite de requêtes par défaut est exécutée automatiquement : elle offre le meilleur compromis possible entre la qualité et la vitesse.

Si vous utilisez CodeQL avec une configuration avancée, il se peut que vous exécutiez des requêtes supplémentaires ou des suites de requêtes en plus des requêtes par défaut. Vérifiez si le workflow définit l’exécution d’une suite de requêtes supplémentaire ou de requêtes supplémentaires en utilisant l’élément queries. Vous pouvez tester la désactivation de la suite de requêtes ou des requêtes supplémentaires. Pour plus d’informations, consultez « Options de configuration de flux de travail pour l’analyse du code ».