एक Rust CLI उपकरण जो पुनरावर्ती रूप से Git रिपॉजिटरी की खोज करता है, स्थिति परिवर्तनों को कैप्चर करता है, अंतर उत्पन्न करता है, पूर्ण स्निपेट के साथ कोड तत्वों को निकालता है, और कोड समीक्षा और ऑडिट वर्कफ़्लो के लिए सुरक्षा-केंद्रित रिपोर्ट तैयार करता है।
यदि यह परियोजना आपके काम में मदद करती है, तो चल रहे रखरखाव और नई सुविधाओं का समर्थन करें।
ETH दान वॉलेट
0x11282eE5726B3370c8B480e321b3B2aA13686582
ऊपर दिए गए QR कोड को स्कैन करें या वॉलेट पता कॉपी करें।
एक Rust CLI टूल जो Git रिपॉजिटरीज़ को पुनरावर्ती रूप से खोजता है, स्थिति परिवर्तनों को कैप्चर करता है, diffs उत्पन्न करता है, पूर्ण स्निपेट्स के साथ कोड तत्वों को निकालता है, और कोड समीक्षा एवं ऑडिट वर्कफ़्लो के लिए सुरक्षा-केंद्रित रिपोर्ट तैयार करता है।
केवल bash का उपयोग क्यों न करें?
ls | while read line; do git -C "$line" diff HEAD~1 HEAD || true; doneजैसी एक-पंक्ति केवल कच्चे diffs दिखाती है। DiffCatcher पुनरावर्ती खोज, कोड तत्व निष्कर्षण, सुरक्षा पैटर्न पहचान, CI/CD के लिए SARIF आउटपुट, समानांतर प्रसंस्करण और क्रॉस-रेपो सुरक्षा एकत्रीकरण जोड़ता है। पूर्ण तुलना के लिए नीचे पूर्ण तुलना देखें।
git clone https://github.com/Teycir/DiffCatcher.git
cd DiffCatcher
cargo build --release
./target/release/diffcatcher --help
# किसी निर्देशिका में सभी रिपॉजिटरी स्कैन करें (केवल fetch, कोई संशोधन नहीं)
diffcatcher ~/projects
# अपडेट पुल करें और सुरक्षा रिपोर्ट तैयार करें
diffcatcher ~/projects --pull -o ./report
# एकल रिपॉजिटरी में दो शाखाओं के बीच अंतर (PR समीक्षा मोड)
diffcatcher ./my-repo --diff main..feature/auth -o ./pr-report
# GitHub कोड स्कैनिंग के लिए SARIF आउटपुट तैयार करें
diffcatcher ~/projects --summary-format sarif,json -o ./report
# क्या स्कैन किया जाएगा यह देखने के लिए ड्राई रन
diffcatcher ~/projects --dry-run
# 8 समानांतर कार्यकर्ताओं के साथ तेज़ स्कैन
diffcatcher ~/projects -j 8 --quiet
# डिफ़ॉल्ट सेटिंग्स के साथ स्कैन करें (केवल fetch)
diffcatcher <ROOT_DIR>
# कस्टम आउटपुट निर्देशिका
diffcatcher ~/projects -o ./my-report
# नेस्टेड रिपॉजिटरी शामिल करें और सिमलिंक का अनुसरण करें
diffcatcher ~/projects --nested --follow-symlinks
# छिपी हुई निर्देशिकाओं को छोड़ें
diffcatcher ~/projects --skip-hidden
# केवल fetch (डिफ़ॉल्ट - कार्यरत ट्री में कोई बदलाव नहीं)
diffcatcher ~/projects
# वास्तव में परिवर्तन पुल करें
diffcatcher ~/projects --pull
# गंदी रिपॉजिटरी के लिए stash/pop के साथ फोर्स पुल
diffcatcher ~/projects --pull --force-pull
# rebase रणनीति का उपयोग करें
diffcatcher ~/projects --pull --pull-strategy rebase
# fetch/pull को पूरी तरह से छोड़ें (केवल ऐतिहासिक diffs)
diffcatcher ~/projects --no-pull
# तत्व निष्कर्षण छोड़ें (केवल कच्चे diffs)
diffcatcher ~/projects --no-summary-extraction
# तत्व निकालें लेकिन कोड स्निपेट छोड़ें
diffcatcher ~/projects --no-snippets
# स्निपेट संदर्भ और सीमाएँ समायोजित करें
diffcatcher ~/projects --snippet-context 10 --max-snippet-lines 300
# प्रति diff तत्वों को सीमित करें
diffcatcher ~/projects --max-elements 1000
# सुरक्षा टैगिंग छोड़ें
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 के साथ अक्षमउदाहरण:
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 दो प्रकार के प्लगइन का समर्थन करता है:
--security-plugin-file <FILE> (दोहराने योग्य) के माध्यम से--extractor-plugin-file <FILE> (दोहराने योग्य) के माध्यम सेसुरक्षा प्लगइन प्रारूप --security-tags-file JSON (version, mode, tags) से मेल खाता है।
एक्सट्रैक्टर प्लगइन प्रारूप:
{
"version": 1,
"extractors": [
{
"name": "policy-rule",
"kind": "Config",
"regex": "^policy\\s+([A-Za-z_][A-Za-z0-9_]*)"
}
]
}
# एकल रिपॉजिटरी में दो शाखाओं के बीच अंतर
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 को छोड़ देता है — यह सीधे दो refs (शाखाएँ, टैग, या कमिट SHA) के बीच अंतर करता है और परिणाम पर पूर्ण निष्कर्षण + सुरक्षा टैगिंग पाइपलाइन चलाता है।
# अन्य प्रारूपों के साथ 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 कोड स्कैनिंग, VS Code SARIF व्यूअर, Azure DevOps और अन्य SARIF-संगत टूल के साथ एकीकृत होती है।
# वृद्धिशील मोड (अपरिवर्तित रिपॉजिटरी को छोड़ें)
diffcatcher ~/projects --incremental -o ./report
# शाखा पैटर्न द्वारा फ़िल्टर करें
diffcatcher ~/projects --branch-filter "main"
# इतिहास गहराई समायोजित करें
diffcatcher ~/projects --history-depth 5