CLI
Guides
CLI Scanverra
Analysez n'importe quel code depuis votre terminal ou votre pipeline CI avec @scanverra/cli. L'analyse s'exécute sur votre propre machine, seuls les résultats sont envoyés à Scanverra.
Démarrage rapide
N'installez rien globalement, ou exécutez npm i -g @scanverra/cli pour obtenir une commande scanverra permanente.
npx @scanverra/cli login # paste an API key from Dashboard > API keys npx @scanverra/cli scan .
Fonctionnement
Toujours à jour
Vous exécutez toujours les vérifications les plus récentes, sans version de CLI séparée à suivre ou à mettre à jour manuellement.
Le même moteur que le tableau de bord
Les résultats correspondent à ceux d'une analyse lancée depuis Scanverra, quel que soit l'endroit où vous l'exécutez.
Analyse en local
Vos fichiers source sont lus sur votre propre machine. Par défaut, seuls les résultats sont envoyés à Scanverra, jamais le contenu des fichiers ni les lignes de code concernées.
Apparaît dans votre tableau de bord
Chaque analyse reçoit un résumé rédigé par IA et un lien, la même page de résultats qu'une analyse lancée depuis le tableau de bord.
Commandes
| Commande | Description |
|---|---|
scanverra login | Vérifie et enregistre votre clé API |
scanverra logout | Supprime la clé enregistrée |
scanverra whoami | Affiche le compte et le forfait associés à la clé |
scanverra scan [path] | Analyse un dossier (par défaut, le dossier courant), affiche les résultats et les envoie |
scanverra audit <url> | Audite la vitesse d'un site en ligne ; avec --budget, échoue si un budget enregistré est dépassé |
Options courantes
| Option | Description |
|---|---|
--json / --sarif | Sortie lisible par une machine. SARIF fonctionne avec GitHub code scanning et l'import Sonar |
--fail-on <severity> | Se termine en échec si un résultat de cette sévérité ou plus existe (par défaut : high) |
--fail-on-new, --baseline-branch <name>, --baseline-commit <sha> | Échoue seulement si cette analyse ajoute un problème critique ou élevé par rapport à l'analyse envoyée précédemment (le gate sur le nouveau code, pour les pull requests). Ajoutez --baseline-branch main pour comparer avec la branche cible. Si cette branche n'a jamais été analysée, chaque problème critique ou élevé compte comme nouveau. Quand il est connu, l'analyse du commit d'où part votre branche est utilisée (via git merge-base ou --baseline-commit <sha>), pour que les corrections arrivées ensuite sur la branche cible ne comptent pas contre vous. Remplace --fail-on ; nécessite un envoi |
--category <list> | N'inclure que les résultats security, dependency, iac ou quality |
--exclude <glob> | Ignore les chemins correspondants. Un fichier .scanverraignore fonctionne de la même façon |
--no-upload | Analyse uniquement, n'envoie pas les résultats à Scanverra |
--include-code | Envoie aussi la ligne de code concernée pour chaque résultat (désactivé par défaut) |
--offline | Utilise les règles en cache sans aucun appel réseau |
--api-key, --api-url | Remplace les identifiants ou le serveur, utile en CI |
--save-budget <file> | Audit : enregistre un budget à partir de cette exécution (limites avec marge + services tiers autorisés) |
--budget <file> | Audit : vérifie par rapport à un budget enregistré ; sortie 1 en cas de dépassement |
Ce qui est envoyé
Chemins de fichiers, numéros de ligne, identifiants de règle, titres, descriptions, suggestions de correction, sévérités, noms et versions des dépendances, ainsi que le nom du projet, la branche, le commit et le numéro de PR.
Le contenu des fichiers, et la ligne de code concernée pour chaque résultat. Les résultats de type secret ne contiennent jamais la valeur du secret elle-même. Passez --include-code si vous souhaitez voir les lignes concernées dans le tableau de bord.
Comment les fichiers sont choisis
- Dans un dépôt git, les fichiers suivis et non suivis sont utilisés, et .gitignore est respecté. En dehors de git, les dossiers habituels de build et de dépendances sont ignorés.
- Un fichier .scanverraignore (un motif glob par ligne) et des options --exclude répétables ajoutent d'autres exclusions.
- Supprimez un résultat précis avec un commentaire scanverra-ignore ou nosec sur la ligne précédente.
Codes de sortie
| 0 | Succès, et aucun résultat n'a atteint le seuil --fail-on |
| 1 | Un résultat a atteint le seuil, le quality gate a échoué avec --fail-on-gate, ou l'analyse a ajouté un problème critique ou élevé avec --fail-on-new |
| 2 | Erreur d'utilisation, le serveur a rejeté la clé ou le forfait, ou une base de vulnérabilités était injoignable et le résultat n'a pas pu être vérifié (relancez) |
Utilisation en CI
Stockez la clé API en tant que secret, comme pour toute autre intégration CI Scanverra, et mettez en cache le dossier des règles pour qu'un nouveau runner ne les retélécharge pas à chaque exécution.
- uses: actions/checkout@v7
- uses: actions/setup-node@v7
with: { node-version: 24 }
- run: npx @scanverra/cli scan . --fail-on high
env:
SCANVERRA_API_KEY: ${{ secrets.SCANVERRA_API_KEY }}Mettre les règles en cache entre les exécutions
- uses: actions/cache@v4
with:
path: ~/.cache/scanverra
key: scanverra-rules-${{ github.run_id }}
restore-keys: scanverra-rules-Budget de performance pour votre site
Committez un budget issu d'un bon déploiement. Chaque exécution suivante fait échouer le build si la page devient plus lente ou plus lourde, ou si un nouveau service tiers apparaît.
# once, from a good deploy:
scanverra audit https://staging.example.com --save-budget perf-budget.json
# in CI, after deploying a preview:
- run: npx scanverra audit "$PREVIEW_URL" --budget perf-budget.json
env:
SCANVERRA_API_KEY: ${{ secrets.SCANVERRA_API_KEY }}Dépannage
| Message | Que faire |
|---|---|
Not logged in | Exécutez scanverra login, ou définissez SCANVERRA_API_KEY |
API key was rejected | La clé est incorrecte ou a été révoquée. Créez-en une nouvelle dans API Keys |
You have reached your free scan limit | Vous avez utilisé les scans Repo Scanner gratuits de ce mois. Lancez le scan avec --no-upload, attendez le mois prochain ou passez à un forfait supérieur. |
Daily limit for downloading the scanner rules reached | Mettez le dossier des règles en cache en CI, voir ci-dessus |
No scannable files found | Vérifiez le chemin ainsi que votre .gitignore ou .scanverraignore |
Prêt à analyser depuis le terminal ?
Générez une clé API, puis lancez votre première analyse en moins d'une minute.