2022.3 快要发布了,看有哪些新特性。
性能改进
'go list' 更改以改进索引
当你打开项目时,GoLand 会为文件编制索引并运行`go list`[1]命令,该命令会报告有关项目结构的信息。索引在运行时会暂停go list
,并且在索引完成之前你无法访问代码洞察功能。
以前,GoLand 在某些情况下 go list
会运行两次。我们更改了 API 并设法减少了启动次数。我们希望此更改将显着提高具有大量模块的大型项目的性能。
在打开时从缓存中恢复项目结构
现在,当你打开一个项目时,go list
报告的信息将保存在磁盘的缓存中。当你再次打开该项目时,有关项目结构的数据将从内存中加载并在索引开始时考虑。
多亏了这一点,索引继续进行而不会暂停并更快地完成。go list
仍然需要启动,但它在后台运行。由于这些更改,代码洞察功能在你打开项目后可以更快地使用。
更快的 IDE 启动和项目打开
GoLand 获得了许多其他性能改进,旨在减少在 JetBrains IDE 中启动应用程序和打开项目所需的时间。
一些过去按顺序运行的进程已被并行化。该团队还设法减少了急切的类加载,并在意图操作、检查、一些常量和其他先前不必要地加载和实例化的扩展上节省了大量时间。
几乎所有捆绑插件中的项目组件都已被删除。结果,包括编辑器恢复在内的整体启动性能提高了约 30%。
泛型
泛型函数的测试生成
你现在可以为具有泛型参数的函数生成测试。
快速修复大写类型参数
我们现在有一个检测小写类型参数的检查,以及一个将它们变为大写的快速修复。
Go 工作区
Go 工作区文件操作
在New上下文菜单中,你现在将找到Go Workspace File操作。当你选择它时,一个go.work
文件将出现在你的根文件夹中。现有的 Go 模块将自动添加到go.work
文件中。
使用替换指令生成 go.work
如果那里有替换指令,你现在可以生成go.work
。go.mod
将插入符号放在替换指令上,按Alt+Enter ( ⌥ ⏎ ) 查看所有可用的意图操作,然后选择使用“替换”指令生成“go.work”快速修复。
Go 文档注释
Go 1.19 增加了对文档注释中的链接、列表和新标题的支持。现在 GoLand 也支持这些新功能。
支持链接
我们在 GoLand 中添加了对文档链接的引用。单击它们会导致引用的元素,而单击文本链接会导致文本链接定义。
文本和文档链接都呈现为快速文档弹出窗口和文档工具窗口中的链接。
支持新标题
从 Go 1.19 开始,标题是一个以数字符号 ( #
) 开头的行,后跟一个空格和标题文本。以前,标题是“通过满足某些条件的单行段落隐式识别的,最明显的是没有任何终止标点符号”。[2]
新标题在 GoLand 的快速文档弹出窗口和文档工具窗口中呈现为 HTML 标题。
支持列表
列表项由星号、加号、破折号或 Unicode 项目符号组成,后跟空格或制表符,然后是文本。列表在 GoLand 的快速文档弹出窗口和文档工具窗口中呈现为 HTML 列表。
综合 Go 游乐场
我们在 GoLand 中集成了 Go Playground 功能。
你可以选择一段代码,选择Open in选项,然后单击Playground。这将打开一个带有工具栏的临时[3]文件,其中包含与使用 Go Playground 时相同的选项。
你可以格式化和共享你的代码、更改 Go 版本、使用 Go 游乐场服务器运行你的代码,或在本地运行它。
新的快速修复
无效递归类型的快速修复
如果你的类型包含自身,你将收到“无效的递归类型”错误。为避免这种情况,你应该包含指向类型[4]的指针,而不是类型本身。我们现在有一个快速解决方案。
编辑
Code vision
我们已经开始实施代码视觉功能。现在,如果启用了版本控制集成,我们将显示代码作者。如果你单击代码作者的姓名,则会打开使用 Git blame 边栏,让你查看是谁引入了各种更改。
在此功能实现的后续步骤中,我们将介绍显示在所有函数和类型附近的用法,这些用法和类型显示了该函数或类型在当前项目中被引用的次数。我们还计划以这种方式展示实现和所有兼容的接口。
常量定义的嵌入提示
GoLand 现在显示常量定义块的嵌入提示。iota
这在 -派生的常量块中应该特别有用,其中提示显示iota
与每个位置关联的值。
填充所有字段忽略自动生成的 protobuf 字段
IDE 现在会忽略自动生成的协议缓冲区字段,这些字段XXX_
在你调用Fill all fields意图操作时开始。这些字段仅在你第二次调用完成后才会显示。
其他与 Go 相关的功能
设置中显示的 Go 环境变量
GoLand 现在会自动选择与 Go 模块相关的系统变量,并将它们显示在环境变量对话框窗口中。要打开此窗口,请转到首选项/设置| Go| 转到Go模块并单击编辑环境变量图标。
包名称始终显示在快速文档中
IDE 现在总是在顶级声明的*快速文档弹出窗口中显示包名称。以前,包头仅在找到doc.go
文件时才<pkg_name>.go
显示。
接收器名称不同检查忽略生成的代码
由于Receiver 名称不同,检查与生成的代码无关,我们已对包含与以下正则表达式匹配的注释的文件禁用它:
^// 生成的代码 .* 不要编辑.$
增加文件大小限制
我们已将文件大小限制从 2.5 MB 提高到 10 MB。导航和突出显示等代码洞察功能不适用于超出大小限制的文件。虽然 2.5 MB 的限制对于大多数文件来说已经足够了,但有些项目的文件比这更大——例如,AWS SDK 或 GCP。
HTTP 客户端
用于 JavaScript 处理程序的预请求脚本和新 API
HTTP 客户端现在支持在请求之前执行脚本块。你可以在执行请求之前生成一些数据,并使用变量将其放入最终请求中。可以使用快速修复来创建用于初始化变量的样板代码。
HTTP 客户端现在支持 Crypto API。你可以计算 HTTP 请求的md5或sha1哈希值。
对于简单的情况,IDE 现在具有一组新的随机变量。
代码风格改进
HTTP 客户端现在为带有长 URL 的请求提供了更好的格式化选项。你可以使用将查询参数放在单独的行意图操作将查询分成不同行上的较小片段。
Docker
来自 WSL 的 Docker 可执行文件,没有 Docker Desktop
GoLand 现在支持连接到在 Windows Subsystem for Linux (WSL) 中运行的 Docker。你可以在Settings / Preferences |中设置这样的连接。构建、执行、部署| 码头工人。
新意图动作:Pull image
现在有一种简单的方法来拉取所需的图像,而无需从Dockerfile
或运行它docker-compose.yml
。只需在突出显示的图像名称上调用上下文操作 ( Alt+Enter / ⌥⏎ ),然后选择Pull Docker image。
支持 .dockerignore 文件类型
我们引入了对.dockerignore
文件的全面支持,包括代码突出显示和完成。现在,当你从 IDE 构建映像时,会考虑这些文件。
支持 Dockerfile 文件中的 heredoc 格式
这里的文档允许你将后续Dockerfile
行重定向到RUN
orCOPY
命令的输入。GoLand 现在支持这种语法,因此你可以使用它在你的Dockerfile
文件中生成配置文件或多行脚本。
来自 Docker 上下文的 Docker 连接
如果你的 Docker 配置中已有此类设置,你现在可以使用Docker 上下文[5]设置其他 Docker 连接。你可以通过调用“服务”视图中的“**添加服务”上下文菜单并选择Docker上下文中的 Docker 连接来执行此操作。
用户界面
新用户界面可用
你可能已经知道,今年 5 月,我们宣布了JetBrains IDE 中新 UI 的封闭预览计划[6]。
我们邀请你切换到设置/首选项中的新 UI | 外观与行为| 新的 UI 预览,试用一下,并与我们分享你对这一变化的看法。
默认启用意图动作预览
意图操作的预览功能现在默认开启,因此你可以在应用 IDE 的建议后立即看到你的代码将如何更改。
你可以在意图操作列表打开时按F1 / Ctrl+Q禁用预览功能,并且它将保持禁用状态,直到你以相同方式重新打开它。
将工具窗口停靠到浮动编辑器选项卡
为了更轻松地安排你的工作空间并在多台显示器上与 GoLand 交互,我们实现了将工具窗口拖出主窗口并将它们停靠到浮动编辑器选项卡的选项。
每日改进提示
我们增强了每日提示功能 - 一种帮助你探索 GoLand 的学习工具。
现在每个提示都有一个标题。我们还微调了确定出现哪些提示的算法,以便你可以看到与你的 IDE 体验和你正在处理的项目最相关的提示。
更新的书签
再次可以从编辑器选项卡中为文件添加书签。只需右键单击选项卡即可调用上下文菜单并选择书签。
此外,你可以将所有当前打开的选项卡中的所有文件添加到Bookmarks。为此,请调用相同的上下文菜单并选择Bookmark Open Tabs,或使用位于编辑器选项卡窗格右侧的 kebab(三个点)图标调用此操作。
新设置同步解决方案
我们引入了重新设计的解决方案来同步你的自定义用户设置。很长一段时间以来,有两个插件并行存在并具有交叉功能 - IDE Settings Sync和Settings Repository。为避免因拥有两个类似的捆绑插件而引起的混淆,我们将它们的功能集合并到一个解决方案中——新的Settings Sync插件。
你可以在此处[7]找到有关新统一解决方案的详细信息。
数据库
查看DataGrip 2022.3 EAP 博客文章[8],了解此 Beta 版中提供的用于处理数据库的所有新功能。
Redis 支持
期待已久的对 Redis 支持[9]的初步迭代已经实现。
快速过滤器
现在,当使用快速搜索时,你还可以过滤对象。所有不匹配的对象都将被隐藏。
Web开发
查看WebStorm 2022.3 EAP 博客文章[10],了解此 Beta 版中提供的所有 Web 开发新功能。
JavaScript 和 TypeScript 的代码视觉
此版本为 Web 开发引入了新的Code Vision功能。它收集 JavaScript 和 TypeScript 代码中类型和类型成员的各种指标,并在其声明附近显示此信息。
其他改进
YAML 的编辑改进
有一个新的快速修复程序可以通过 YAML 文件(包括 Kubernetes 文件、OpenAPI 规范和docker-compose.yml
文件)中的注释来抑制检查。
我们还引入了一个选项,可以折叠组成 3 行或更多行的多行注释,并以#
.
适用于 Windows ARM64 的安装程序
我们已经开始分发 Windows ARM64 的安装程序。你已经可以从我们的网站[11]或Toolbox App[12]下载它们。
原文:https://blog.jetbrains.com/go/2022/11/04/goland-2022-3-reaches-beta/
参考资料
go list
: https://go.dev/ref/mod#go-list-m
识别的,最明显的是没有任何终止标点符号”。: https://tip.golang.org/doc/comment
[3]临时: https://www.jetbrains.com/help/go/scratches.html
[4]指向类型: https://stackoverflow.com/questions/8261058/invalid-recursive-type-in-a-struct-in-go
[5]Docker 上下文: https://docs.docker.com/engine/context/working-with-contexts/
[6]JetBrains IDE 中新 UI 的封闭预览计划: https://blog.jetbrains.com/idea/2022/05/take-part-in-the-new-ui-preview-for-your-jetbrains-ide/
[7]你可以在此处: https://blog.jetbrains.com/go/2022/10/14/quick-fix-for-invalid-recursive-type-new-settings-synchronization-solution-and-improvements-for-databases-in-goland-eap-2022-3-3/#User_Interface_New_Settings_Sync_solution
[8]DataGrip 2022.3 EAP 博客文章: https://blog.jetbrains.com/datagrip/category/eap/
[9]的对 Redis 支持: https://blog.jetbrains.com/datagrip/2022/11/02/datagrip-2023-3-eap-2-redis-support/
[10]WebStorm 2022.3 EAP 博客文章: https://blog.jetbrains.com/webstorm/category/eap/
[11]网站: https://www.jetbrains.com/go/download/#section=windows
[12]Toolbox App: https://www.jetbrains.com/toolbox-app/
推荐阅读
文章评论