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


Open Source
  • Unlimited public repositories
  • GitHub integration
  • Automatic comments on pull request
  • Unlimited private repositories
  • Higher analysis priority
  • Priority support
  • 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.


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 is a program for checking for unchecked errors in go programs. These unchecked errors can be critical bugs in some cases.


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


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


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


Linter for Go source code that specialises on simplifying code.


Inspects source code for security problems.


Finds unused struct fields.


Finds unused global variables and constants.


Linter that suggests narrower interface types.


Remove unnecessary type conversions.


Detects when assignments to existing variables are not used.


Finds repeated strings that could be replaced by a constant.


Finds unused code.


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


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, depguard, gocritic, scopelint, gochecknoinits, gochecknoglobals.
You can create .golangci.yml to enable additional linters, disable some of default linters and customize their settings. Also you can customize how we run analysis in the cloud for the repo: how to fetch dependencies, how to use generated code, etc.