GoLand 2023.3 最新变化

GoLand 2023.3 带来多项重要的新功能:

  • JetBrains 的 AI Assistant 现已全面推出,搭载大量新功能和改进,助力提高您在 JetBrains IDE 中的工作效率。
  • Dev Container 现已得到正式支持。 我们正在开发功能集,并积极推进 Dev Container 支持,因此它们带有“Beta”标记。
  • 错误处理、单行 returnspanics 以及其他代码的代码折叠样式的巨大更新。
  • 提高工作效率的多项提示、重构和快速修复,例如 slice 表达式的提示、自定义 printf 式函数的代码洞察,以及调试器增强。

GoLand 2023.3 还提供了针对 Docker 与 Kubernetes 集成、VCS 的更新,以及针对 Web 开发的一些调整。 现在就来深入了解一下吧!

AI Assistant 正式版

最新更新包括编辑器中增强的直接代码生成、无需复制代码即可回答项目相关查询的上下文感知 AI 聊天,以及使用扩展上下文提供更全面结果的项目感知 AI 操作。 新的差异查看器有助于更轻松地识别 AI 操作对代码所做的更改。

订阅 JetBrains AI Service,在 GoLand 中以补充功能的形式使用 AI Assistant。

GoLand 中的 AI Assistant:Rename(重命名)

命名并不简单! 因此,GoLand 中的 AI Assistant 会建议函数的命名思路以提高可读性。

GoLand 中的 AI Assistant:Write documentation(编写文档)

编写代码文档是一种繁琐而必要的例程。 只需点击几下,Write documentation(编写文档)操作即可快速编写注释良好的代码。

GoLand 中的 AI Assistant:Generate Unit Test(生成单元测试)

AI Assistant 可以帮助您为特定函数或方法创建测试,并在创建初始测试类后建议添加更多测试用例。

重构

在另一个软件包中 Create function(创建函数)的快速修复

快速修复允许输入不存在的函数名称,然后在所需软件包中生成实现。

Extract Parameter(提取形参)重构

2023.3 版本带来了备受期待的 Extract Parameter(提取形参)重构的第一部分。 针对未解析引用的 Create Parameter(创建形参)快速修复允许您选择未解析的引用并使用快速修复选项创建形参。 如果不够精确,该快速修复还允许更改形参类型,提供默认值,并通过默认值更改调用。

Dev Container Beta

对 Dev Container 的支持

GoLand 现已支持 Dev Container,允许您使用容器作为全功能开发环境来编辑、构建和运行项目。 Dev Container 可以通过 SSH 连接远程运行,也可以使用 Docker 本地运行。

对 Dev Container 功能的支持

GoLand 2023.3 现已支持 Dev Container 功能,有助于方便、快速地集成开发所需的额外工具、运行时和库。

对 Dev Container 内 Docker Compose 的支持

我们还引入了对 Dev Container 内 Docker Compose 的支持,使主容器和 IDE 以及任何依赖容器(例如具有数据库或消息队列的容器)均可无缝启动,这在开发过程中非常有用。

改进的代码折叠

单行 returnspanics

对于单行 returnspanics,现在可以选择使用新的简明代码折叠样式,外观更接近原始代码。

新折叠语法默认启用。

我们为 case 子句使用类似的方式:移除向上箭头,仅折叠双冒号。

具有单 returns 的函数

与单行 returnspanics 相同,我们也为带有单条 return 语句的函数启用了折叠。

错误处理

为了提高错误处理代码的可读性,GoLand 会自动折叠错误处理 if 块。
对于带有错误处理代码的 if 块,GoLand 还会折叠所有单一语句,例如日志记录调用。

禁用 string 格式设置的代码折叠

我们禁用了 string 格式设置的代码折叠,使相关语法更加明显。 此外,在新的代码折叠方式下,无需展开代码块即可对其进行编辑。

代码补全

枚举的 switch 生成

GoLand 现在可以协助编写枚举的 switch 语句。 它会在补全中建议为所有值生成 case。

当 case 包含使用 iota 声明的常量时关于缺失分支的警告

该检查可以帮助您跟踪 iota 常量的 switch 表达式。 它会就 switch 未涵盖的 case 向您发出警告,并提供两种解决方案:添加缺失的子句或添加默认子句。

运行和构建

程序的代码覆盖率配置文件

这项功能允许您准确查看单次或多次运行中到达的代码。 它还有助于检测死代码。
此前,它仅适用于测试运行,现在,您也可以使用 Coverage(覆盖率)运行 main 函数。

其他 Go 相关功能

slice 表达式的形参提示

slice 表达式可能引起困惑,特别是具有三个索引的表达式。 现在,GoLand 将在您构建切片时显示提示。

自定义 printf 式函数的代码洞察

