À propos des CodeQL packs
CodeQL les packs sont utilisés pour créer, partager, dépendre et exécuter CodeQL des requêtes et des bibliothèques. Vous pouvez personnaliser votre CodeQL analyse en téléchargeant des packs créés par d’autres utilisateurs et en les exécutant sur votre codebase.
Chaque CodeQL pack nécessite un qlpack.yml fichier dans son répertoire racine qui spécifie :
- Comment compiler les requêtes
- Dépendances sur d’autres CodeQL packs et bibliothèques
- Définitions de suite de requêtes
Pour plus d’informations sur les propriétés qlpack.yml, consultez Personnalisation de l’analyse avec des packs CodeQL.
En outre, un CodeQL pack peut contenir :
- Requêtes personnalisées (fichiers
.ql) - Fichiers de bibliothèque
- Suites de requêtes
- Métadonnées
Le pack CodeQL CLI comprend des requêtes maintenues par des experts GitHub, des chercheurs en sécurité et des membres de la communauté. Si vous souhaitez exécuter des requêtes développées par d’autres organisations, CodeQL les packs de requêtes fournissent un moyen efficace et fiable de télécharger et d’exécuter des requêtes, tandis que les packs de modèles (préversion publique) peuvent être utilisés pour développer code scanning l’analyse pour reconnaître les bibliothèques et les frameworks qui ne sont pas pris en charge par défaut.
Types de CodeQL packs
Il existe trois types de packs : packs de CodeQL requête, packs de bibliothèque et packs de modèles.
-
Les packs de requêtes contiennent un ensemble de requêtes précompilées qui peuvent être évaluées sur une CodeQL base de données. Les packs de requêtes sont conçus pour être exécutés. Quand un pack de requêtes est publié, le paquet inclut toutes les dépendances transitives et les représentations pré-compilées de chaque requête en plus des sources des requêtes. Ceci garantit une exécution cohérente et efficace des requêtes dans le pack.
-
Les packs de bibliothèques sont conçus pour être utilisés par des packs de requêtes (ou d’autres packs de bibliothèques) et ne contiennent pas de requêtes. Les bibliothèques ne sont pas compilées séparément.
-
Les packs de modèles peuvent être utilisés pour développer code scanning l’analyse pour reconnaître les bibliothèques et les frameworks qui ne sont pas pris en charge par défaut. Les packs de modèles sont actuellement préversion publique et susceptibles d’être modifiés. Pendant préversion publique, des packages de modèles sont disponibles pour l’analyse C/C++, C#, Java/Kotlin, Python, Ruby et Rust. Pour plus d'informations sur la création de vos propres packs de modèles, consultez Création et utilisation de packs CodeQL.
Où trouver des packs de requêtes
Les packs standard CodeQL pour toutes les langues prises en charge sont publiés dans le Container registry. Si vous avez installé le CodeQL CLI de manière standard, à l’aide du pack CodeQL CLI, les packs de requêtes de base sont déjà téléchargés et à votre disposition. Elles sont les suivantes :
codeql/cpp-queriescodeql/csharp-queriescodeql/go-queriescodeql/java-queriescodeql/javascript-queriescodeql/python-queriescodeql/ruby-queriescodeql/swift-queries
Pour plus d’informations sur la compatibilité entre les packs de requêtes publiés et différentes CodeQL versions, consultez Informations de référence sur les packs de requêtes CodeQL.
Vous pouvez également utiliser l’option CodeQL CLI pour créer vos propres CodeQL packs, ajouter des dépendances aux packs et installer ou mettre à jour les dépendances.
Publication et partage CodeQL de packs
Vous pouvez partager des requêtes personnalisées avec la communauté plus large CodeQL en effectuant les actions suivantes :
- Publication sur GitHub Packages: Rendre votre pack publiquement disponible pour que d’autres utilisateurs découvrent et utilisent.
- Contribuer au dépôt CodeQL : soumettez des requêtes qui seraient utiles à l’ensemble de la communauté en ouvrant une pull request dans le dépôt officiel.
Pour plus d’informations sur la publication et le téléchargement CodeQL de packs, consultez Publication et utilisation de packs CodeQL.
Pour plus d’informations sur la contribution à CodeQL, consultez Contribution à CodeQL.