Skip to content
master
Switch branches/tags
Go to file
Code

Latest commit

Use analysis.Analyzer.

This will make is simpler to embed the check into golangci-lint and other similar use cases. It also simplifies the code and the testing logic which is a huge bonus.

Thanks Simon Sawert (@bombsimon) for making this change clean, and nutting out issues with running the tests.

Co-authored-by: Simon Sawert <simon@sawert.se>
Co-authored-by: Leigh McCulloch <leigh@mcchouse.com>
acfc0b2

Git stats

Files

Permalink
Failed to load latest commit information.

gochecknoglobals

Build Status Codecov Go Report Card

Check that no globals are present in Go code.

Why

Global variables are an input to functions that is not visible in the functions signature, complicate testing, reduces readability and increase the complexity of code.

https://peter.bourgon.org/blog/2017/06/09/theory-of-modern-go.html https://twitter.com/davecheney/status/871939730761547776

Exceptions

There are very few exceptions to the global variable rule. This tool will ignore the following patterns:

  • Variables with an Err prefix
  • Variables named _
  • Variables named version
  • Variables assigned from regexp.MustCompile()

Install

go get 4d63.com/gochecknoglobals

Usage

The linter is built on Go's analysis package and does thus support all the built in flags and features from this type. The analyzer is executed by specifying packages.

gochecknoglobals [package]
gochecknoglobals ./...

By default, test files will not be checked but can be included by adding the -t flag.

gochecknoglobals -t [package]