Releases: quality-gates/messgo
Releases · quality-gates/messgo
Release list
messgo 0.2.0
Immutable
release. Only release title and notes can be modified.
What's Changed
- Collapse Method/Function rule interfaces into a single FuncRule by @jonbaldie in #13
- Add model AST query vocabulary by @jonbaldie in #14
- Track Serena project metadata by @jonbaldie in #15
- Set up agent skills config: GitHub issue tracker, single-context docs by @jonbaldie in #16
- Install Matt Pocock's engineering skills as project skills by @jonbaldie in #17
- Configure triage label vocabulary for the triage skill by @jonbaldie in #18
- Mark triage labels as created on GitHub by @jonbaldie in #20
- Add git hooks mirroring CI: pre-commit fast checks, pre-push diff-scoped mutation by @jonbaldie in #21
- Automate immutable Homebrew releases by @jonbaldie in #23
Full Changelog: v0.1.9...v0.2.0
v0.1.9
Added
- New
Design/LackOfCohesionOfMethodsrule (messgo-native, no PHPMD analog) computing the LCOM4 cohesion metric per struct type: methods are linked when they use a common field or call one another through the receiver, and the metric is the number of disconnected method groups. A value above themaximumproperty (default 1) is reported — the type bundles unrelated responsibilities and could be split, one type per group. Methods that touch no state (pure helpers, interface stubs) and trivial getters/setters are excluded so plain data carriers and idiomatic Go helpers don't false-positive; a call to a getter counts as a use of the wrapped field. Included in the defaultgoruleset.
v0.1.8
Added
- Unit tests for the previously untested
internal/modelparser, covering package/class/interface/field/embed extraction, free-function vs. method classification (receiver, receiver name, owning class,AllFuncs), interface method signatures, parse-error handling, andexprStringtype rendering. Raises the package from 0% to ~78% statement coverage. No production code changes.
Full Changelog: v0.1.7...v0.1.8
v0.1.7
Changed
RenderMessageandCompileRegexnow reuse package-level compiled regexps instead of recompiling on every call.RenderMessageruns once per reported violation, so this removes a per-violation regex compilation from the hot path. Behaviour is unchanged.
Added
- Unit tests for the previously untested
internal/rulepackage, coveringRenderMessageplaceholder substitution and number formatting, the typedPropertiesaccessors (Int/Float/Bool/String),CompileRegex, andSortViolations.
Full Changelog: v0.1.6...v0.1.7
v0.1.6
Install
go install github.com/quality-gates/messgo/cmd/messgo@latestAdded
--enable/--onlyand--disableflags to run a subset of individual rules by name (comma-separated), filtered within the loaded ruleset(s):--only(alias--enable) keeps only the listed rules.--disabledrops the listed rules.- Combine them to whitelist, then subtract.
messgo ./... text codesize,design --only CyclomaticComplexity,GlobalVariable
messgo ./... text go --disable LongVariableSee CHANGELOG.md for the full history.
v0.1.5
Install
go install github.com/quality-gates/messgo/cmd/messgo@latestChanged
Design/GlobalVariableis now mutation-aware and far quieter. By default it reports only package-level variables that are actually mutated somewhere in the package (reassigned, incremented/decremented, written through viag.f/g[k], or address-taken). Effectively-constant globals — sentinel errors, compiled regexps, lookup tables — are no longer reported, so the genuinely risky shared state isn't drowned out. The newreport-immutable=trueproperty re-enables flagging read-only package-level variables.
Added
- Cross-file (package-wide) analysis. messgo now groups a package's files before running rules, so
GlobalVariablecorrectly classifies a variable declared in one file but mutated in another (util.MutatedGlobalNames,model.File.MutatedGlobals).
See CHANGELOG.md for the full history.
v0.1.4
Install
go install github.com/quality-gates/messgo/cmd/messgo@latestAdded
- New
Design/GlobalVariablerule (messgo-native, no PHPMD analog) that detects mutable package-level variables — global shared state that hurts testability and is unsafe under concurrency.- Inspects only top-level declarations, so local variables are never flagged.
- Constants and the blank identifier (
var _ = ...) are ignored; groupedvar (...)blocks and multi-name specs each flag every name. - Available via the
designandopinionatedrulesets. Excluded from the defaultgoruleset because some package-level variables are idiomatic in Go (sentinel errors, compiled regexps, registries).
See CHANGELOG.md for the full history.
v0.1.3
Install
go install github.com/quality-gates/messgo/cmd/messgo@latestAdded
- New opt-in
opinionatedruleset bundling the checks deliberately excluded from the defaultgoruleset for conflicting with idiomatic Go. Runmessgo ./... text opinionated, orgo,opinionatedto combine.
Changed
-
The default
goruleset no longer enables three rules that fight idiomatic Go:ElseExpression—elseis idiomatic in Go.BooleanArgumentFlag— boolean parameters are common in Go's own standard library.UnusedFormalParameter— unused parameters are routinely required to satisfy interfaces and standard signatures (e.g.http.HandlerFunc).
They remain available via their original rulesets (
cleancode,unusedcode) and the newopinionatedruleset.
See CHANGELOG.md for the full history.
v0.1.2
Install
go install github.com/quality-gates/messgo/cmd/messgo@latestFixed
- Duplicate violations from overlapping rulesets. Requesting rulesets that overlap — e.g.
go,codesize, where thegoruleset already importscodesize— previously reported every affected violation twice. Rules are now deduplicated by name across rulesets (first occurrence wins, preserving any tuning the earlier ruleset applied), so each violation is reported once.
See CHANGELOG.md for the full history.
v0.1.1
Install
go install github.com/quality-gates/messgo/cmd/messgo@latestFixed
- Corrected the embedded version string (reported by
--versionand in machine-readable JSON/XML/SARIF output) from1.0.0to0.1.1, so it matches the released git tag.
See CHANGELOG.md for the full history.