Scan du code complet¶
Les prompts de revue travaillent sur ce que l'agent leur donne, souvent le diff d'une MR, et
scan_code est limité à SECREVIEW_MAX_CONTENT_CHARS par appel. Pour couvrir tout le
dépôt, utilisez le client de pipeline
security-review-ci scan-code : il lit les fichiers du dépôt et envoie leur contenu au
contrôleur, qui les scanne avec les règles de sa base.
export SECREVIEW_CONTROLLER_URL=https://secreview.example.com
export SECREVIEW_TOKEN=... # jeton ci limité au projet (ou jeton admin)
security-review-ci scan-code . --project portal # résumé texte, code de sortie 0/1/2
security-review-ci scan-code . --project portal --format json -o scan.json # pour le prompt codebase-review
security-review-ci scan-code . --project portal --format sarif -o code.sarif # GitHub code scanning, Jenkins...
security-review-ci scan-code . --project portal --save --commit "$CI_COMMIT_SHA"
Le pipeline n'a besoin ni de la base ni du paquet : seulement de Python et du
jeton ci du projet.
Sélection des fichiers¶
Le client choisit les fichiers ; le contrôleur ne lit jamais son propre disque.
- Les fichiers viennent de
git ls-files(suivis + non suivis non ignorés :.gitignoreest respecté). Hors dépôt git, ou avec--no-git, l'arborescence est parcourue en ignorantnode_modules,.venv,dist,build,target, etc. - Le langage est déduit du nom :
.py,.java,.ts,.js,.html(templates Angular),.yml/.yaml,.properties,.toml,.env*,Dockerfile*,Jenkinsfile,.gitlab-ci.yml. Les lockfiles,*.min.jset*.d.tssont ignorés. Seuls ces fichiers sont envoyés. - Fichiers ignorés :
--exclude GLOB(répétable, ex.--exclude tests/, seulement comptés), et, signalés, les fichiers au-delà de--max-file-bytes(1 Mio par défaut), les binaires et les liens symboliques.
Le contenu quitte l'agent de build
Le code source est envoyé au contrôleur (HTTPS, ou HTTP simple vers une adresse de bouclage
ou avec --allow-http). Excluez avec --exclude ce qui ne doit pas quitter l'agent.
Limites du contrôleur¶
| Variable | Défaut | Effet |
|---|---|---|
SECREVIEW_MAX_SCAN_REQUEST_MB |
64 |
Taille de la requête : au-delà, le contrôleur répond 413 (code de sortie 2) |
SECREVIEW_MAX_SCAN_FILES |
10000 |
Fichiers par requête : au-delà, 422 |
SECREVIEW_MAX_SCAN_FILE_CHARS |
1048576 |
Un fichier plus grand n'est pas scanné et figure parmi les fichiers ignorés |
Seuil et enregistrement¶
--fail-on(défauthigh) fixe le seuil de blocage ; les règles de la base et les marqueurssecreview:ignores'appliquent comme pourscan_code.--saveenregistre les correspondances comme un rapportcode-scan(au plusSECREVIEW_MAX_FINDINGS_PER_REPORTfindings, les plus sévères d'abord), avec la liste des fichiers non analysés dansscopeet le libellé du jeton comme appareil qui l'a enregistré ;--authorajoute le nom d'utilisateur du développeur (voir auteur d'un rapport),--repository,--branchet--commitle contexte.- Avec
--save --format sarif, le journal SARIF porte les identifiants des findings enregistrés.
Triez avant de bloquer
Les correspondances sont des pistes. Triez-les (prompt triage-report) avant de faire
dépendre une gate de ce rapport, sinon les faux positifs la bloqueront.
Revue guidée par l'agent¶
Ensuite, le prompt codebase-review (argument scan_results = le JSON, éventuellement filtré)
guide l'agent : inventaire, priorisation des points d'entrée, traçage des flux entre fichiers,
checklists, et une section couverture qui dit ce qui n'a pas été relu.