Skip to content
SEO Optimizer is live, Audit on page SEO and AI-search readiness. Try it free
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.

Nécessite Node.js 18 ou plus récent et une clé API Scanverra. Le forfait Free en inclut une.

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

CommandeDescription
scanverra loginVérifie et enregistre votre clé API
scanverra logoutSupprime la clé enregistrée
scanverra whoamiAffiche 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

OptionDescription
--json / --sarifSortie 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-uploadAnalyse uniquement, n'envoie pas les résultats à Scanverra
--include-codeEnvoie aussi la ligne de code concernée pour chaque résultat (désactivé par défaut)
--offlineUtilise les règles en cache sans aucun appel réseau
--api-key, --api-urlRemplace 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é

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.

Non envoyé par défaut

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

0Succès, et aucun résultat n'a atteint le seuil --fail-on
1Un 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
2Erreur 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

MessageQue faire
Not logged inExécutez scanverra login, ou définissez SCANVERRA_API_KEY
API key was rejectedLa clé est incorrecte ou a été révoquée. Créez-en une nouvelle dans API Keys
You have reached your free scan limitVous 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 reachedMettez le dossier des règles en cache en CI, voir ci-dessus
No scannable files foundVé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.