CLI
ガイド
Scanverra CLI
@scanverra/cliを使えば、ターミナルやCIパイプラインから任意のコードベースをスキャンできます。スキャンは自分のマシン上で実行され、Scanverraに送信されるのはスキャン結果のみです。
クイックスタート
グローバルに何もインストールする必要はありません。scanverraコマンドを常設したい場合はnpm i -g @scanverra/cliを実行してください。
npx @scanverra/cli login # paste an API key from Dashboard > API keys npx @scanverra/cli scan .
仕組み
常に最新
個別にCLIのバージョンを管理したり手動でアップグレードしたりすることなく、常に最新のチェックが実行されます。
ダッシュボードと同じエンジン
どこで実行しても、Scanverraで開始したスキャンと同じ結果になります。
ローカルでスキャン
ソースファイルは自分のマシン上で読み込まれます。デフォルトではScanverraに送信されるのはスキャン結果のみで、ファイルの内容や該当したコード行は送信されません。
ダッシュボードに表示される
各スキャンにはAIが作成した要約とリンクが付き、ダッシュボードから開始したスキャンと同じ結果ページが表示されます。
コマンド
| コマンド | 説明 |
|---|---|
scanverra login | APIキーを確認して保存する |
scanverra logout | 保存済みのキーを削除する |
scanverra whoami | キーに紐づくアカウントとプランを表示する |
scanverra scan [path] | フォルダをスキャンし(デフォルトはカレントフォルダ)、結果を表示してアップロードする |
scanverra audit <url> | 公開中サイトの速度を監査。--budget付きでは保存済みの予算を超えると失敗 |
主なオプション
| オプション | 説明 |
|---|---|
--json / --sarif | 機械可読な出力。SARIFはGitHub code scanningやSonarのインポートに対応 |
--fail-on <severity> | この重大度以上の結果があれば失敗として終了する(デフォルト: high) |
--fail-on-new, --baseline-branch <name>, --baseline-commit <sha> | 前回アップロードしたスキャンと比べて、このスキャンで重大または高の問題が増えた場合にのみ失敗します(プルリクエスト向けの新規コードゲート)。--baseline-branch main を付けるとマージ先ブランチと比較します。そのブランチが一度もスキャンされていない場合は、重大・高の問題はすべて新規として扱われます。分岐元のコミットがわかる場合(git merge-base または --baseline-commit <sha>)は、そのコミットのスキャンと比較するため、後からマージ先ブランチで行われた修正は不利に数えられません。--fail-on の代わりに使い、アップロードが必要です |
--category <list> | security、dependency、iac、qualityのいずれかの結果のみを含める |
--exclude <glob> | 一致するパスをスキップする。.scanverraignoreファイルも同様に機能する |
--no-upload | スキャンのみを行い、結果をScanverraに送信しない |
--include-code | 各結果の該当コード行もアップロードする(デフォルトでは無効) |
--offline | ネットワーク通信を行わず、キャッシュ済みのルールを使用する |
--api-key, --api-url | 認証情報やサーバーを上書きする。CIで便利 |
--save-budget <file> | 監査:この実行から予算を保存(余裕を持たせた上限+許可するサードパーティ) |
--budget <file> | 監査:保存済みの予算と比較し、違反があれば終了コード1 |
アップロードされる内容
ファイルパス、行番号、ルールID、タイトル、説明、修正提案、重大度、依存パッケージ名とバージョン、およびプロジェクト名、ブランチ、コミット、PR番号。
ファイルの内容、および各結果の該当コード行。シークレットの検出結果にシークレットの値そのものが含まれることはありません。ダッシュボードで該当行を表示したい場合は--include-codeを指定してください。
対象ファイルの選び方
- Gitリポジトリ内では追跡済み・未追跡のファイルが対象となり、.gitignoreが尊重されます。Git外では一般的なビルドフォルダや依存関係フォルダはスキップされます。
- .scanverraignoreファイル(1行に1つのglobパターン)と、繰り返し指定できる--excludeフラグで、さらに除外を追加できます。
- 対象行の直前にscanverra-ignoreまたはnosecコメントを置くと、その1件の結果を抑制できます。
終了コード
| 0 | 成功。--fail-onのしきい値に達した結果はありません |
| 1 | しきい値に達した結果があった、--fail-on-gateでquality gateが失敗した、または--fail-on-newで重大・高の問題が増えた |
| 2 | 使用方法のエラー、サーバーがキーかプランを拒否した、または脆弱性データベースに接続できず結果を検証できなかった(再実行してください) |
CIでの利用
他のScanverra CI連携と同様にAPIキーをシークレットとして保存し、新しいランナーが毎回ルールを再ダウンロードしないようルールフォルダをキャッシュしてください。
- 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 }}実行間でルールをキャッシュする
- uses: actions/cache@v4
with:
path: ~/.cache/scanverra
key: scanverra-rules-${{ github.run_id }}
restore-keys: scanverra-rules-Webサイトのパフォーマンス予算
良いデプロイから作った予算をコミットします。以降の実行で、ページが遅く・重くなったり新しいサードパーティが増えたりするとビルドが失敗します。
# 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 }}トラブルシューティング
| メッセージ | 対処方法 |
|---|---|
Not logged in | scanverra loginを実行するか、SCANVERRA_API_KEYを設定してください |
API key was rejected | キーが間違っているか失効しています。API Keysで新しいキーを作成してください |
You have reached your free scan limit | 今月の無料Repo Scanner回数を使い切りました。--no-uploadでスキャンするか、翌月まで待つか、アップグレードしてください。 |
Daily limit for downloading the scanner rules reached | 上記の通りCIでルールフォルダをキャッシュしてください |
No scannable files found | パスと.gitignoreまたは.scanverraignoreを確認してください |
ターミナルからスキャンする準備はできましたか?
APIキーを発行して、1分以内に最初のスキャンを実行しましょう。