GoLand 2022.3 提供了性能增强以及针对泛型和 Go 工作区的新功能。新版本集成了 Go Playground,添加了改进 Go 文档注释的支持,为 HTTP 客户端和 Docker 引入了新功能,并提供了新 UI。
此外,GoLand 也迎来了 5 岁生日,官方邀请各位开发者们一起庆祝。现在在 GoLand 2022.3 或 GoLand 2022.2.5 中输入 “Happy B-day, GoLand!”,看看会有什么彩蛋。
性能改进
有助于改进索引编制的 go list
更改
打开项目时,GoLand 会为文件编制索引并运行 [go list](<https://go.dev/ref/mod#go-list-m>)
命令,该命令会报告有关项目结构的信息。 索引编制会在 go list
运行时暂停,在索引编制完成之前您无法访问代码洞察功能。
此前,GoLand 在某些情况下会运行两次 go list
。 我们更改了 API,减少了 go list
启动的数量。 我们希望这一改变能够显著提高具有许多模块的大型项目的性能。
打开时从缓存还原项目结构
现在,打开项目时,go list
报告的信息将被保存到磁盘缓存。 再次打开该项目时,项目结构相关数据将从内存加载并在索引编制开始时被纳入考量。
由此,索引编制可以不间断地继续,更快完成,并且代码洞察功能在打开项目后可以更快可用。
更快的 IDE 启动和项目打开
GoLand 还获得了许多其他性能改进,旨在减少启动应用程序以及在 JetBrains IDE 中打开项目所需的时间。
整体启动性能(包括编辑器还原)因此提高了约 30%。
泛型
泛型函数的测试生成
现在,您可以为具有泛型形参的函数生成测试。
大写类型形参的快速修复
现在有一项检测小写类型形参的检查,以及将其变成大写的快速修复。
Go 工作区
Go Workspace File(Go 工作区文件)操作
在 New(新建)上下文菜单中,您现在会找到 Go Workspace File(Go 工作区文件)操作。 选择时,根文件夹中将出现一个 go.work
文件。 现有 Go 模块将自动添加到 go.work
文件中。
使用 replace
指令生成 go.work
如果有 replace
指令,您现在可以从 go.mod
生成 go.work
。 将文本光标置于 replace
指令上,按 ⌥⏎ 查看所有可用意图操作,然后选择 Add … module to workspace…(将 … 模块添加到工作区)快速修复。
Go 文档注释
Go 1.19 在文档注释中添加了对链接、列表和新标题的支持。 GoLand 2022.3 也支持这些新功能。
对链接的支持
我们在 GoLand 中添加了对文档链接的引用。 点击它们可以前往引用的元素,点击文本链接会前往文本链接定义。
文本和文档链接在 Quick Documentation(快速文档)弹出窗口和 Documentation(文档)工具窗口中都呈现为链接。
对新标题的支持
从 Go 1.19 开始,标题是以数字符号 (#
) 开头后跟空格和标题文本的行。
新标题在 GoLand 的 Quick Documentation(快速文档)弹出窗口和 Documentation(文档)工具窗口中呈现为 HTML 标题。
对列表的支持
列表在 GoLand 的 Quick Documentation(快速文档)弹出窗口和 Documentation(文档)工具窗口中呈现为 HTML 列表。
集成式 Go Playground
我们在 GoLand 中集成了 Go Playground 功能。
您可以选择一段代码,选择 Open In(打开方式)选项,然后点击 Playground。 这将打开带有工具栏的 scratch 文件,工具栏中的选项与 Go Playground 相同。
您可以格式化和共享您的代码、更改 Go 版本、使用 Go Playground 服务器运行代码,或在本地运行。
新的快速修复
无效递归类型的快速修复
如果类型包含自身,您将收到“Invalid recursive type”(无效递归类型)错误。 为避免这种情况,您应该包含一个指向类型的指针,而不是类型本身。 我们现在提供了快速修复。
编辑器
Code Vision
我们已经开始实现 Code Vision 功能。 目前,启用版本控制集成后会显示代码作者。 点击代码作者姓名将打开 Annotate with Git blame(使用 Git 追溯注解)边栏,显示是谁引入了更改。
我们还引入了在所有函数和类型附近显示的用法,显示函数或类型在当前项目中被引用的次数。
常量定义的内嵌提示
GoLand 现在会显示常量定义块的内嵌提示。 这在 iota
派生的常量块中特别实用,其中提示显示了与每个位置关联的 iota
值。
Fill all fields(填充所有字段)忽略自动生成的 protobuf 字段
调用 Fill all fields(填充所有字段)意图操作时,IDE 会忽略以 XXX_
开头的自动生成的协议缓冲区字段。 这些字段仅在第二次调用补全后显示。
其他 Go 相关功能
Go 环境变量在设置中显示
GoLand 现在会自动获取 Go 模块相关系统变量,并将其显示在 Environment variables(环境变量)对话框窗口中。 要打开此窗口,请转至 Preferences | Go | Go Modules(设置 | Go | Go 模块),点击 Edit environment variables(编辑环境变量)图标。
软件包名称始终显示在 Quick documentation(快速文档)中
IDE 现在始终在顶层声明的 Quick documentation(快速文档)弹出窗口中显示软件包名称。 此前,只有在找到 doc.go
或 <pkg_name>.go
文件时才会显示软件包头。
提高文件大小上限
我们已将文件大小上限从 2.5 MB 提高到 10 MB。 代码洞察功能(如导航和高亮显示)不适用于超过大小上限的文件。
虽然 2.5 MB 的上限对于大多数文件来说已经足够,但有些项目的文件更大,例如 AWS SDK 或 GCP。
Receiver names are different(接收器名称不同)检查忽略生成的代码
由于 Receiver names are different(接收器名称不同)检查与生成的代码无关,我们已为包含与以下正则表达式匹配的注释的文件将其禁用:^// Code generated .* DO NOT EDIT\\.$
HTTP 客户端
为 JavaScript 处理程序预请求脚本和新 API
HTTP 客户端现在支持在请求之前执行脚本块。 您可以在执行请求之前生成数据,并使用变量将其放入最终请求。 可以使用快速修复创建用于初始化变量的样板代码。
HTTP 客户端现已支持 Crypto API。 您可以计算 HTTP 请求的 md5 或 sha1 哈希值。
对于简单的情况,IDE 现在具有一组新的随机变量。
Docker
在不安装 Docker Desktop 的情况下从 WSL 使用 Docker 可执行文件
GoLand 现在支持连接到在适用于 Linux 的 Windows 子系统 (WSL) 中运行的 Docker。 您可以在 Preferences | Build, Execution, Deployment | Docker(设置 | 构建、执行、部署 | Docker)中设置连接。
新意图操作:Pull Docker image(拉取 Docker 镜像)
现在,有一种无需从 Dockerfile
或 docker-compose.yml
运行即可拉取镜像的简单方式。 为此,在高亮显示的镜像名称上调用上下文操作 (⌥⏎),然后选择 Pull Docker image(拉取 Docker 镜像)。
.dockerignore
文件类型支持
我们引入了对 .dockerignore
文件的全面支持,包括代码高亮显示和补全。 从 IDE 构建镜像时,这些文件会被纳入考量。
在 Dockerfile 文件中支持 heredoc 格式
Here 文档允许将后续 Dockerfile
行重定向到 RUN
或 COPY
命令的输入。 GoLand 现在支持此语法,您可以使用它在 Dockerfile
文件中生成配置文件或多行脚本。
来自 Docker 上下文的 Docker 连接
如果 Docker 配置中已有这些设置,您现在可以使用 Docker 上下文设置额外的 Docker 连接。 为此,您可以在 Services(服务)视图中调用 Add Service(添加服务)上下文菜单并选择 Docker Connections From Docker Contexts(来自 Docker 上下文的 Docker 连接)。
远程开发(测试版)
IDE 后端现在可以直接在 WSL 2 中启动,并且您可以像在 GoLand 中使用远程开发时连接到远程机器一样连接到它。
用户界面
新 UI
如您所知,今年 5 月我们宣布了 JetBrains IDE 中新 UI 的封闭预览计划。
我们邀请您在 Preferences | Appearance & Behavior | New UI Preview(设置 | 外观与行为 | 新 UI 预览)中切换到新 UI。
意图操作预览默认启用
意图操作的预览功能现在默认开启,让您可以立即查看应用 IDE 建议后代码将如何变化。
在意图操作列表打开时,您可以按 F1 启用或禁用预览功能。
将工具窗口停靠到浮动编辑器选项卡
为了让您可以更轻松地安排工作空间并在多个显示器上与 GoLand 交互,我们实现了将工具窗口拖出主窗口并将其停靠到浮动编辑器选项卡的选项。
改进了 Tips of the Day(每日小技巧)
我们增强了 Tips of the Day(每日小技巧)功能,这是一种帮助您探索 GoLand 的学习工具。
每个提示现在都有一个标题。 我们还微调了确定显示哪些提示的算法,让您可以看到与 IDE 体验和正在处理的项目最相关的提示。
更新了 Bookmarks(书签)
现在,又可以从编辑器选项卡中为文件添加书签了。 只需右键点击选项卡调用上下文菜单并选择 Bookmarks(书签)。
您可以将当前打开的所有选项卡中的所有文件添加到 Bookmarks(书签)。 为此,可以调用相同上下文菜单并选择 Bookmark Open Tabs(为打开的选项卡添加书签),也可以使用编辑器选项卡窗格右侧的三点图标调用此操作。
新的 Settings Sync(设置同步)解决方案
我们为同步自定义用户设置引入了重做的解决方案。 长期以来,有两个并行存在且具有交叉功能的插件:IDE Settings Sync(IDE 设置同步)和 Settings Repository(设置仓库)。 为避免因拥有两个近似捆绑插件而造成困惑,我们将其功能集合并为一个解决方案,即新的 Settings Sync(设置同步)插件。
数据库
Redis 支持
期待已久的 Redis 支持的初步迭代现已实现。
快速筛选
现在,使用快速搜索时,您也可以筛选对象。 所有不匹配的对象都将被隐藏。
Web 开发
针对 JavaScript 和 TypeScript 的 Code Vision
此版本为 Web 开发引入了的新 Code Vision 功能。 它可以收集 JavaScript 和 TypeScript 代码中类型和类型成员的各种指标,并在声明附近显示此信息。
其他更新
在 YAML 中禁止检查的快速修复
在 YAML 文件(包括 Kubernetes 文件、OpenAPI 规范和 docker-compose.yml
文件)中,新增的快速修复可以通过注释禁止检查。
还引入了一个选项,用于折叠组成 3 行或更多行的块并以 #
开头的多行注释。
适用于 Windows ARM64 的安装程序
GoLand 已经开始分发适用于 Windows ARM64 的安装程序,开发者可以从官方网站或通过 Toolbox App 下载。
更多详情可查看:https://blog.jetbrains.com/go/2022/12/01/goland-turns-5/