GoLand 最新变化

在 GoLand 2020.3 中,您可以浏览 goroutine 转储,运行并导航至各个表测试,并从对 Testify 测试框架的扩展支持中大大受益。 您还将发现许多新的代码编辑功能,包括对时间包的支持、更智能的软件包处理方式、UI 改进、用于 Web 开发和使用数据库的多种新功能,以及一项针对协作开发和结对编程的新服务。

喜欢交互式学习,而不是阅读信息? 在 IDE 的 Welcome 界面上完成 What's New in GoLand 2020.3 教程。

调试器改进

在调试器中浏览 goroutine 堆栈

借助调试器中的新 Dump Goroutines 图标,您可以在调试会话期间轻松地在堆栈中查找包含指定字符串的 goroutine。 只需点击图标即可在单独的窗口中打开转储。

为了帮助您专注于重要信息,提供了隐藏单个 goroutine 或多个具有相同堆栈的 goroutine 的选项。 右键点击 goroutine 并选择所需操作,或者按 Delete 键以将其移至转储窗口中的特殊 Hidden 部分,以免分散您的注意力。

停止 'Go Remote' 配置

在 GoLand 2020.3 中,如果不需要重新附加,用户可以停止具有 Go Remote 配置的进程。

在配置设置中,您可以指定调试器在断开连接时的默认行为,可以选择 Stop remote Delve processesLeave it running,或者让 GoLand 每次询问您如何继续。

测试增强功能

运行单独的表测试

支持表测试

您可以从 Run 工具窗口运行并导航至各个表测试。

存在一些限制:

  • 测试数据变量必须为切片、数组或映射。 它必须在与调用相同的函数中定义,并且在初始化后不得触动(for 循环中的 range 子句除外)。
  • 各个测试数据条目必须为结构文字。 子测试名称表达式中使用的循环变量在调用前不得触动。
  • 子测试名称表达式可以是测试数据中的字符串字段、测试数据字符串字段的串联以及使用 %s%d 动词的 fmt.Sprintf() 调用。
GoLand 会在测试函数内提供参数建议

Testify 的扩展支持

现在,IDE 可以识别能够启动测试套件的测试函数,并提供了启动单个 suite.Runsuite.T().Run 的方法(子测试名称需要为字符串常量)。 另外,可以从 Run 工具窗口重新运行子测试,以避免重新运行整个顶级测试。

此外,GoLand 现在可以在单个测试用例中分别运行具有相同方法名称的 Testify 套件。

最后但同样重要的是,当您完成接受 testing.T 作为第一个参数的函数或方法时,GoLand 会在可行情况下自动传递该参数。 这适用于 testify/asserttestify/requiretestify/mocktestify/suite 软件包的函数和方法。

代码检查

GoLand 会在编辑器中提供有关潜在问题的警告,并显示 'Add format string argument' 意图

Incorrect usage of Println/Printf like functions 代码检查将警告您注意 github.com/pkg/errorsgithub.com/sirupsen/logrusgo.uber.org/zap 软件包中的潜在问题。

除此之外,我们还添加了占位符高亮显示和折叠,以及 Add format string argument 意图。

当执行路径无法调用 cancel 函数时,GoLand 会发出警告

context.CancelFunc not called code 检查会报告潜在的上下文取消不安全使用问题。 当未在所有执行路径上调用由 context.WithCancel 返回的 ‘cancel’ 函数(以及类似函数)时,此功能特别实用。

要详细了解此软件包,请访问:https://golang.org/pkg/context/

代码编辑

GoLand 可对时间布局提供代码补全

支持时间包

我们增加了对时间包的支持,因此您可以更方便地使用时间和持续时间。 GoLand 将通过代码补全 (Ctrl+Space) 提供预定义布局元素建议,格式为符合 ISO-8601 标准的 YYYYMMDD 占位符。

在令牌上按 Ctrl+P,IDE 随即会显示其含义。 另外,还提供了针对布局令牌的语法高亮显示。 代码补全功能还可以提供字符串文字之外的标准时间布局建议。

通过 Alt+Enter 从导入和代码补全中排除软件包

更智能的软件包处理

现在,IDE 可以更智能地优先处理您常用软件包的补全项,常用软件包在项目的 go.mod 文件中显式声明。

我们还添加了一个选项,可将软件包从项目导入路径和补全建议中完全排除。 您可以通过 Alt+Enter 或在新的 Exclude for import and completion 窗口(通过 Settings | Go | Imports 打开)中执行此操作。

GoLand 会使用另一种颜色高亮显示掩蔽任何现有声明的变量

支持变量掩蔽

GoLand 使发现变量掩蔽变得更加容易:

  • IDE 现在会以不同的颜色显示掩蔽任何现有声明的变量。
  • Navigate to shadowing declaration 意图操作使您可以立即切换到被掩蔽的声明。
GoLand 支持在类型参数中使用方括号

在类型参数中使用方括号

>我们遵循了 Go 团队为泛型设计提供的更新,对泛型语法添加了方括号支持(非上一个提议版本中实现的圆括号)。

请注意,Settings | Go 中的 Enable generics (experimental support for type parameters) 设置默认处于关闭状态。 您需要明确地选中该复选框才能开始使用这一功能。

阅读这篇博文以详细了解类型参数。

其他改进

GoLand 在代码补全建议列表中显示 'Test' 和 'Benchmark' 实时模板

当您在测试文件中键入 func 时,GoLand 默认会在补全选项中建议 benchtest 实时模板

GoLand 提供在基准内使用 b.N 补全 for 循环的建议

当您在基准中键入 for 时,IDE 会提供使用包含 b.N 的 for 循环进行补全的建议。

GoLand 提供拼写错误修复建议

改进了拼写和语法检查工具

现在,当您按 Alt+Enter 后,会立即在对话框中显示建议。 此外,新版本的 LanguageTool 语法检查引擎功能还改进了英语检查效果,并增加了对另外 10 种语言的支持。

Code With Me

正在运行的 'Code With Me'

GoLand 2020.3 支持 Code With Me (EAP),这是 JetBrains 为协作开发和结对编程提供的一项新服务。 利用 Code With Me,您可以与其他人共享 IDE 中当前打开的项目,并实时协同处理。

查看这些博文以了解详情。

UI 改进

重新设计的欢迎屏幕

重新设计的欢迎屏幕

我们重新设计了欢迎屏幕,使您可以立即访问:

  • 项目搜索。
  • 用于自定义 IDE 的设置。
  • 用于扩展 IDE 功能的插件。
  • 用于详细了解 IDE 功能的教程。
设置中的 Sync with OS 主题选项

将 IDE 主题与您的操作系统偏好设置同步

Settings | Appearance & Behavior | Appearance | Theme 中选择 Sync with OS 选项以自动切换您的 IDE 主题来匹配您的操作系统偏好设置。

拖动标签页以拆分编辑器

将标签页拖放到任意位置以拆分编辑器

通过将标签页拖放到所需位置,即可水平或垂直拆分主编辑器屏幕。 拖动标签页时,编辑器将高亮显示您可以将其放置的位置。

在编辑器中打开第二个文件

项目视图更新

我们改进了在 Project 视图中处理文件时的用户体验。 现在,当您从 Project 视图打开文件时,光标会自动置于编辑器上,这样一来,您可以立即开始处理代码。 按空格键后,IDE 将在 Project 视图中为您显示文件预览。

如果您想要在编辑器中同时打开多个文件,现在只需一个简单的快捷键即可实现。 在 Project 视图中选择文件并按 Shift+Enter,IDE 会拆分编辑器窗口并在右半部分中打开文件。

VCS 更新

重新设计的 VCS 菜单

重新设计了 VCS 菜单

现在,VCS 菜单可以适应您当前正在使用的版本控制系统,重要 VCS 功能不再隐藏在子菜单中,因此可以更方便地访问。

Git 暂存区域

支持 Git 暂存区域

现在,加入了一个非常实用的新 Git 暂存区域! 请注意,此功能仅适用于 Commit 工具窗口。

Settings | Version Control | Git 中勾选 Enable staging area 复选框即可开启。 勾选后,将禁用对更改列表的支持。

在提交 UI 中,您将找到暂存和未暂存的文件。 准备好暂存文件后,只需点击文件旁边的 + 图标。 该文件将在 Staged 节点下显示。 要向暂存区域添加更改,您也可以使用装订区域图标或 Show Diff

GoLand 可以更正不正确的分支名称

改进了分支的使用

分支的使用已得到改进:

  • IDE 现在可以自动更正新分支名称中未被接受的符号,这有助于您创建符合接受的格式的分支。
  • 现在,IDE 将向您显示当前所选分支可用的所有操作,就像其他分支一样。
  • 对于远程分支,我们已将 Merge into CurrentRebase Current onto Selected 操作重命名为 Pull into Current Using MergePull into Current Using Rebase

更多功能

为所有项目禁用插件

按项目启用插件

我们添加了为当前项目或所有项目启用插件的功能,方法分别为选择 Enable for Current ProjectEnable for All Projects。 在 Settings | Plugins 中,按想要启用或禁用的插件上的齿轮图标,然后选择所需选项。

设置中的 macOS 系统快捷键

macOS 的系统快捷键

macOS 系统快捷键按键映射 (Settings | Keymap) 旨在为您提供对系统快捷键兼容性加以扩展的替代 macOS 按键映射,并使您可以避免使用功能 (F) 键进行基本操作。

分析器中正在运行的火焰图

分析器 – 火焰图

我们改进了分析器中火焰图的搜索机制及其可视化效果,使您可以更快地查找方法指标。 您可以点击放大镜图标或在 Flame Graph 面板内键入搜索请求。

此外,我们还添加了搜索字段以及可在搜索结果之间快速导航的向上/向下箭头,并支持在整个火焰图或仅在特定子树中进行搜索。

Web 开发更改

根据用例创建 React 组件

根据用例创建 React 组件

得益于 WebStorm 团队的付出,GoLand 现在可以在底层为 Web 开发提供丰富的支持。 在这方面,即将实施的一项更改是将支持通过未解析的引用创建 React 组件。 在未解析的组件上放置脱字符号,按 Alt+Enter,然后选择相应的检查。

GoLand 在计算机上找到 pnpm

全面支持 pnpm

GoLand 为 pnpm 软件包管理器以及 npm 和 yarn 提供了全面支持。 当您打开包含 pnpm-lock 文件的项目并且计算机上安装了 pnpm 时,GoLand 会自动将此项目的软件包管理器更改为 pnpm。 IDE 还在软件包管理器列表(位于 Settings | Languages and Frameworks | Node.js and NPM 下)中提供了专用的 pnpm 选项。

Webpack 设置

对多个 webpack 配置提供基本支持

在 GoLand 2020.3 中,您可以选择手动检测还是自动检测 webpack 配置文件。 新选项位于 Settings | Languages & Frameworks | JavaScript | Webpack 下。

处理数据库

添加 Couchbase 查询作为数据源

Couchbase 支持

得益于我们 DataGrip 团队同事的付出,GoLand 支持的数据库家族迎来一个新成员 – Couchbase! 请注意,IDE 支持 Couchbase Query 服务,但不支持 Couchbase Analytics 服务。

GoLand 在对象的 DDL 中显示授权

支持授权

GoLand 现在了解对象授权,并且会将它们显示在对象的 DDL 中。 这适用于 MySQL、PostgreSQL、Greenplum、Redshift 和 SQL Server。

GoLand 在单独的编辑器中显示格式化的值

单独的单元格值编辑器

我们改进了单独的单元格值编辑器:

  • 现在,即使值未正确格式化,也会显示格式化的值。
  • 可以在格式化视图中编辑该值,并以单行 XML 和 JSON 中的原始格式设置对其进行更新。
  • 如果屏幕的宽度对流程至关重要,则可以将单元格值编辑器移至数据编辑器的底部。
  • 此面板现在还可以显示图像!
正在运行的 'One-Row' 提取工具

导入/导出数据库

我们新增了两个提取工具来帮助您更轻松地处理数据:

  • One-Row 可以帮助您将列复制到以逗号分隔的字符串中。
  • SQL-Insert-Multirow 行将生成一条包含多个要插入的新行的 INSERT 语句。

此外,CSV 格式配置中现在添加了一个新选项:never quote values。