Skip to content

Releases: kojah/gohawk

gohawk v0.6.1

Choose a tag to compare

@github-actions github-actions released this 07 Oct 00:38

Full Changelog: v0.6.0...v0.6.1

gohawk v0.6.0

Choose a tag to compare

@github-actions github-actions released this 03 Oct 19:53

Full Changelog: v0.5.0...v0.6.0

gohawk v0.5.0

Choose a tag to compare

@github-actions github-actions released this 28 Sep 16:12

Breaking changes

  • Test files are no longer analyzed. gohawk checks production code only. The -gohawk-include-tests option is removed, and _test.go files are never analyzed or reported.
  • Analyzer options are removed. Every check has one behavior in every project. goroutineownership.mode, resourcelifetime.contracts, and the other analyzer flags no longer exist; choose what runs with the selection flags.
  • Retired checks:
    • the channelsafety analyzer
    • resourcelifetime/use-after-release
    • lockorder/recursive-acquire
    • the four experimental producerlifecycle checks: stopped-loop-send, unclosed-range, unsignalled-receiver, and unreceived-return
  • processownership/missing-wait is now experimental. It no longer runs by default; select it or use -tier=experimental.
  • The extended tier is removed. Checks are core (the default) or experimental.
  • The debugging views moved under gohawk dump: gohawk dump ssa, facts, and heap (which replaces -regions), plus the new budget, locks, and trace views. Their -tests option is removed.

Diagnostics

  • Findings lead with the message and draw their evidence as labeled source spans, joining evidence from one file into a single snippet.
  • Each finding cites the return path that leaks, the branch that decides it, and the loop or declaration involved, and ends with a one-line fix.
  • Diagnostics link to their analyzer's documentation page, and lockorder names locks by their source text.

Analysis

  • deferinloop reports a deferred resp.Body.Close() inside a loop when the response was acquired in that iteration.
  • resourcelifetime tracks both ends of os.Pipe and resources appended to local slices. It also treats Client.Get, Post, and PostForm responses as owned bodies, and credits helpers proven to close a resource, including helpers that release every element of a collection.
  • resourcelifetime settles a response whose Body is nil, and a helper that cleans up only when a Boolean flag selects it.
  • cancellationownership proves cancellation through imported helper summaries and credits a returned struct that owns the cancel function.
  • Fewer false positives across lockorder, goroutineownership, and resourcelifetime, from better handling of locally built values, receiver loads, generic instantiations, and unread done channels.
  • Results no longer depend on the order in which analyzers are scheduled.

Full Changelog: v0.4.0...v0.5.0

gohawk v0.4.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 02:33

Full Changelog: v0.3.6...v0.4.0

gohawk v0.3.6

Choose a tag to compare

@github-actions github-actions released this 21 Sep 02:56

Full Changelog: v0.3.5...v0.3.6

gohawk v0.3.5

Choose a tag to compare

@github-actions github-actions released this 21 Sep 02:27

Full Changelog: v0.3.4...v0.3.5

gohawk v0.3.4

Choose a tag to compare

@github-actions github-actions released this 21 Sep 01:40

Full Changelog: v0.3.3...v0.3.4

gohawk v0.3.3

Choose a tag to compare

@github-actions github-actions released this 18 Sep 02:31

Full Changelog: v0.3.2...v0.3.3

gohawk v0.3.2

Choose a tag to compare

@github-actions github-actions released this 14 Sep 16:32

Full Changelog: v0.3.1...v0.3.2

gohawk v0.3.1

Choose a tag to compare

@github-actions github-actions released this 11 Sep 17:02

Full Changelog: v0.3.0...v0.3.1