golangci-lint

Integrations

Editor Integration

GoLand

The integration for golangci-lint v2 is currently in work in progress: GO-18363.

Install plugin.

Visual Studio Code

Install the extension.

Recommended settings for those who installed golangci-lint manually
"go.lintTool": "golangci-lint",
"go.lintFlags": [
"--path-mode=abs",
"--fast-only"
],
"go.formatTool": "custom",
"go.alternateTools": {
"customFormatter": "golangci-lint"
},
"go.formatFlags": [
"fmt",
"--stdin"
]

Using it in an editor without --fast-only can freeze your editor. Golangci-lint automatically discovers the .golangci.yml config for the edited file, so you don't need to configure it in VS Code settings.

Recommended settings for those who installed golangci-lint via extension

Install golangci-lint-v2 via the Go: Install/Update Tools command after setting these configs. This will enable golangci-lint v1 to co-exist with v2. And use the following settings:

"go.lintTool": "golangci-lint-v2",
"go.lintFlags": [
"--path-mode=abs",
"--fast-only"
],
"go.formatTool": "custom",
"go.alternateTools": {
"customFormatter": "golangci-lint-v2"
},
"go.formatFlags": [
"fmt",
"--stdin"
]

Using it in an editor without --fast-only can freeze your editor. Golangci-lint automatically discovers the .golangci.yml config for the edited file, so you don't need to configure it in VS Code settings.

GNU Emacs

There are available plugins:

Vim

The following plugins support golangci-lint:

LSP Server

golangci-lint-langserver (NeoVim, Vim, Emacs, ...)

Sublime Text

There is a plugin for SublimeLinter.

Shell Completion

Golangci-lint can generate Bash, fish, PowerShell, and Zsh completion files.

See the instructions on golangci-lint completion <YOUR_SHELL> --help (replace <YOUR_SHELL> with your favorite one).

Bash & macOS

There are two versions of bash-completion, v1 and v2. V1 is for Bash 3.2 (which is the default on macOS), and v2 is for Bash 4.1+.

The golangci-lint completion script doesn’t work correctly with bash-completion v1 and Bash 3.2. It requires bash-completion v2 and Bash 4.1+.

Thus, to be able to correctly use golangci-lint completion on macOS, you have to install and use Bash 4.1+ (instructions).

The following instructions assume that you use Bash 4.1+ (that is, any Bash version of 4.1 or newer).

Install bash-completion v2:

brew install bash-completion@2
echo 'export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"' >>~/.bashrc
echo '[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"' >>~/.bashrc
exec bash # reload and replace (if it was updated) shell
type _init_completion && echo "completion is OK" # verify that bash-completion v2 is correctly installed

Add golangci-lint bash completion:

echo 'source <(golangci-lint completion bash)' >>~/.bashrc
source ~/.bashrc

CI Integration

Check out our documentation for CI integrations.

Edit this page on GitHub