CodeScanner — マルチツール+AIによる静的解析スキャナ

Security

概要

CodeScannerはローカル/CI環境で動作する静的解析ツールチェーンを統合したプロジェクトです。既存のSASTツール(例:Bandit, Semgrep, ShellCheck, Gosec, Brakeman, SpotBugsなど)をまとめて実行し、その出力を集約・正規化したうえで、Google Geminiを用いたAI解析を追加でかけることで検出精度の向上やコンテキスト把握に役立てます。複数言語対応と拡張しやすいアーキテクチャを志向しており、CI/CDパイプラインへの組み込みやルール管理、結果の重複排除・スコアリングが想定されています(約300字)。

GitHub

リポジトリの統計情報

  • スター数: 4
  • フォーク数: 0
  • ウォッチャー数: 4
  • コミット数: 3
  • ファイル数: 9
  • メインの言語: Python

主な特徴

  • 17種類の業界標準SASTツールを統合して一括実行・集約
  • Google GeminiによるAI解析を追加して文脈理解と誤検知低減を狙う
  • マルチランゲージ対応(Python、Shell、Go、Ruby、Java等)とCI統合を想定
  • 拡張可能なアーキテクチャでツール追加や出力正規化が容易

技術的なポイント

CodeScannerは「ツールのオーケストレーション」と「出力ノーマライズ」を中核に据えた設計です。個々の静的解析ツールはそれぞれ異なる出力形式(テキスト、JSON、SARIF等)を持つため、まず各ツールのラッパーで実行・結果取得を行い、共通フォーマットへの変換(正規化)を行います。この段階で、重複する検出結果のマージや優先度スコアリング、フィルタリング(許容ルールやベースライン適用)を実施します。Google Geminiとの統合は、ノーマライズされた結果や該当ソースコードスニペットをAIに送るフローが想定され、AIは誤検知の判別、リスク評価の補助、検出理由の自然言語説明を返します。実装はPythonベースで、各種ツールの実行はローカルバイナリかコンテナでのラップが可能。結果の永続化やレポート出力(SARIFやHTML等)を用意すればCIパイプライン(GitHub Actions等)へ組み込みやすくなります。また、リポジトリ内に .chainlink や .claude などLLM連携を示唆するファイルがあることから、複数のLLM(Google Gemini以外にAnthropic Claude等)を切り替え可能なモジュール性を持たせる設計が想定されます。現状は初期実装段階でコミット数が少ないため、導入時はツール依存関係やAPIキー管理、レート制限・プライバシー(ソースコードを外部AIに送る場合の注意)を確認することが重要です。(約700字)

プロジェクトの構成

主要なファイルとディレクトリ:

  • .chainlink: dir
  • .claude: dir
  • .gitignore: file
  • README.md: file
  • claude.md: file

…他 4 ファイル

(想定される追加ファイル)

  • ツールラッパー/実行スクリプト(Pythonモジュール)
  • 結果正規化 / SARIF変換ロジック
  • LLM連携設定ファイル(APIキーの扱いは要注意)

使いどころと導入上の注意

  • 使いどころ: 複数のSASTツールを一括で実行して結果を集約したい開発チーム。CIに組み込み、Pull Requestの早期検出やスキャンの自動化に有効です。AI解析はレビュー負荷軽減やトリアージ改善に寄与します。
  • 注意点: Google Gemini等の外部LLMを使う場合、機密コードの送信ポリシー・コンプライアンスを必ず確認してください。各SASTツールのバージョン依存や言語サポートの差異、ローカル環境でのインストール手順もプロジェクト導入時に整備が必要です。現状ドキュメントは初期のため、カスタム設定やCI統合のテンプレートは自前で作る必要があるかもしれません。

まとめ

業界標準ツールとAIを組み合わせた拡張性の高いSAST統合フレームワーク候補。

リポジトリ情報:

READMEの抜粋:

CodeScanner

A multi-tool security vulnerability scanner that combines 17 industry-standard static analysis tools with AI-powered code scanning using Google Gemini.

Features

SAST (Static Application Security Testing)

  • Bandit - Python security linter
  • Semgrep - Multi-language static analysis with security rulesets
  • ShellCheck - Shell script static analysis
  • Gosec - Go security checker
  • Brakeman - Ruby on Rails security scanner
  • SpotBugs - Java security sca…