Releases: zero-dot-force/vibe-check
Releases · zero-dot-force/vibe-check
Release list
v0.1.0
Initial release: package-level design-quality and architectural metrics for Go.
Install
go install github.com/zero-dot-force/vibe-check/cmd/vibe-check@v0.1.0Added
vibe-check analyze [path]computes the Martin coupling metrics suite for a Go module — afferent coupling (Ca), efferent coupling (Ce), instability, abstractness, distance from the main sequence, LCOM4 cohesion, and circular-dependency detection — and prints the results as JSON on stdout (path defaults to.).- Go language adapter (
internal/goadapter/) implementing themetrics.Adapterinterface, usinggolang.org/x/tools/go/packagesfor type-aware dependency resolution. - CI gate threshold flags —
--max-instability,--max-distance,--max-lcom, and--no-circular-deps— so pipelines can fail the build (exit code 1) when a module breaches an architectural budget. All violations are reported before exit, and JSON is still written to stdout. --timeoutflag to bound analysis time (no timeout by default).--versionreporting version, commit, and build date. Binaries installed viago install ...@v0.1.0(built without ldflags) fall back toruntime/debugbuild info, so the reported version stays meaningful.- Go-specific metric extensions surfaced under the JSON
extensionsobject:go.interfaceWidth(method count per exported interface) andgo.interfaceProximity(producer/consumer classification). Extensions map[string]anyfield onModuleResultfor language-specific extension metrics.- CI workflow (
.github/workflows/ci.yml) running build, vet, test (with-raceand a coverage profile), and lint, using SHA-pinned GitHub Actions.
Changed
- Output JSON schema version bumped from
1.0to1.1to carry the optionalextensionsobject. Backward-compatible; existing 1.0 consumers need no migration. metrics.Validate()accepts both schema versions1.0and1.1, and now enforces numeric ranges (instability, abstractness, and distance in [0, 1]; counts non-negative).- The external-analyzer trust boundary (
ExternalAdapter.Analyze) now rejects unknown fields via a strict JSON decoder, hardening it against malformed subprocess output.
Full changelog: https://github.com/zero-dot-force/vibe-check/blob/main/CHANGELOG.md