Finish the migration of definitions back into checks.

Background: I initially thought it was cool to use godoc to document the
configuration file. This permits to document once and the documentation is the
code. In practice, this didn't work out that well because it created very busy
godoc file and it was harder to relate to the rendered yaml. So I wrote manually
CONFIGURATION.md instead, which should serve users much better.
10 files changed
tree: 94577ed0e295a0633ce5e664f1bd744609d8ce67
  1. checks/
  2. cmd/
  3. internal/
  4. samples/
  5. scm/
  6. .gitignore
  7. .travis.yml
  8. CI_SETUP.md
  9. CONFIGURATION.md
  10. DESIGN.md
  11. LICENSE
  12. main.go
  13. pre-commit-go.yml
  14. README.md
  15. TUTORIAL.md
README.md

pre-commit-go

pre-commit-go project includes two tools:

Warning

pre-commit-go is under heavy development. If you plan to use it as part of a CI, please make sure to pin your version or track it closely. We'll eventually settle and keep backward compability but the tool is not mature yet, so simply vendor it for now.

Usage

Setup

go get github.com/maruel/pre-commit-go/cmd/...

Use built-in help to list all options and commands:

pcg help

Run from within a git checkout inside $GOPATH. This installs the git hooks within .git/hooks and runs the checks in mode pre-push. It runs the checks on the diff against @{upstream}:

pcg

Bypassing hook

It may become necessary to commit something known to be broken. To bypass the pre-commit hook, use:

git commit --no-verify  (or -n)
git push --no-verify    (-n does something else! <3 git)

Running coverage

covg

You can use the -g flag to enable global inference, that is, coverage induced by a unit test will work across package boundary.

Example coverage output

$ ./cov -i "*.pb.go" -min 50
common/bit_field
  coverage: 100.0% (17/17) >= 50.0%; Functions: 0 untested / 0 partially / 8 completely
common/cache
  common/cache/cache.go:166 memory.Add            66.7% (6/9) 167,172,175
  common/cache/lru.go:79    orderedDict.popOldest 66.7% (2/3) 84
  common/cache/lru.go:200   lruDict.UnmarshalJSON 63.6% (7/11) 202,205,208,213
  common/cache/cache.go:276 disk.Add              60.0% (9/15) 277,282,291-292,295-296
  common/cache/lru.go:28    entry.UnmarshalJSON   60.0% (6/10) 31,34,41,44
  common/cache/lru.go:107   orderedDict.pushBack  40.0% (2/5) 108-110
  coverage: 84.8% (117/138) >= 50.0%; Functions: 0 untested / 6 partially / 35 completely
common/clock
  common/clock/systemclock.go:33 systemClock.NewTimer  0.0% (0/1)
  common/clock/systemclock.go:29 systemClock.Sleep     0.0% (0/1)
  coverage: 95.2% (40/42) >= 50.0%; Functions: 2 untested / 0 partially / 18 completely

Configuration

See Configuration for more details if you want to tweak the default checks. The default checks are meant to be sensible, you can list them with:

pcg info

Continous integration support

pre-commit-go is designed to be used as part of CI. This is described in its own page.

  • Travis: Build Status
  • CircleCI: Build Status
  • Drone: Build Status
  • Coveralls: Coverage Status