为了账号安全,请及时绑定邮箱和手机立即绑定

VS Code 中的 Go linter 不适用于跨多个文件的包?

VS Code 中的 Go linter 不适用于跨多个文件的包?

Go
青春有我 2023-07-26 15:34:00
我已在 MacOS 上的 Visual Studio Code 中安装了 Go 扩展(版本 0.11.4):但是,我发现 linter 不会“拾取”同一包中定义的函数,而是不同文件中定义的函数。例如,如果我在同一目录中创建一个foo.go文件package foobarimport "fmt"func main() {    fmt.Println(SayHello())}和一个bar.go文件package foobarfunc SayHello() string {    return "Hello, world!"}然后我得到foo.go一个 linter 错误:SayHelloundeclared name我在这里读到了类似的问题(https://github.com/golang/lint/issues/57),但由于该问题已经存在五年了,我认为它现在可能已经解决了?或者golint根本无法跨多个文件工作?
查看完整描述

3 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

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

  • 2021 年,Go 模块成为默认模块,这可能改变了程序的构建和分析方式。

  • vscode-go 插件gopls默认用作语言服务器。请注意,2019 年有两种不同的语言服务器,且gopls仍处于实验模式。

  • golint已被弃用。


查看完整回答
反对 回复 2023-07-26
?
Qyouu

TA贡献1786条经验 获得超11个赞

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


2022 年 5 月更新:

此解决方案仅在您尚未安装helper tools. 通常,安装这些软件包后,它会立即使用default configuration。


查看完整回答
反对 回复 2023-07-26
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

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



查看完整回答
反对 回复 2023-07-26
?
侃侃无极

TA贡献2051条经验 获得超10个赞

对于最终来到这里的人:

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

  • 2021 年,Go Module 成为默认模块,这可能改变了程序的构建和分析方式。

  • vscode-go 插件gopls默认用作语言服务器。请注意,2019 年有两种不同的语言服务器,且gopls仍处于实验模式。

  • golint已被弃用。

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

请检查以下内容:

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

否则,请提出一个包含详细信息的新问题。


查看完整回答
反对 回复 2023-07-26
  • 3 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信