【问题标题】:Enable detailed options on golangci-lint in VSCode在 VSCode 中启用 golangci-lint 的详细选项
【发布时间】:2021-01-07 12:35:18
【问题描述】:

我正在使用 golangci-lint。默认情况下,它禁用 golint linter。要将 golint 添加到默认 linters,该命令需要一个 -E golint 标志:

golangci-lint run -E golint

从命令行运行正常。
但是现在我通过将这个选项添加到设置中来将 golangci-lint 与 VSCode 集成:

"go.lintTool":"golangci-lint",

默认的 linters 工作正常,但是当我添加一个标志以启用 golint 时,它会停止 linting 并且根本不返回任何输出。为了传递额外的标志,我关注了golangci-lint documentation 并添加了go.lintFlags

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

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

【问题讨论】:

    标签: go visual-studio-code lint


    【解决方案1】:

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

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

    顺便说一句,您不需要启用所有默认 linter - 它们已经启用(请参阅 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)
    

    【讨论】:

    • 这很有帮助。这是我添加错误标志的方式。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-05-05
      • 2021-04-24
      • 2015-09-17
      • 2015-04-12
      • 2022-06-12
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      相关资源
      最近更新 更多