在 VS 代码中进行短绒检查不适用于跨多个文件的包?

Kur*_*eek 18 go golint visual-studio-code

我已经在 MacOS 上的 Visual Studio Code 中安装了 Go 扩展(版本 0.11.4):

在此处输入图片说明

但是,我发现 linter 不会“拾取”在同一个包中定义的函数,而是在不同的文件中。例如,如果我在同一个目录中的文件创建foo.go

package foobar

import "fmt"

func main() {
    fmt.Println(SayHello())
}
Run Code Online (Sandbox Code Playgroud)

和文件bar.go

package foobar

func SayHello() string {
    return "Hello, world!"
}
Run Code Online (Sandbox Code Playgroud)

然后在foo.go我收到一个 linter 错误SayHelloundeclared name

在此处输入图片说明

我在这里(https://github.com/golang/lint/issues/57)读到了一个类似的问题,但由于这个问题已经五年了,我认为它现在可能已经解决了?或者golint根本不能跨多个文件工作?

Sat*_*ani 34

我遇到了同样的问题。我发现在启用实验性功能“Go 语言服务器”后遇到了这个问题。我在 VS code settings->Go Configuration 中禁用了它,之后问题就消失了。

  • 这对我来说也是个问题! (3认同)

小智 19

更新 VS Code Go Tool 可能会有所帮助。 Command + Shift + P->Go: Install/update tools 安装所有工具并重新启动 VS Code。


Han*_*ana 11

自 2019 年以来,该插件发生了很大变化。

  • 2021 年,Go Module 成为默认模块,这可能改变了程序的构建和分析方式。
  • vscode-go 插件gopls默认用作语言服务器。请注意,2019 年有两种不同的语言服务器,且gopls仍处于实验模式。
  • golint已被弃用。

如果您仍然遇到类似的问题,则您可能会遇到不同的问题。

请检查以下内容:

如果您发现重新启动语言服务器(“Go:重新启动语言服务器”命令)可以解决您的问题,那么这是一个 gopls 错误。请考虑按照故障排除指南在 github.com/golang/vscode-go 中提交问题。


jun*_*yea 9

  1. 更新 GO 的安装/更新工具
  2. 在 VS Code 中将代码作为主项目打开,并避免在同一 VS Code 中存在多个项目/工作区。**

单个项目 VS 代码

** 单个项目 VS 代码

**

避免 VS Code 中的多个项目

**

避免 VS Code 中的多个项目


3ve*_*tic 8

对我来说这个警告的原因是设置go.lintOnSave,它被设置为file. 更改值以package使 linter 正确选取其他文件中定义的类型。