在 VSCode 中启用 golangci-lint 的详细选项
Enable detailed options on golangci-lint in VSCode
我正在使用 golangci-lint。默认情况下,它会禁用 golint linter。要将 golint 添加到默认 linters,该命令需要一个 -E golint
标志:
golangci-lint run -E golint
从命令行运行正常。
但是现在我通过将此选项添加到设置中来将 golangci-lint 与 VSCode 集成:
"go.lintTool":"golangci-lint",
默认的 linters 工作正常,但是当我添加一个标志以启用 golint 时,它会停止 linting 并且 return 根本没有任何输出。为了传递附加标志,我遵循了 golangci-lint documentation 并添加了 go.lintFlags
:
"go.lintFlags": [
"--enable golint"
]
请注意,我不想只 运行 golint,而是在 golangci-lint 中启用所有默认 linter,并在此基础上使用 golint。
我发现提供 golangci-lint
配置更容易。
"go.lintTool": "golangci-lint",
"go.lintFlags": [
"-c",
"~/.dotfiles/.golangci.yml",
"--issues-exit-code=0"
],
顺便说一句,您不需要启用所有默认 linters - 它们已经启用(参见 reference)。
但是如果你想通过 settings.json
运行 它,你可以定义(就像你做 linter 标志一样)。例如下一个配置
"go.lintTool": "golangci-lint",
"go.lintFlags": [
"-E", "dogsled",
"-E", "gochecknoglobals"
],
应用于
package main
func s(i int) (int, int, int, int, int) {
return -1, -2, -3, -4, -5
}
func fpl() {
}
var i = 0
func main() {
_, _, _, _, _ = s(i)
}
将导致:
...>Finished running tool: /Users/0_o/go/bin/golangci-lint run -E dogsled -E gochecknoglobals --print-issued-lines=false --out-format=colored-line-number --issues-exit-code=0
.../main.go:7:6 `fpl` is unused (deadcode)
.../main.go:13:2 declaration has 5 blank identifiers (dogsled)
.../main.go:10:5 `i` is a global variable (gochecknoglobals)
将 .golangci.toml(或 .yml 或 .json)添加到存储库的根目录并通过文件设置配置。如果您希望它在所有存储库中 运行,您也可以将该文件放在您的 $HOME 目录中。这比尝试在 VSCode 配置中输入一堆 CLI 标志要好得多。 golangci-lint 将自动读取该文件并做正确的事情。这样,如果您从命令行 运行 它,它将使用相同的配置。
我正在使用 golangci-lint。默认情况下,它会禁用 golint linter。要将 golint 添加到默认 linters,该命令需要一个 -E golint
标志:
golangci-lint run -E golint
从命令行运行正常。
但是现在我通过将此选项添加到设置中来将 golangci-lint 与 VSCode 集成:
"go.lintTool":"golangci-lint",
默认的 linters 工作正常,但是当我添加一个标志以启用 golint 时,它会停止 linting 并且 return 根本没有任何输出。为了传递附加标志,我遵循了 golangci-lint documentation 并添加了 go.lintFlags
:
"go.lintFlags": [
"--enable golint"
]
请注意,我不想只 运行 golint,而是在 golangci-lint 中启用所有默认 linter,并在此基础上使用 golint。
我发现提供 golangci-lint
配置更容易。
"go.lintTool": "golangci-lint",
"go.lintFlags": [
"-c",
"~/.dotfiles/.golangci.yml",
"--issues-exit-code=0"
],
顺便说一句,您不需要启用所有默认 linters - 它们已经启用(参见 reference)。
但是如果你想通过 settings.json
运行 它,你可以定义(就像你做 linter 标志一样)。例如下一个配置
"go.lintTool": "golangci-lint",
"go.lintFlags": [
"-E", "dogsled",
"-E", "gochecknoglobals"
],
应用于
package main
func s(i int) (int, int, int, int, int) {
return -1, -2, -3, -4, -5
}
func fpl() {
}
var i = 0
func main() {
_, _, _, _, _ = s(i)
}
将导致:
...>Finished running tool: /Users/0_o/go/bin/golangci-lint run -E dogsled -E gochecknoglobals --print-issued-lines=false --out-format=colored-line-number --issues-exit-code=0
.../main.go:7:6 `fpl` is unused (deadcode)
.../main.go:13:2 declaration has 5 blank identifiers (dogsled)
.../main.go:10:5 `i` is a global variable (gochecknoglobals)
将 .golangci.toml(或 .yml 或 .json)添加到存储库的根目录并通过文件设置配置。如果您希望它在所有存储库中 运行,您也可以将该文件放在您的 $HOME 目录中。这比尝试在 VSCode 配置中输入一堆 CLI 标志要好得多。 golangci-lint 将自动读取该文件并做正确的事情。这样,如果您从命令行 运行 它,它将使用相同的配置。