x/tools/gopls:关于基于Go版本的标准库API使用发出警告

8yoxcaq7  于 4个月前  发布在  Go
关注(0)|答案(2)|浏览(40)

在1.18版本(增加了types.Config.GoVersion)中,我们希望更好地支持使用最近版本的Go构建gopls来开发针对较旧版本Go运行的目标项目的工作流程。

#50688是必要的但不足以解决问题:设置types.Config.GoVersion将无法捕获在较晚的Go版本中添加的标准库API的使用情况。我们需要为gopls添加额外的诊断信息。

正确的做法可能是通过具有配置目标语言版本标志的分析器来实现。这使得用户更容易在gopls之外利用此功能,或在gopls内部打开/关闭它。

总体思路:

  • 添加一个新的分析器(最初在x/tools/internal/lsp/analysis中),报告在目标语言版本中不存在的标准库API的使用情况。它可以从GOROOT/api中读取以构建接受的API列表。
  • go.mod中推断包的目标语言版本,或者(更有可能的是)公开一个设置来配置它。与types.Config.GoVersion不同,读取go.mod is probably not good enough here, because IIRC the Go command does not enforce restrictions on standard library API use, so we would disagree. Perhaps we should not have a gopls特定的配置选项,而是公开一个更通用的配置分析器标志模式。
jgwigjjp

jgwigjjp1#

Compare #46136 , which proposes a similar warning for cmd/vet .

hof1towb

hof1towb2#

我认为我们不需要这样做。正确的解决方案是使用正确的版本go命令。
转到我们的未计划的里程碑。

相关问题