Skip to main content

ovecc violations

Every architecture + rule finding in the current snapshot: boundary violations, banned imports, circular dependencies, security patterns, complexity, dead code, unit size — each with file:line evidence and a machine fix action. This is the CI artifact (--format sarif for GitHub code scanning, codeclimate for GitLab).

Usage: ovecc violations [OPTIONS]

Example

$ ovecc violations
Violations: 18

[Critical] Hardcoded secret: Stripe secret key
Rule: security/secret
Type: HardcodedSecret
Evidence: src/services/billing.ts:5 (Stripe secret key)

[High] Circular dependency: core -> services -> core
Rule: circular-dependency
Type: CircularDependency
Evidence: src/core/db.ts:2 (core -> services: ../services/billing)
Evidence: src/services/billing.ts:1 (services -> core: ../core/db)

[High] core -> services
Rule: core must stay foundational
Type: CrossDomainDependency
Evidence: src/core/db.ts:2 (../services/billing)

[Medium] Banned import: lodash*
Rule: banned-import/no-lodash
Type: ForbiddenImport
Evidence: src/utils/helpers.ts:1 (lodash/groupBy)

[Low] Unused export: refundSummary in src/services/reports.ts
Rule: unused-export
Type: UnusedExport
Evidence: src/services/reports.ts:16
...

Options

OptionEffect
--severity <level>Only show findings at or above low / medium / high / critical
--fail-on <medium|high|any>Exit 1 when a finding crosses the threshold (CI check)
--baselineHide findings recorded in .ovecc/baseline.json — only new ones
--write-baselineAccept the current findings as the baseline and exit
--changed-since <ref>Only findings touching files changed since this Git ref

Plus the global options. Formats additionally include sarif and codeclimate.

The baseline ratchet

ovecc violations --write-baseline # once: accept today's backlog
ovecc violations --baseline --fail-on any # CI: fail only on NEW findings

Findings are matched by content identity, so refactoring that merely moves an old finding doesn't defeat the baseline.

Change scoping

ovecc violations --changed-since origin/main

Progressive adoption on legacy codebases: gate the diff, not the backlog.

Machine formats

ovecc violations --format sarif > ovecc.sarif # GitHub code scanning
ovecc violations --format codeclimate > report.json # GitLab Code Quality
ovecc violations --format ndjson # one finding per line

NDJSON emits a meta record first (rule definitions), then one JSON object per finding — ideal for streaming pipelines. See output formats.