Understanding Results
Terminal output structure
The default terminal output follows this hierarchy:
- CODYGIENE identity · scanner name and version
- Repository · scanned path
- Frameworks · detected technologies
- Capabilities · analysis features used
- Findings count and duration
- Analysis Coverage · files discovered, eligible, analyzed, skipped
- PARTIAL warning (if applicable) · shown before scores
- Scores · overall and per-category
- Findings · prioritized by severity and category
Coverage
Analysis Coverage
Files discovered: 452
Files eligible: 360
Files analyzed: 360
SQL files: 26
Files skipped: 0
Coverage: 100%
Status: COMPLETE
- Files discovered · all files found in the project
- Files eligible · discovered files that are supported source files
- Files analyzed · eligible files that were actually parsed
- SQL files · SQL migration files analyzed
- Files skipped · eligible files that could not be analyzed
- Coverage · percentage of eligible files analyzed
- Status ·
COMPLETEorPARTIAL
COMPLETE vs PARTIAL
- COMPLETE · all eligible files were analyzed. Scores are representative.
- PARTIAL · some files were skipped. A prominent warning appears:
⚠ PARTIAL SCAN · SCORES ARE NOT REPRESENTATIVE
Scores below derive from partial file coverage.
Do not treat these scores as a complete repository assessment.
Scores
Scores range from 0 to 100. Higher is better.
Score
Overall: 20
security 10 (96 findings)
performance 61 (29 findings)
code-health 10 (483 findings)
ai-quality 45 (36 findings)
The overall score is derived from category scores and finding penalties. See Scoring for the formula.
Findings
Findings are grouped by priority tier:
Priority 1: Critical/High Security, High Performance
Shown individually with full details:
CRITICAL [0.95 SAFE] CAND-007 Browser-role EXECUTE on SECURITY DEFINER function
at supabase/migrations/000004_security_hardening.sql:102:1
description: Function "has_org_membership" is declared SECURITY DEFINER...
impact: Browser clients can invoke privileged functions...
recommendation: Revoke EXECUTE from browser-facing roles...
fixability: AGENT_GUIDED id: CAND-007#4F92
Priority 2: Medium Security & AI Safeguard Divergence
Shown individually.
Priority 3: Medium Performance & Structural Code Health
Shown individually, capped at 50 findings.
Priority 4 & 5: Low-priority findings
Clustered by rule to avoid flooding the terminal:
Low-priority Code Health
27 × CH-HEALTH-002 · Oversized file (many effective lines)
12 in src/components/
8 in src/lib/
7 in src/api/
Use --format json to see all findings individually.
Finding fields
Each finding includes:
| Field | Description |
|---|---|
| Severity | critical, high, medium, low |
| Confidence | 0.0–1.0, how certain the rule is |
| Tier | SAFE, LIKELY, INVESTIGATE |
| Rule ID | e.g. CH-SEC-010 or CAND-025 |
| Title | Short description |
| File:line:column | Location in the source |
| Description | What was detected |
| Impact | Why it matters |
| Recommendation | How to fix it |
| Fixability | AUTO_FIXABLE, AGENT_GUIDED, MANUAL |
| Fingerprint | Stable hash for tracking across scans |
| Finding class | issue or insight (see below) |
Issues vs insights
Every finding has a findingClass of either issue or insight.
- Issues are ordinary findings: they count toward category scores,
participate in
--fail-onthresholds, and appear as regressions in baseline diffs. - Insights are informational observations · currently the architecture signals (CAND-029 change blast radius, CAND-032 workspace dependency cycles, CAND-033 cross-workspace dependency risk). They provide context for engineering review, not verdicts.
Insights:
- appear in every report format · terminal (marked
[INSIGHT]), JSON (findingClass: "insight"), SARIF (level: "note",kind: "informational"· nevererror), and Markdown (listed under an informational heading) - do not reduce scores
- do not trigger
--fail-on - do not count as release-gate or baseline-regression failures
Rule IDs
Rules have two families:
- CH-* · frozen Ruleset 1.0.0 rules (44 rules)
- CAND-* · candidate rules (26 rules, including architecture insights)
Most rules are enabled by default. 6 rules are disabled by default to reduce noise. See Rules and Scope for the full catalog and default profile.
Machine-readable reports
The terminal shows a prioritized subset. Machine-readable reports contain ALL findings:
codygiene scan --format json -o report.json
codygiene scan --format sarif -o report.sarif
codygiene scan --format markdown -o report.md
See Report Formats for details.
Spotted something wrong or missing? Send feedback