VS Code高效Golang开发扩展推荐

VS Code高效Golang开发扩展推荐 我想与大家分享我们一直在开发的 #vscode 扩展。它叫做 Tooltitude。它通过大量生产力功能增强了官方的 Go vscode 扩展。

以下是一些亮点:

  1. 引用代码透镜(在截图中。它非常快,即使在像 Kubernetes 这样的大型项目上也能工作)
  2. 检查:显示被遮蔽的变量和已弃用的符号(目前标准的 Go 扩展不显示已弃用的符号)
  3. 代码操作(目前有 26 个,包括错误处理代码生成器)

你可以从这里安装它:Tooltitude - Visual Studio Marketplace 注意:它不是开源的。不同的组件使用不同的语言编写,包括 Go、Rust、Typescript 和 Shell。我们计划提供一个包含高级功能的免费使用版本。如果你有任何功能请求或问题,请随时私信我。我们还有一个 Discord 频道用于更深入的讨论:Tooltitude


更多关于VS Code高效Golang开发扩展推荐的实战教程也可以访问 https://www.itying.com/category-94-b0.html

5 回复

感谢您帮助我看得更清楚。确实,开源或许并不像我原本以为的那样是一个“卖点”。

更多关于VS Code高效Golang开发扩展推荐的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


感谢分享!我还没有尝试过,但描述听起来很有希望。

我理解不开源这个扩展的决定。但我很好奇:闭源插件能否获得与同类开源插件相似的发行量和接受度?这方面有统计数据吗?

该扩展迎来了一次重大更新。我们现在提供了大量的代码导航透镜,帮助您理解代码库并更快地进行导航。

当然,它们运行速度极快,且不消耗大量资源!

Lenses

和往常一样,您可以从此处安装它:Tooltitude (Productivity Extension for GoLang) - Visual Studio Marketplace

谢谢!

但我很好奇:闭源插件能否获得与同类开源插件类似的普及度和接受度?这方面有统计数据吗?

我可以提供一些轶事证据,证明这是可能的。例如,一些非常流行但并非开源的顶级扩展。

  • Pylance(免费但非开源)
  • C/C++(免费但包含非开源部分)
  • Intellicode
  • Gitlens(共享源代码,但有付费版本)
  • Liveshare
  • Php Intelephense(免费增值模式)
  • Github copilot
  • Remote Development 系列扩展

它们大多来自微软,虽然不是开源的,但非常受欢迎。所以这是可能的,但并不容易。

Tooltitude 扩展确实为 VS Code 的 Go 开发体验带来了显著的增强。以下是针对你提到的几个亮点,结合 Go 语言特性的技术分析:

1. 引用代码透镜 这个功能通过静态分析快速定位标识符的引用位置,比传统 Find All References 更高效。例如在大型项目中:

// 当光标停留在 SendRequest 上时,代码透镜会显示引用计数
func (c *Client) SendRequest(req *Request) error {
    // 实现细节...
}

// 在其他文件中的调用会实时统计
func handler() {
    client.SendRequest(req) // 这里会计入引用
}

2. 遮蔽变量和弃用符号检查 这直接利用了 Go 编译器的分析能力。示例:

import "github.com/old/pkg" // 如果 pkg 被标记为 deprecated,会高亮显示

func process() {
    x := 1
    if true {
        x := 2 // 工具会警告变量遮蔽(shadowing)
        fmt.Println(x)
    }
}

3. 错误处理代码生成 这是对 Go 错误处理模式的自动化增强。原始代码:

func readFile(path string) ([]byte, error) {
    f, err := os.Open(path)
    // 需要手动处理错误
}

使用 Tooltitude 的代码操作后:

func readFile(path string) ([]byte, error) {
    f, err := os.Open(path)
    if err != nil {
        return nil, fmt.Errorf("open file: %w", err)
    }
    defer f.Close()
    // 继续生成...
}

技术实现要点

  • 引用分析可能基于 goplsreferences 接口,但做了性能优化
  • 遮蔽检测使用了 go/ast 包的 scope 分析
  • 错误处理生成器利用了 AST 转换技术

与官方扩展的互补性: Tooltitude 没有替换 gopls,而是通过额外的中间件层增强了它的输出。例如在 settings.json 中:

{
  "go.useLanguageServer": true,
  "tooltitude.enableCodeLens": true
}

对于大型项目如 Kubernetes,引用计数的实时更新确实需要 Rust 组件的高性能解析能力。这种混合语言架构(Go 用于语言逻辑,Rust 用于性能敏感路径)是合理的工程选择。

回到顶部