GoLand 最新变化

GoLand 2023.1 引入了漏洞检查器gRPC 代码中更好的导航,以及针对泛型接收器的 Rename(重命名)重构。

现在,您可以运行包含非标准库软件包的临时文件,使用正则表达式创建自己的搜索和替换检查,以及在原始字符串文字与带双引号的文字之间快速转换。 Implement interface(实现接口)意图操作现在适用于未导出的接口。

另外,还有我们新 UI 的多项改进、针对 Docker 和 Kubernetes 的更新,以及针对 Web 开发的改进。

如果您更喜欢互动式学习方式,可以在欢迎屏幕上完成 What's New in GoLand 2023.1(GoLand 2023.1 最新变化)教程。

漏洞检查器

GoLand 会高亮显示 go.mod 中存在已知漏洞的软件包

高亮显示存在漏洞的软件包

GoLand 现在可以高亮显示 go.mod 中存在已知漏洞的软件包。 将鼠标悬停在高亮显示的代码上或按 Alt+Enter,选择 Show vulnerability info for …(显示漏洞信息…),GoLand 将显示漏洞列表以及指向详细描述的链接。 漏洞相关数据由软件安全公司 Checkmarx 提供。

使用快速修复将存在漏洞的依赖项更新为安全版本

将存在漏洞的软件包更新为安全版本

您可以将光标置于 go.mod 中高亮显示的软件包上,按 Alt+Enter,然后选择 Change package-name version to v0.x.x(将软件包名称版本更改为 v0.x.x)快速修复,将依赖项更新为没有漏洞的版本。

GoLand 高亮显示来自存在已知漏洞的软件包的方法调用

高亮显示来自存在漏洞的软件包的方法调用

GoLand 还会在编辑器中高亮显示来自存在已知漏洞的软件包的方法调用。 将鼠标悬停在高亮显示的代码上可以看到一个弹出窗口,其中包含漏洞相关信息以及指向详细描述的链接。

新的 Dependency Checker(依赖项检查器)工具窗口

Dependency Checker(依赖项检查器)工具窗口

您可以在 Code | Analyze Code | Show Vulnerable Dependencies(代码 | 分析代码 | 显示存在漏洞的依赖项)处找到它。

gRPC 导航

使用装订区域图标在 .proto 文件服务与它们在 Go 代码中的实现之间导航

GoLand 的 HTTP 客户端目前支持运行 gRPC 请求。 您还可以从 Endpoints(端点)工具窗口运行 gRPC 请求。

这个版本为我们的 gRPC 功能集提供了另一个有价值的补充。 您现在可以浏览和访问来自 Go 代码的消息、服务和方法的声明,以及来自 .proto 文件的 Go 实现。

点击消息、服务、方法或其实现声明旁边的专属图标即可。

临时文件

在临时文件中使用非标准库依赖项运行代码

使用非标准库软件包运行临时文件

您现在可以使用非标准库 Go 依赖项运行临时文件。 将代码从项目文件复制到临时文件并按 Run(运行)按钮时,GoLand 会创建一个带有 -overlay 标志的 Run(运行)配置。 这个标志与将文件路径映射到原始项目中的 go.modgo.sum 的 JSON 文件一起使用。

泛型

使用 Rename(重命名)重构更改泛型接收器

针对泛型接收器的 Rename(重命名)重构

重命名结构中的类型形参时,Rename(重命名)重构将建议更改对应接收器。

我们修正了几个影响泛型代码中接口、实现和方法规范之间导航的问题。 我们还针对泛型相关误报和漏报实现了多项额外修正。

意图和快速修复

使用意图操作转换字符串文字

不同种类字符串文字之间的转换

现在,可以通过一个意图操作在原始字符串文字(由反引号包围的字符串)与其带双引号的形式之间快速转换。

使用新的快速修复将整数转换为字符串

简化了整数到字符串的转换

此前,将整数转换为字符串时,GoLand 会首先建议 Convert to ‘string’(转换为带单引号的字符串)快速修复。 要正确完成转换,您需要另一个快速修复 Convert integer to string using strconv.Itoa() call(使用 strconv.Itoa() 调用将整数转换为字符串)。

