簡體   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