semantic-szz-analyzer
Identify bug-introducing commits using semantic analysis that extends traditional SZZ algorithm. Distinguishes semantic changes from refactorings or code movements using control-flow and data-flow similarity analysis. Use when analyzing bug-fix commits to trace back to bug-introducing changes, investigating software evolution, conducting empirical studies on defect prediction, or reducing false positives in bug localization. Supports git repositories and provides explanations for why commits are identified as bug-introducing.
npx skills add majiayu000/claude-skill-registry --skill semantic-szz-analyzer --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
# Semantic SZZ Analyzer ## Overview Semantic SZZ Analyzer extends the traditional SZZ (Sliwerski-Zimmermann-Zeller) algorithm by incorporating semantic analysis to identify bug-introducing commits more accurately. It distinguishes actual semantic changes from refactorings or code movements by analyzing control-flow and data-flow similarity across versions. ## Core Capabilities ### 1. Semantic Change Detection Analyze commits to distinguish between: - **Semantic changes**: Modifications that alter program behavior - **Refactorings**: Code restructuring without behavior changes - **Code movements**: Relocations of code blocks without semantic impact Use control-flow graphs (CFG) and data-flow analysis to compute similarity between code versions. ### 2. Bug-Introducing Commit Identification Given a bug-fix commit, trace back through git history to identify the commit that introduced the bug: 1. Extract changed lines from the bug-fix commit 2. Use `git blame` to find commits that last modified those lines 3. Apply semantic analysis to filter out false positives 4. Rank candidates by semantic similarity and temporal proximity ### 3. False Positive Reduction Traditional SZZ produces many
- Overview
- Core Capabilities
- 1. Semantic Change Detection
- 2. Bug-Introducing Commit Identification
- 3. False Positive Reduction
- Workflow
- Step 1: Analyze Bug-Fix Commit
- Step 2: Identify Candidate Commits
- Step 3: Apply Semantic Analysis
- Step 4: Filter and Rank Results
- Step 5: Generate Explanation
- Usage Examples
- Advanced Features
- Custom Similarity Thresholds
git blame -L <start>,<end> <file> <bug-fix-commit>^ python scripts/semantic_analyzer.py --repo <repo-path> --candidate <commit-hash> --fix <fix-commit-hash> python scripts/semantic_szz.py --repo /path/to/repo --fix-commit abc123 python scripts/batch_analyze.py --repo /path/to/repo --fixes-file bug_fixes.txt python scripts/semantic_szz.py --repo /path/to/repo --fix-commit abc123 --output report.json --explain python scripts/semantic_szz.py --repo /path/to/repo --issue JIRA-123
What does the semantic-szz-analyzer skill do?
Identify bug-introducing commits using semantic analysis that extends traditional SZZ algorithm. Distinguishes semantic changes from refactorings or code movements using control-flow and data-flow similarity analysis. Use when analyzing bug-fix commits to trace back to bug-introducing changes, investigating software evolution, conducting empirical studies on defect prediction, or reducing false positives in bug localization. Supports git repositories and provides explanations for why commits are identified as bug-introducing.
How do I install it?
Run `npx skills add majiayu000/claude-skill-registry --skill semantic-szz-analyzer --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From majiayu000/claude-skill-registry, a repository with 534 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.
