Skip to content

feat: add scan findings diff between runs (--compare-to)#101

Open
kai-agent-free wants to merge 1 commit into
guard0-ai:mainfrom
kai-agent-free:feat/compare-to
Open

feat: add scan findings diff between runs (--compare-to)#101
kai-agent-free wants to merge 1 commit into
guard0-ai:mainfrom
kai-agent-free:feat/compare-to

Conversation

@kai-agent-free
Copy link
Copy Markdown

Closes #88

Summary

Adds --compare-to <baseline.json> flag to g0 scan that shows new, fixed, and unchanged findings compared to a previous scan.

Implementation

  • src/compare.ts — Core diff logic: fingerprinting (ruleId + file + snippet hash), baseline loading, finding comparison
  • src/reporters/compare-terminal.ts — Color-coded terminal output showing new ⚠, fixed ✓, and unchanged findings
  • src/cli/commands/scan.ts--compare-to option wired into scan command

Usage

# Save baseline
g0 scan . --json > baseline.json

# Compare later
g0 scan . --compare-to baseline.json

# JSON diff output
g0 scan . --compare-to baseline.json --json

Features

  • Finding fingerprinting via SHA-256 of ruleId + file + snippet (stable across line shifts)
  • Terminal diff: new findings (red), fixed findings (green), unchanged count
  • Score delta display when baseline has score data
  • JSON diff output with --json flag
  • Exit code 1 when new critical/high findings found (CI-friendly)
  • 10 unit tests covering fingerprinting, comparison, and baseline loading

- Support --hook-type (pre-commit, pre-push)
- Auto-detect hook manager (husky, lefthook, standalone)
- Support --hook-manager to override detection
- Support --min-severity to configure block threshold
- Warn if hooks already exist, --force to overwrite
- Generate executable hook scripts with bypass instructions

Closes guard0-ai#81
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add scan findings diff between runs (--compare-to)

1 participant