GoLand 为标准 printf 式函数提供了大量实用功能:占位符高亮显示、错误检测、代码折叠等。 现在,这些功能都可用于用户定义的 printf 式函数。

数据流分析

GoLand 2023.3 引入了基于 CLion 中所用引擎的精细数据流分析器。 这项功能可以检测更广泛的代码问题,例如潜在 nil 解引用、不正确或缺失的错误处理以及始终为 true/false 的条件。

请注意,此功能目前处于抢先体验阶段,默认禁用。 您可以在 Settings | Editor | Inspections | Go | Data Flow Analysis (experimental)(设置 | 编辑器 | 检查 | Go | 数据流分析(实验性))中启用并向我们提供反馈!

通过 asdf 支持本地 Go 安装

asdf 是一种 CLI 工具,可用于管理多种语言运行时版本。 基于社区反馈,我们决定在此版本中包含 asdf 支持。 在此版本中,GoLand 将检查 .tool-versions 文件中的 Go 版本,并为所选项目使用适当的 Go 版本。

Go 1.21 的向前兼容和工具链管理

Go 1.21 及更高版本可以更好地确保不会错误编译需要更新版本的 Go 的代码。 具体来说,go.mod 中的 go 行现在会指定所需的最低 Go 工具链版本,而在之前的版本中,这基本上是未强制执行的建议。

现在,GoLand 完全支持此流程,并使用 gotoolchain 行自动下载 go.mod 文件中指定的 SDK 版本。 指定版本也会在 Go project(Go 项目)设置中自动设置。

vendoring 支持性能改进

GoLand 2023.3 已迁移到新型 IntelliJ Platform API,因此如果项目包含 vendor 目录,它不会再次运行 go list -m。 缓存的更有效利用可以提高包含大量 Go 模块的项目的性能。

调试器

Run to Cursor(运行到光标)嵌入选项

新的 Run to Cursor(运行到光标)嵌入选项提供了在调试时快速导航到特定代码行的方式。 程序挂起后,您可以将鼠标悬停在您希望继续执行的代码行上。 然后,您可以利用 Run to Cursor(运行到光标)弹出窗口执行代码,直至到达光标所在的行。

VCS

对 GitLab 代码段的支持

为了扩展 GitLab 集成,我们添加了对 GitLab 代码段的支持。 您现在可以直接在 IDE 中创建公共或私有代码段。

Kubernetes

从文件添加集群上下文的选项

现在,您可以从位于所需系统外的目录中的集群轻松添加 kubeconfig 上下文。 项目将包含指向 kubeconfig 文件的链接,使这些集群在您处理项目时可用。 以这种方式添加的 kubeconfig 内容不会被复制到系统 (~/.kube/config) 中,也不会被修改。 频繁从云或本地部署环境添加和移除 Kubernetes 集群时,此功能特别实用。 了解详情

Kubernetes 工具自动安装

开始使用 Kubernetes 插件时,您可能需要安装 kubectl 和/或 Helm。 如果您的计算机上还没有,IDE 将为您自动安装。

改进的 Telepresence 调试

Telepresence 允许您在本地调试 Kubernetes 应用程序的微服务,就好像您的工作站是集群的一部分。 在这个版本中,我们将 Telepresence 工作流移动到集群的上下文菜单,使其更易于访问。 我们还简化了拦截管理,提供更流畅的调试体验。

对 Terraform 中 import 块的支持

GoLand 支持 1.5 版 Terraform 配置语言的顶层 import 块。 import 块允许您将当前基础架构纳入 Terraform 的管理范围。 当 import 在代码块中使用时,它将成为标准方案和 apply 周期的一部分,而不再是状态操作。 Terraform 会为导入的资源执行自动代码生成,节省开发基础架构即代码的时间。

其他更新

针对 TypeScript 的改进

GoLand 2023.3 解决了添加 import type 语句时出现的不一致。 我们添加了用于在导入类型时配置 TypeScript import type 语句或类型说明符的用法的选项。 我们还为 TypeScript 文件改进了 package.jsonexports 字段的行为。

HTTP 客户端改进

我们改进了 Structure(结构)视图,在大型 .http 文件中提供更好的导航。 此更新还为请求类型引入了颜色编码标签,可以清晰地列出内容。 我们还支持使用 @ 声明变量以及使用 OAuth 2.0 密码和客户端凭据授予类型进行身份验证。

Cypress 和 Playwright 支持

GoLand 将自动检测 Cypress 和 Playwright 测试,然后让您一键运行和调试。 支持还包括通过浏览 Test Tree(测试树)探索结果和发现问题的功能。

全功能差异查看器

这是改进的代码更改审查方式。 现在,您可以在单个可滚动框架中查看来自更改集的所有已修改文件,无需逐一查看每个文件。 了解详情