Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
DiffCatcher — Gitリポジトリを再帰的に検出し、状態変更をキャプチャし、差分を生成し、完全なスニペットを含むコード要素を抽出し、コードレビューと監査ワークフロー向けのセキュリティ重視レポートを作成するRust製CLIツールです。 | Kitploit
ツール/GitHubGitHub/teycir/diffcatcher
静的分析脆弱性分析コード分析スクリプトと自動化情報収集DevSecOpsユーティリティとフレームワークシークレット検出設定ミスログ分析
GitHubteycir/diffcatcher

DiffCatcher

445ヶ月前未レビュー

Gitリポジトリを再帰的に検出し、状態変更をキャプチャし、差分を生成し、完全なスニペットを含むコード要素を抽出し、コードレビューと監査ワークフロー向けのセキュリティ重視レポートを作成するRust製CLIツールです。

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

開発支援

このプロジェクトがあなたの仕事に役立っているなら、継続的なメンテナンスと新機能の開発を支援してください。

ETH 寄付ウォレット
0x11282eE5726B3370c8B480e321b3B2aA13686582

イーサリアム寄付用QRコード

上記のQRコードをスキャンするか、ウォレットアドレスをコピーしてください。

DiffCatcher ロゴ

Rust License Security

Rust製CLIツール。Gitリポジトリを再帰的に検出し、状態変更をキャプチャ、差分を生成、コード要素を完全スニペット付きで抽出、コードレビューや監査ワークフロー向けのセキュリティ重視レポートを出力します。


