Continuous Code Quality for Go

GolangCI detects and comments issues in Github pull requests: bugs, style violations, anti-pattern instances

Why do you need it?

Reduce time spent on reviews

GolangCI automatically detects issues and writes comments in Github pull request. It dramatically saves reviewer’s time.

Reduce cost of code support

When every line of code is written in the same style, the whole codebase becomes easier to read, understand and debug.

Make your customers happy

Reduce number of bugs in production and testing environment.

Reduce release cycle time

Review faster, merge faster, and deliver software faster. With competitors increasingly able to release new features within days or even hours, companies can no longer afford unpredictable, lengthy, and inefficient release processes.

Integrated with GitHub

GolangCI works with GitHub pull requests. It comments lines in changed code with found issues.

Demo of integration of GolangCI with GitHub Pull Requests

GolangCI sets GitHub pull request status: success or failure (issues were found).

Demo of integration of GolangCI with GitHub Commit Statuses

Pricing

Open Source
Free
  • Unlimited public repositories
  • GitHub integration
  • Automatic comments on pull request
Standard
$20user/mo
  • Unlimited private repositories
  • Higher analysis priority
  • Priority support
Enterprise
Self-hosted
  • For GitHub Enterprise

Why us?

You will get perfect Go code review because we are focused only on one language - Go. We are fine-tuning our tools for the best go code analysis.

GolangCI is built by developers for developers. We believe in open source and GolangCI is an open source project.

Linters

By default next linters are used:

go vet

Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string.

errcheck

Errcheck is a program for checking for unchecked errors in go programs. These unchecked errors can be critical bugs in some cases.

golint

Golint differs from gofmt. Gofmt reformats Go source code, whereas golint prints out style mistakes.

staticcheck

Staticcheck is go vet on steroids, applying a ton of static analysis checks.

unused

Checks Go code for unused constants, variables, functions and types.

gosimple

Linter for Go source code that specialises on simplifying code.

gas

Inspects source code for security problems.

structcheck

Finds unused struct fields.

varcheck

Finds unused global variables and constants.

interfacer

Linter that suggests narrower interface types.

unconvert

Remove unnecessary type conversions.

ineffassign

Detects when assignments to existing variables are not used.

goconst

Finds repeated strings that could be replaced by a constant.

deadcode

Finds unused code.

gofmt

Gofmt checks whether code was gofmt-ed. We run this tool with -s option to check for code simplification.

goimports

Goimports does everything that gofmt does. Additionally it checks unused imports.
We use all aforementioned linters by running golangci-lint on analyzed code in this way:
golangci-lint run --new-from-patch=/path/to/patch/for/pull/request
Some additional linters are disabled by default: dupl, gocyclo, typecheck, maligned, misspell, lll, unparam, nakedret, prealloc.
You can create .golangci.yml to enable additional linters, disable some of default linters and customize their settings.