Il existe plusieurs approches permettant de réduire la durée de la génération dans une analyse de code scanning.
Augmenter la mémoire ou le nombre de cœurs
Si vous utilisez des exécuteurs hébergés par GitHub pour votre analyse de code scanning, envisagez la mise à niveau vers exécuteurs plus grands. Ce sont des exécuteurs hébergés par GitHub, avec plus de RAM, de processeur et d’espace disque que les exécuteurs 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 l’analyse de code scanning, vous pouvez augmenter la mémoire ou le nombre de cœurs sur ces exécuteurs. Si vous utilisez CodeQL avec la configuration avancée pour votre analyse, passez en revue les ressources matérielles recommandées pour CodeQL afin de vérifier que vos exécuteurs 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 ».
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. Toutefois, si vous utilisez CodeQL avec une configuration avancée et que vous avez spécifié les langages que vous souhaitez analyser directement à l’étape « Initialiser le 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.
Si vous divisez votre analyse de CodeQL 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 l’ensemble du code de votre référentiel. É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
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 analyse code scanning, vous pouvez le configurer avec un workflow de configuration avancée, mais pas dans la configuration par défaut. Pour plus d’informations, consultez « Comprendre 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.
CodeQL propose deux 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 offre le meilleur compromis possible entre la qualité et la vitesse.
Si vous utilisez CodeQL avec une configuration avancée, vous exécutez peut-être des requêtes ou des suites de 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 de code ».