Skip to content

Releases: quality-gates/messgo

messgo 0.2.0

Choose a tag to compare

@github-actions github-actions released this 15 Jul 21:22
Immutable release. Only release title and notes can be modified.
54ea30f

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

Choose a tag to compare

@jonbaldie jonbaldie released this 10 Jun 07:06
db1198e

Added

  • New Design/LackOfCohesionOfMethods rule (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 the maximum property (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 default go ruleset.

v0.1.8

Choose a tag to compare

@jonbaldie jonbaldie released this 05 Jun 19:32
d11b717

Added

  • Unit tests for the previously untested internal/model parser, covering package/class/interface/field/embed extraction, free-function vs. method classification (receiver, receiver name, owning class, AllFuncs), interface method signatures, parse-error handling, and exprString type 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

Choose a tag to compare

@jonbaldie jonbaldie released this 05 Jun 19:12
da7f93b

Changed

  • RenderMessage and CompileRegex now reuse package-level compiled regexps instead of recompiling on every call. RenderMessage runs 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/rule package, covering RenderMessage placeholder substitution and number formatting, the typed Properties accessors (Int/Float/Bool/String), CompileRegex, and SortViolations.

Full Changelog: v0.1.6...v0.1.7

v0.1.6

Choose a tag to compare

@jonbaldie jonbaldie released this 05 Jun 13:20
492823e

Install

go install github.com/quality-gates/messgo/cmd/messgo@latest

Added

  • --enable / --only and --disable flags 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.
    • --disable drops the listed rules.
    • Combine them to whitelist, then subtract.
messgo ./... text codesize,design --only CyclomaticComplexity,GlobalVariable
messgo ./... text go --disable LongVariable

See CHANGELOG.md for the full history.

v0.1.5

Choose a tag to compare

@jonbaldie jonbaldie released this 05 Jun 12:08
c3f86a8

Install

go install github.com/quality-gates/messgo/cmd/messgo@latest

Changed

  • Design/GlobalVariable is 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 via g.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 new report-immutable=true property 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 GlobalVariable correctly 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

Choose a tag to compare

@jonbaldie jonbaldie released this 05 Jun 09:11
f911688

Install

go install github.com/quality-gates/messgo/cmd/messgo@latest

Added

  • New Design/GlobalVariable rule (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; grouped var (...) blocks and multi-name specs each flag every name.
    • Available via the design and opinionated rulesets. Excluded from the default go ruleset because some package-level variables are idiomatic in Go (sentinel errors, compiled regexps, registries).

See CHANGELOG.md for the full history.

v0.1.3

Choose a tag to compare

@jonbaldie jonbaldie released this 05 Jun 08:18
88646e5

Install

go install github.com/quality-gates/messgo/cmd/messgo@latest

Added

  • New opt-in opinionated ruleset bundling the checks deliberately excluded from the default go ruleset for conflicting with idiomatic Go. Run messgo ./... text opinionated, or go,opinionated to combine.

Changed

  • The default go ruleset no longer enables three rules that fight idiomatic Go:

    • ElseExpressionelse is 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 new opinionated ruleset.

See CHANGELOG.md for the full history.

v0.1.2

Choose a tag to compare

@jonbaldie jonbaldie released this 05 Jun 07:15
f9df65f

Install

go install github.com/quality-gates/messgo/cmd/messgo@latest

Fixed

  • Duplicate violations from overlapping rulesets. Requesting rulesets that overlap — e.g. go,codesize, where the go ruleset already imports codesize — 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

Choose a tag to compare

@jonbaldie jonbaldie released this 05 Jun 07:06
bd73c36

Install

go install github.com/quality-gates/messgo/cmd/messgo@latest

Fixed

  • Corrected the embedded version string (reported by --version and in machine-readable JSON/XML/SARIF output) from 1.0.0 to 0.1.1, so it matches the released git tag.

See CHANGELOG.md for the full history.