我们简化了这个工作流,GoLand 现在会直接建议 Convert integer to string using strconv.Itoa() call(使用 strconv.Itoa() 调用将整数转换为字符串)快速修复。

对未导出的接口使用 Implement interface(实现接口)意图操作

实现未导出的接口

Implement interface(实现接口)意图操作现在适用于未导出的接口。

使用快速修复从 go 指令中移除前导空格

从 Go 指令中移除前导空格

GoLand 新增的一项检查和快速修复可以帮助您检测和移除 Go 指令(如 //go:embed)中的前导空格。

使用意图操作的预览功能

Intention Preview(意图预览):更多支持的意图和快速修复

在之前的版本中,我们默认启用 Intention Preview(意图预览)功能。

借助此功能,您可以在应用 IDE 的建议后立即查看代码将如何更改。

现在可以预览更广泛的意图操作和快速修复:Introduce local variable(引入局部变量)、Create variable/global variable(创建变量/全局变量)、Create constant/global constant(创建常量/全局常量)、Create field(创建字段)、Merge declaration up(向上合并声明)、Delete all unused parameters(删除所有未使用的形参)、Create function(创建函数)、Create method(创建方法)、Fill all fields(填充所有字段)。

性能改进

智能模式下的 Scanning files to index(正在扫描要建立索引的文件)

我们通过在智能模式下执行 Scanning files to index…(正在扫描要建立索引的文件)进程改进了 IDE 启动体验,这样可以在启动过程中更早地提供完整的 IDE 功能。 打开项目时,GoLand 会使用项目先前会话中的现有缓存,并同时查找要建立索引的文件。 如果在扫描中没有发现更改,IDE 将准备就绪,消除此前启动时建立索引所造成的延迟。

重新配置 Windows Defender 设置的建议

一个新通知会在启用 Windows Defender 实时保护时触发。 由于这些防病毒检查会显著降低 IDE 的速度,GoLand 会建议将特定文件夹添加到 Defender 的排除项列表。 通知提供了自动重新配置这些设置或首先检查 Defender 配置说明并手动执行的选项。

编辑器

编辑器显示接口实现的数量

Code Vision:接口实现

我们更新了 Code Vision 功能。 GoLand 现在会显示接口的实现数量及其方法规范。

在之前的版本中,我们引入了在所有函数和类型附近显示的用法,显示函数或类型在当前项目中被引用的频率。 另外,启用版本控制集成后会显示代码作者。

创建自定义基于正则表达式的检查

自定义基于正则表达式的检查

现在,您可以使用正则表达式创建自己的搜索和替换检查。 这些检查对于高亮显示基于样式或基于格式的问题特别实用。

转到 Settings | Editor | Inspections(设置 | 编辑器 | 检查),按 + 图标。 从列表中选择 Add RegExp Search Inspection(添加正则表达式搜索检查),在新出现的对话框中即可设置新检查。 选择所需语言,使用左侧面板中的提示构建正则表达式,然后指定所需替换。 您还可以指定 IDE 在项目中高亮显示的方式。

GoLand 显示改进的 Go Playground 链接

Go Playground:共享 URL 中的版本参数

在 2022.3 版本中,我们将 Go Playground 功能集成到 GoLand 中。

在这个版本,我们对该功能做出了改进。 首先,选择 dev 或以前的版本时,共享 URL 现在包含版本参数。

我们还为询问是否允许在 Playground 中共享代码的弹出窗口添加了一个关闭选项。 您可以在 Settings | Go | Ask before sharing in Go Playground(设置 | Go | 在 Go Playground 中共享前询问)中将其禁用。

允许控制粘贴内容的位置的设置

指定粘贴内容位置的选项

我们微调了粘贴复制或剪切时未选择内容的行时的用户体验。 新增了一个允许您控制粘贴内容位置的特殊设置。

Settings | Advanced Settings(设置 | 高级设置)中,找到 Editor(编辑器)版块然后从下拉列表中为 Paste(粘贴)操作选择需要的行为。

选择代码时,空格在编辑器中显示为点

仅显示所选代码中空格的选项

Settings | Editor | General | Appearance | Show Whitespaces(设置 | 编辑器 | 常规 | 外观 | 显示空格)中提供了一个新的 Selection(选区)复选框,允许您配置此设置,让 IDE 仅在选择代码时将空格显示为小点。

哈希和特殊值的拼写在编辑器中没有加下划线

不检查哈希和特殊值的拼写

更新的 Typo(拼写错误)检查不再检查哈希和特殊值的拼写,也不会将其报告为拼写错误。 此更新涵盖以下值:

  • Md5、Sha1 和 Sha256 十六进制值。
  • 带有 shaNNN- 前缀的 Sha384 和 Sha512 base64 编码的完整性值。
  • JWT 令牌。
Find Usages(查找用法)工具窗口中显示新的 Call(调用)组

Find Usages(查找用法)中的新 Call(调用)组

我们为函数调用引入了新的 Find Usages(查找用法)组 – Call(调用)组。

我们还针对泛型代码元素用法在 Find Usages(查找用法)窗口中的表示方式实现了一些修正。

用户体验

使用 GoLand 中的 Zoom in(放大)功能增加所有用户界面元素的大小

全 IDE 缩放

现在可以完全放大和缩小 GoLand,同时增加或缩减所有 UI 元素的大小。 从主菜单中,选择 View | Appearance | Switch Zoom IDE(视图 | 外观 | 切换缩放 IDE),调整 IDE 的缩放比例。

Appearance(外观)部分显示 Remember size for each tool window(记住每个工具窗口的大小)设置

新的 Remember size for each tool window(记住每个工具窗口的大小)设置

我们引入了一个新的布局选项,允许您统一侧面工具窗口的宽度或保留在自定义布局时自由调整其大小的能力。 新的 Remember size for each tool window(记住每个工具窗口的大小)复选框位于 Settings | Appearance | Appearance & Behavior | Tool Windows(设置 | 外观 | 外观与行为 | 工具窗口)中。

在新 UI 中,该设置默认关闭,工具窗口以统一宽度显示,并且在切换时大小保持不变。 在旧 UI 中,该选项处于开启状态,工具窗口具有不同的宽度,但您随时可以关闭设置将它们对齐。

排列工具窗口并保存布局

保存多个工具窗口布局

您现在可以保存和管理多个工具窗口布局,并根据需要在它们之间切换。

保存新布局时,首先根据需要排列工具窗口,然后转到 Window | Layouts | Save Current Layout as New(窗口 | 布局 | 将当前布局另存为新布局)。 调整布局时,您可以使用 Save Changes in Current Layout(保存当前布局中的更改)选项更新当前设置,或将这些更改保存为自定义布局。 要激活已保存的布局,首先在 Window | Layouts(窗口 | 布局)的列表中找到它,将鼠标悬停在它的名称上,然后点击 Apply(应用)。

这些设置允许您预定义 Actions on Save(保存时的操作)的行为

为新项目配置 Actions on Save(保存时的操作)的设置

这个版本添加了为新项目预定义 Actions on Save(保存时的操作)行为的选项。

转到 File | New Projects Setup | Preferences For New Projects | Tools | Actions on Save(文件 | 新项目设置 | 新项目偏好设置 | 工具 | 保存时的操作),选择在项目中保存更改时要触发的操作。

新 UI

去年,我们为 GoLand 和其他 JetBrains IDE 引入了更简约的新 UI。 我们一直在根据反馈进一步完善新 UI。 下文介绍了这个版本中新 UI 的关键更改。 您可以勾选 Settings | Appearance & Behavior(设置 | 外观与行为)中的 New UI(新 UI)复选框尝试我们的新 UI。

请参阅此页面详细了解新 UI。

开启 Compact Mode(紧凑模式)

紧凑模式

为了改善较小屏幕上新 UI 的用户体验,我们引入了 Compact Mode(紧凑模式),此模式降低了工具栏和工具窗口标题的高度,缩小了间距、填充以及图标和按钮,提供更为统一的外观。

要开启 Compact Mode(紧凑模式),请转到 View(视图)菜单并选择 Appearance | Compact Mode(外观 | 紧凑模式)。

此外,顶部工具栏在 ZenDistraction Free(免打扰)模式下不再可见。

工具窗口被垂直拆分

工具窗口的垂直拆分

对于新 UI,我们引入了拆分工具窗口区域的选项,让您可以轻松排列窗口。

沿边栏将工具窗口图标拖动到分隔符下,即可将工具窗口添加到此区域下方。 或者,您可以右键点击图标调用上下文菜单,使用 Move to(移至)操作为工具窗口指定新位置。

在 GoLand 中使用项目标签页切换项目

macOS 用户的项目标签页

有多个打开的项目时,您现在可以使用主工具栏下显示的项目标签页轻松切换。 转到 Window | Merge All Project Windows(窗口 | 合并所有项目窗口)即可启用。

标签页显示在下拉菜单中

Show Hidden Tabs(显示隐藏的标签页)现已回归

我们在新 UI 中添加了 Show Hidden Tabs(显示隐藏的标签页)功能。 现在有一个下拉菜单,显示打开的标签页的完整列表,此前它们可能已被隐藏。

窗格显示文件的名称

当标签页被隐藏时可见的文件名窗格

我们微调了新 UI 的用户体验,添加了一个窗格,用于在隐藏编辑器标签页时显示当前打开的文件的名称。

编辑器显示了重新设计的 Run(运行)微件

重新设计了 Run(运行)微件

我们重新设计了 IDE 窗口顶部的 Run(运行)微件。 图标现在是绿色,周围区域不会被颜色遮挡,外观更柔和自然。

Docker

在 testcontainers 的代码中使用容器名称的补全

testcontainers 的补全

在这个版本中,我们为 testcontainers-go 软件包添加了容器名称的补全。

输入容器名称后,您可以使用先前实现的 Pull Docker image(拉取 Docker 镜像)操作。

在同一窗口中显示来自不同容器的日志消息

来自所有 Docker Compose 容器的合并日志

Docker Compose 节点的 Dashboard(仪表板)标签页现在将来自各个 Docker Compose 容器的日志拉取到一处显示,并实时更新。

IDE 显示 Azure 注册表连接的设置

对 Azure 容器注册表的支持

您现在可以轻松连接到 Azure 容器注册表。 转到 Settings | Build, Execution, Deployment | Docker | Docker Registry(设置 | 构建、执行、部署 | Docker | Docker 注册表),在 Registry(注册表)输入字段中选择 Docker V2 选项进行设置。

所示为应用 :z 装载选项以在 SELinux 上绑定卷的新设置

应用 :z 装载选项以在 SELinux 上绑定卷的新设置

您现在可以将 :z 配置标志添加到 Docker 绑定装载,从而将卷连接到 SELinux 工作站上的 Docker 容器。 转到 Settings | Advanced Settings | Docker(设置 | 高级设置 | Docker)可启用此功能。

Kubernetes

创建新的 Kubernetes 资源

New Kubernetes Resource(新建 Kubernetes 资源)弹出窗口中的文件模板

为了使 Kubernetes 文件的创建更简单,我们在右键点击 Project(项目)工具窗口时出现的 New(新建)菜单中添加了新操作 Kubernetes Resource(Kubernetes 资源)。

选择 Kubernetes Resource(Kubernetes 资源)选项后,显示的弹出窗口将列出最流行的资源类型,例如 PodDeploymentConfigMap 等。

添加新 Kubernetes 机密

创建新 Kubernetes 机密的操作

我们引入了一个用于创建 Kubernetes 机密的新对话框。

要定义新机密,您可以手动输入键和值, 也可以指定内容将用于生成的机密的值的文件。

使用颜色编码的更改标记

从集群加载的资源的颜色编码更改标记

对集群中的资源使用 View YAML(查看 YAML)操作和更改打开的文件时,IDE 会在装订区域中使用颜色编码标记高亮显示所有编辑。 这样,您可以确保在应用回集群之前对资源所需部分完成了更改。

使用 Compare with Cluster(与集群比较)功能

此外,使用 Compare with Cluster(与集群比较)图标会打开一个完整差异视图,这个视图将从集群获取资源的当前版本并与本地版本进行比较。

从 Services(服务)视图在编辑器中打开 kubeconfig 文件

改进了 kubeconfig 文件的用户体验

您可以在 Services(服务)视图中轻松访问 kubeconfig 文件,并在编辑器中打开。 如果您在 GoLand 之外更改了 kubeconfig 文件,IDE 将检测到这一点并自动刷新 Services(服务)工具窗口中的配置。 此外,IDE 现在支持 kubeconfig 文件的代码高亮显示和补全。

为 Forward Ports(转发端口)操作指定快捷键

Services(服务)视图中的操作指定自定义快捷键

您现在可以在 Services(服务)视图中为大多数 Kubernetes 操作指定快捷键,例如 Forward Ports(转发端口)、 Delete Resource(删除资源)和 Describe Resource(描述资源)等。 转到 Settings | Keymap | Plugins | Kubernetes(设置 | 按键映射 | 插件 | Kubernetes)即可设置自定义快捷键。

Markdown

在 Markdown 中使用意图操作重新格式化表

重新格式化表

一项新意图操作可用于更正 Markdown 文件中表的格式设置。 您可以通过快捷键 Alt+Enter 或点击黄色灯泡图标并从出现的列表中选择 Reformat table(重新格式化表)来使用快速修复。

使用 Fill Paragraph(填充段落)编辑器操作将长行分成多行

填充段落

Markdown 文件现在支持 Fill Paragraph(填充段落)编辑器操作,您可以将长文本分成几个长度相等的行。 将文本光标置于要编辑的段落内,然后从 Edit(编辑)菜单调用操作或使用 Search everywhere(随处搜索)(按两次 Shift)搜索 Fill Paragraph(填充段落)命令并执行。

带有 Markdown Smart Keys(智能按键)设置的页面

Smart Keys(智能按键)设置页面

我们在 Settings | Editor | General | Smart Keys(设置 | 编辑器 | 常规 | 智能按键)中添加了一个专属页面,用于配置和编辑 Markdown 偏好设置。 这个页面简化了偏好设置管理,为不同编辑器功能提供单独的复选框,取代了以前 Settings | Languages & Frameworks(设置 | 语言和框架)中的单个复选框。

版本控制

在 GoLand 中于分支之间导航

改进了 Branches(分支)弹出窗口

我们改进了 Branches(分支)弹出窗口的实用性。 例如,分支被分组并存储在可扩展列表中,导航更加轻松。

在 Create New Branch(创建新分支)弹出窗口使用补全

Create New Branch(创建新分支)弹出窗口中的补全

我们在 Create New Branch(创建新分支)弹出窗口中实现了补全。 按 Ctrl+空格,IDE 将根据现有本地分支的名称建议相关前缀。

添加新代码时,Structure(结构)窗口中对象的颜色会发生变化

Structure(结构)工具窗口中的 VCS 状态颜色提示

我们在 Structure(结构)工具窗口中添加了颜色提示,使文件更改更易于跟踪。 被修改对象的名称现在为蓝色,新添加对象的名称在工具窗口中高亮显示为绿色。

Notifications(通知)窗口显示提交前检查的结果

后台提交检查

我们重做了 Git 和 Mercurial 提交检查的行为,旨在加快整个提交流程。 检查将在提交之后且推送之前在后台执行。

GoLand 中的 Pull Request(拉取请求)窗口

针对 GitHub 改进了代码审查工作流

我们重做了 Pull Request(拉取请求)工具窗口。 它现在会为您打开的每个拉取请求提供一个专用标签页。 标签页会立即显示已更改文件的列表,但它提供的信息比先前更少, 这让您可以更好地专注于当前任务。 现在,可以通过一个新增的专属按钮轻松执行拉取请求当前状态下最重要的操作。

Web 开发

带有 Astro 插件的插件页面

Astro 支持

Astro 支持已登陆 GoLand。 您可以从 Settings | Plugins(设置 | 插件)安装新增的 Astro 插件。 插件提供基本功能,包括语法高亮显示、带自动导入的代码补全、重构、导航、正确的格式设置等。

将字符串转换为模板文字

字符串到模板文字的自动转换

GoLand 在您输入 ${ 时会自动将带单引号或双引号的字符串转换为模板文字。 这适用于原始字符串以及 JSX 属性。

Vue 模板表达式中 TypeScript 的支持

我们在 Vue 模板中添加了 TypeScript 支持,对应将 script 标记中的 lang 特性设为 ts 的情况。 此前,无论 script 标记中的 lang 特性如何,使用的都是 JavaScript。

注意:要了解 2023.1 版本中的所有 Web 开发改进,请前往 WebStorm 最新变化页面。