Skip to main content

Analyse du code trop longue

Vous pouvez ajuster CodeQL de façon à réduire le temps d’analyse.

Si l’exécution de la génération avec l’analyse CodeQL prend trop de temps, vous pouvez essayer de réduire le temps de génération.

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

Si vous utilisez des exécuteurs auto-hébergés pour exécuter l’analyse CodeQL, vous pouvez augmenter la mémoire ou le nombre de cœurs sur ces exécuteurs.

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

Le Workflow d’analyse CodeQL par défaut utilise une matrice de langages, ce qui entraîne l’exécution parallèle de l’analyse de chaque langage. Si vous avez spécifié les langages que vous souhaitez analyser directement à l’étape « Initialiser CodeQL », l’analyse de chaque langage se produit de manière séquentielle. Pour accélérer l’analyse de plusieurs langages, modifiez votre workflow de manière à utiliser une matrice. Pour en savoir plus, consultez l’extrait de workflow disponible 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é. Vous pouvez réduire le temps d’analyse en réduisant la quantité de code analysée simultanément, par exemple, en excluant le code de test ou en divisant l’analyse en plusieurs workflows qui analysent uniquement un sous-ensemble de votre code à la fois.

Pour les langages compilés tels que Java, Kotlin, Go, C, C++ et C#, CodeQL analyse l’ensemble du code généré au moment de l’exécution du workflow. 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 « Workflow syntax for GitHub Actions ».

Pour les langages tels que JavaScript, Python et TypeScript, que CodeQL analyse sans compiler le code source, vous pouvez spécifier des options de configuration supplémentaires afin de limiter la quantité de code à analyser. Pour plus d’informations, consultez « Personnalisation de votre configuration avancée pour l’analyse du code ».

Si vous divisez votre analyse en plusieurs workflows comme décrit ci-dessus, nous vous recommandons toutefois d’avoir au moins un workflow qui s’exécute sur un schedule qui analyse tout le code de votre dépôt. Étant donné que CodeQL analyse les flux de données entre les composants, certains comportements de sécurité complexes peuvent uniquement être détectés sur une génération complète.

Exécuter uniquement pendant un événement schedule

Si votre analyse est encore trop lente pour être exécutée pendant les événements push ou pull_request, vous pouvez limiter le déclenchement de l’analyse à l’événement schedule. Pour plus d’informations, consultez « Comprendre GitHub Actions ».

Vérifier quelles sont les suites de requêtes exécutées par le workflow

Par défaut, il existe trois suites de requêtes principales disponibles pour chaque langage. Si vous avez optimisé la génération de base de données CodeQL, et si 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 contient les requêtes de sécurité les plus rapides avec les taux les plus bas de faux résultats positifs.

Vous pouvez exécuter des suites de requêtes ou des requêtes supplémentaires 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 « Personnalisation de votre configuration avancée pour l’analyse du code ».

Remarque : Si vous exécutez la suite de requêtes security-extended ou security-and-quality pour JavaScript, certaines requêtes utilisent une technologie expérimentale. Pour plus d’informations, consultez « À propos des alertes d’analyse du code ».