Skip to content
main
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

nit

Go Report Card Circle CI coverage

nit is an opinionated Code Organization linter for Go.

It defines a collection of rules to determine how each Go file should be organized internally.

Rules

  1. imports is the first section
    • Requires parenthesized declaration,
    • One maximum, and
    • Separated in 3 blocks: standard, external and same package (local).
  2. type is the second section
    • Requires parenthesized declaration,
    • Section must be sorted: exported first, then unexported; and
    • Supports //- comment for separating groups
  3. const is the third section
    • Requires parenthesized declaration,
    • Multiple allowed, and
    • Section must be sorted: exported first, then unexported.
  4. var is the fourth section
    • Requires parenthesized declaration, and
    • Section must be sorted: exported first, then unexported.
  5. func is the fifth section
    • Must be sorted, exported first, then unexported, and
    • Supports //- comment for separating groups.
  6. func method, is the sixth section
    • Must be sorted by type, exported first, then unexported; and
    • Supports //- comment for separating groups.

Fancy State Machine explaining the rules above:

code

Installing

  • Using go (>= 1.13): go get github.com/MarioCarrion/nit/cmd/nit@v0.6.0, for installing v0.6.0 for example; see the releases for other versions.
  • Using it as a dependency with the tools.go paradigm:
// +build tools

package tools

import (
	_ "github.com/MarioCarrion/nit/cmd/nit"
)

Using

After installing you can use:

nit -pkg <base local package> $(go list ./...)

Please use nit -h for other available arguments.

Development requirements

Go >= 1.14.0