🎯 主な機能

  • リポジトリ検出: 設定可能なフィルタでディレクトリを再帰的にスキャンしGitリポジトリを発見
  • 状態追跡: プル前後の状態をコミットハッシュ、メッセージ、ダーティ検出と共にキャプチャ
  • 差分生成: N vs N-1および過去差分の自動生成、ファイルマニフェスト付き
  • 要素抽出: 10以上の言語に対応し、関数、構造体、クラス、インポートなどを差分から解析
  • コードスニペット: 境界検出とコンテキストウィンドウで変更前後の完全なコードを抽出
  • セキュリティタグ付け: 18の組み込みセキュリティパターン(暗号、認証、秘密情報、SQLインジェクション、XSSなど)
  • マルチフォーマットレポート: JSON、Markdown、テキスト、SARIF出力、リポジトリ横断のセキュリティ概要
  • ブランチ差分モード: 単一リポジトリ内の任意の2つの参照(ブランチ、タグ、コミット)を差分 — PRレビューに最適
  • パフォーマンス: プログレスバー、LRUキャッシュ、インクリメンタルモードによる並列処理
  • なぜ単にbashを使わないのか?

    ls | while read line; do git -C "$line" diff HEAD~1 HEAD || true; done のようなワンライナーは生の差分しか表示しません。 DiffCatcherは再帰的検出、コード要素抽出、セキュリティパターン検出、 CI/CD向けSARIF出力、並列処理、リポジトリ横断のセキュリティ集約を追加します。 詳細な比較は以下のbash比較を参照してください。

    📋 目次

    • インストール
    • クイックスタート
    • 使い方
      • 基本スキャン
      • プルモード
      • 抽出オプション
      • セキュリティタグ付け
      • 設定ファイル
      • プラグインシステム
      • ブランチ差分モード(PRレビュー)
      • SARIF出力
      • 高度な機能
    • レポート構造
    • 設定
    • アーキテクチャ
    • テスト
    • ドキュメント
    • 貢献

    🚀 インストール

    ソースから

    root@kitploit:~
    git clone https://github.com/Teycir/DiffCatcher.git
    cd DiffCatcher
    cargo build --release
    ./target/release/diffcatcher --help
    

    必要条件

    • Rust 1.70以上
    • Git 2.0以上

    ⚡ クイックスタート

    root@kitploit:~
    # ディレクトリ内の全リポジトリをスキャン(fetchのみ、変更なし)
    diffcatcher ~/projects
    
    # プル更新してセキュリティレポートを生成
    diffcatcher ~/projects --pull -o ./report
    
    # 単一リポジトリ内の2つのブランチを差分(PRレビューモード)
    diffcatcher ./my-repo --diff main..feature/auth -o ./pr-report
    
    # GitHub Code Scanning向けSARIF出力を生成
    diffcatcher ~/projects --summary-format sarif,json -o ./report
    
    # ドライラン:何がスキャンされるか確認
    diffcatcher ~/projects --dry-run
    
    # 8並列ワーカーで高速スキャン
    diffcatcher ~/projects -j 8 --quiet
    

    📖 使い方

    基本スキャン

    root@kitploit:~
    # デフォルト設定でスキャン(fetchのみ)
    diffcatcher <ROOT_DIR>
    
    # カスタム出力ディレクトリ
    diffcatcher ~/projects -o ./my-report
    
    # ネストされたリポジトリを含め、シンボリックリンクを追跡
    diffcatcher ~/projects --nested --follow-symlinks
    
    # 隠しディレクトリをスキップ
    diffcatcher ~/projects --skip-hidden
    

    プルモード

    root@kitploit:~
    # Fetchのみ(デフォルト、ワーキングツリーは変更なし)
    diffcatcher ~/projects
    
    # 実際にプルを実行
    diffcatcher ~/projects --pull
    
    # ダーティリポジトリでstash/popを強制プル
    diffcatcher ~/projects --pull --force-pull
    
    # rebase戦略を使用
    diffcatcher ~/projects --pull --pull-strategy rebase
    
    # fetch/pullを完全にスキップ(過去差分のみ)
    diffcatcher ~/projects --no-pull
    

    抽出オプション

    root@kitploit:~
    # 要素抽出をスキップ(生の差分のみ)
    diffcatcher ~/projects --no-summary-extraction
    
    # 要素は抽出するがコードスニペットはスキップ
    diffcatcher ~/projects --no-snippets
    
    # スニペットのコンテキストと制限を調整
    diffcatcher ~/projects --snippet-context 10 --max-snippet-lines 300
    
    # 差分あたりの要素数を制限
    diffcatcher ~/projects --max-elements 1000
    

    セキュリティタグ付け

    root@kitploit:~
    # セキュリティタグ付けをスキップ
    diffcatcher ~/projects --no-security-tags
    
    # テストファイルもセキュリティ分析に含める
    diffcatcher ~/projects --include-test-security
    
    # カスタムセキュリティパターンを使用
    diffcatcher ~/projects --security-tags-file ./custom-patterns.json
    

    設定ファイル

    DiffCatcherはプロジェクトローカルの設定を自動読み込みします:

    • <ROOT_DIR>/.diffcatcher.toml (デフォルト)
    • --config <FILE> でカスタムファイル
    • --no-config で無効化

    例:

    root@kitploit:~
    output = "reports-local"
    no_pull = true
    history_depth = 2
    summary_formats = ["json", "txt"]
    no_security_tags = false
    
    [plugins]
    security_pattern_files = ["plugins/security-extra.json"]
    extractor_files = ["plugins/extractors.json"]
    

    CLIフラグは明示的に設定された場合、設定値を上書きします。

    プラグインシステム

    DiffCatcherは2種類のプラグインをサポート:

    • セキュリティパターンプラグイン: --security-plugin-file <FILE> (繰り返し可)
    • 抽出プラグイン: --extractor-plugin-file <FILE> (繰り返し可)

    セキュリティプラグインの形式は --security-tags-file JSON (version, mode, tags) と同様です。

    抽出プラグインの形式:

    root@kitploit:~
    {
      "version": 1,
      "extractors": [
        {
          "name": "policy-rule",
          "kind": "Config",
          "regex": "^policy\\s+([A-Za-z_][A-Za-z0-9_]*)"
        }
      ]
    }
    

    ブランチ差分モード(PRレビュー)

    root@kitploit:~
    # 単一リポジトリ内の2つのブランチを差分
    diffcatcher ./my-repo --diff main..feature/auth
    
    # 特定のコミットを差分
    diffcatcher ./my-repo --diff abc123..def456
    
    # CI統合用SARIF出力で差分
    diffcatcher ./my-repo --diff origin/main..HEAD --summary-format sarif -o ./pr-report
    

    --diff BASE..HEAD フラグはリポジトリ検出とfetch/pullをスキップし、直接2つの参照(ブランチ、タグ、またはコミットSHA)を差分し、結果に対して完全な抽出+セキュリティタグ付けパイプラインを実行します。

    SARIF出力

    root@kitploit:~
    # 他の形式と一緒にSARIFを生成
    diffcatcher ~/projects --summary-format sarif,json,md
    
    # CI/CDアップロード用にSARIFのみ
    diffcatcher ~/projects --summary-format sarif -o ./report
    

    --summary-format に sarif が含まれている場合、レポートルートに results.sarif ファイルが書き込まれます。このファイルは SARIF 2.1.0 標準に従い、GitHub Code Scanning、VS Code SARIF Viewer、Azure DevOps、その他のSARIF互換ツールと統合できます。

    高度な機能

    root@kitploit:~
    # インクリメンタルモード(変更のないリポジトリをスキップ)
    diffcatcher ~/projects --incremental -o ./report
    
    # ブランチパターンでフィルタ
    diffcatcher ~/projects --branch-filter "main"
    
    # 履歴深度を調整
    diffcatcher ~/projects --history-depth 5
    
    # CI/CD用JSON出力
    diffcatcher ~/projects --quiet --json > result.json
    
    # 発見したパスの詳細出力
    diffcatcher ~/projects --verbose
    

    📁 レポート構造

    root@kitploit:~
    <report_dir>/
    ├── summary.json                    # 全体サマリー
    ├── summary.md                      # Markdownサマリー
    ├── results.sarif                   # SARIF 2.1.0出力 (--summary-format sarif 時)
    ├── security_overview.json          # リポジトリ横断セキュリティ集約
    ├── security_overview.md
    ├── <repo-name>/
    │   ├── status.json                 # リポジトリ状態
    │   ├── pull_log.txt
    │   └── diffs/
    │       ├── diff_N_vs_N-1.patch     # 生の統合差分
    │       ├── changes_N_vs_N-1.txt    # ファイルマニフェスト
    │       ├── summary_N_vs_N-1.json   # 要素抽出
    │       ├── summary_N_vs_N-1.md
    │       └── snippets/
    │           ├── 001_validate_token_ADDED.rs
    │           ├── 002_check_permissions_BEFORE.rs
    │           ├── 002_check_permissions_AFTER.rs
    │           └── 002_check_permissions.diff
    └── ...
    

    ⚙️ 設定

    CLIフラグ

    フラグデフォルト説明
    -o, --output./reports/<timestamp>レポート出力ディレクトリ
    -j, --parallel4同時リポジトリ処理数
    -t, --timeout120Git操作のタイムアウト(秒)
    -d, --history-depth2差分対象の過去コミット数
    --snippet-context5変更前後のコンテキスト行数
    --max-snippet-lines200スニペットあたりの最大行数
    --max-elements500差分あたりの最大要素数
    --diff—単一リポジトリ内の2つの参照を差分 (BASE..HEAD)
    --summary-formatjson,md出力形式: json, md, txt, sarif

    全オプションは diffcatcher --help を参照してください。

    カスタムセキュリティパターン

    カスタムパターンを定義したJSONファイルを作成:

    root@kitploit:~
    {
      "version": 1,
      "mode": "extend",
      "tags": [
        {
          "tag": "pii-handling",
          "description": "PIIデータ処理",
          "severity": "High",
          "patterns": ["ssn", "social_security", "passport"]
        }
      ]
    }
    

    --security-tags-file ./patterns.json で使用。

    🏗️ アーキテクチャ

    root@kitploit:~
    src/
    ├── cli.rs              # 引数解析
    ├── scanner.rs          # リポジトリ検出
    ├── git/                # Git操作
    │   ├── commands.rs     # Gitラッパー
    │   ├── state.rs        # 状態キャプチャ
    │   ├── diff.rs         # 差分生成
    │   └── file_retrieval.rs
    ├── extraction/         # 要素抽出
    │   ├── parser.rs       # 統合差分パーサー
    │   ├── elements.rs     # 要素検出
    │   ├── snippets.rs     # コードスニペット抽出
    │   ├── boundary.rs     # 括弧/インデント追跡
    │   └── languages/      # 言語固有パターン
    ├── security/           # セキュリティタグ付け
    │   ├── tagger.rs       # パターンマッチング
    │   ├── patterns.rs     # 組み込みパターン
    │   └── overview.rs     # リポジトリ横断集約
    └── report/             # レポート生成
        ├── writer.rs       # ディレクトリ構造
        ├── json.rs         # JSONシリアライズ
        ├── sarif.rs        # SARIF 2.1.0出力
        ├── markdown.rs     # Markdownフォーマット
        └── snippet_writer.rs
    

    Bash比較

    シンプルなbashワンライナーで差分を表示できます:

    root@kitploit:~
    ls | while read line; do git -C "$line" diff HEAD~1 HEAD || true; done
    

    これは簡単な確認には有効ですが、DiffCatcherは以下のような高度な機能を追加します:

    機能BashワンライナーDiffCatcher
    再帰的検出トップレベルのみネストリポジトリ、シンボリックリンク、フィルタ
    状態追跡なしコミットハッシュ、ダーティ検出、プルログ
    コード理解生差分のみ10以上の言語で関数/構造体/クラスを抽出
    コードスニペットなしコンテキストウィンドウ付きの完全なbefore/after
    セキュリティ分析なし18の組み込みパターン(認証、暗号、秘密情報、SQLi、XSS)
    出力形式ターミナルのみJSON、Markdown、SARIF(GitHub Code Scanning)
    リポジトリ横断ビュー個別リポジトリのみ全リポジトリの集約セキュリティレポート
    パフォーマンス逐次並列ワーカー、LRUキャッシュ、インクリメンタルモード
    CI/CD統合なしSARIFアップロード(GitHub/Azure DevOps)
    エラーハンドリング`
    パス処理スペースで失敗すべてのパス名を正しく処理
    履歴コンテキスト固定HEAD~1設定可能な深度、状態追跡

    bashワンライナーは約100バイトです。DiffCatcherは完全なコード要素抽出を備えたセキュリティ重視の監査ツールです。

    🧪 テスト

    root@kitploit:~
    # 全テストを実行
    cargo test
    
    # 特定のテストスイートを実行
    cargo test security_tagger
    
    # 出力を表示して実行
    cargo test -- --nocapture
    

    テストカバレッジ:

    • ユニットテスト: 抽出、セキュリティタグ付け、境界検出
    • 統合テスト: 状態キャプチャ、差分生成、レポート
    • ゴールデンファイルテスト: 抽出精度
    • エッジケーステスト(detached HEAD、ベアリポジトリ、単一コミット)

    パフォーマンスベンチマーク

    root@kitploit:~
    # ベンチマークバイナリをコンパイル
    cargo bench --no-run
    
    # ベンチマークハーネスを実行
    cargo bench --bench core_bench
    

    ベンチマークソースは benches/core_bench.rs にあり、パーサー/抽出のスループットを追跡します。

    CI/CD

    GitHub Actionsワークフローが含まれています:

    • .github/workflows/ci.yml: フォーマットチェック、clippy、テスト、ベンチマークビルド
    • .github/workflows/release.yml: タグベースのリリースパッケージングとGitHubリリース公開

    📚 ドキュメント

    プロジェクトドキュメント

    • Plan.md - 完全な仕様書 (v1.2)
    • Roadmap.md - 実装ロードマップと進捗
    • セキュリティパターンリファレンス(src/security/patterns.rs 参照)

    コードドキュメント

    全モジュールに包括的なインラインドキュメントがあります。主要モジュール:

    • src/extraction/parser.rs - ハンク抽出付き統合差分パーサー
    • src/extraction/elements.rs - 言語認識コード要素検出
    • src/extraction/snippets.rs - 境界検出付き完全コードスニペット抽出
    • src/security/tagger.rs - セキュリティパターンマッチングエンジン
    • src/git/commands.rs - Git操作ラッパー

    完全なAPIドキュメントの生成:

    root@kitploit:~
    cargo doc --open
    

    🏷️ タグ

    #rust #git #security #code-review #diff-analysis #static-analysis #devops #cli-tool #audit #vulnerability-detection #code-quality #snippet-extraction #parallel-processing #security-scanning

    🤝 貢献

    貢献を歓迎します!以下の手順でお願いします:

    1. リポジトリをフォーク
    2. フィーチャーブランチを作成
    3. 新機能にはテストを追加
    4. cargo test が通ることを確認
    5. プルリクエストを送信

    📄 ライセンス

    MITライセンス - 詳細はLICENSEファイルを参照

    📧 連絡先

    • 作者: Teycir Ben Soltane
    • メール: [email protected]
    • ウェブサイト: teycirbensoltane.tn

    🔗 リンク

    • GitHubリポジトリ
    • Issue Tracker
    • 変更履歴
    ツールをダウンロード