繁体   English   中英

在 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 并且根本不返回任何 output。 为了传递额外的标志,我遵循了golangci-lint 文档并添加了go.lintFlags

"go.lintFlags": [
  "--enable golint"
]

请注意,我不想只运行 golint,而是要启用 golangci-lint 中的所有默认 linters,并在此基础上使用 golint。

我发现提供golangci-lint配置更容易。

"go.lintTool": "golangci-lint",
"go.lintFlags": [
    "-c",
    "~/.dotfiles/.golangci.yml",
    "--issues-exit-code=0"
],

顺便说一句,您不需要启用所有默认 linter - 已经启用(请参阅参考资料)。

但是如果你想通过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)

将 a.golangci.toml (or.yml or.json) 添加到 repo 的根目录并通过文件设置配置。 如果您希望它在所有存储库中运行,您也可以将该文件放在 $HOME 目录中。 这比尝试在 VSCode 配置中输入一堆 CLI 标志要好得多。 golangci-lint 将自动读取该文件并做正确的事情。 这样,如果您从命令行运行它,它将使用相同的配置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM