文件监视器
File Watcher 是 一个 GoLand 工具,可让您在 IDE 中更改或保存文件时自动运行命令行工具,例如编译器、格式化器或 linter。
File Watcher 拥有两个专用的 代码检查:
File Watcher available 检查会在每个适用的文件中运行预定义的 File Watcher。 如果项目尚未配置相关的 File Watcher,GoLand 会建议添加一个。
File Watcher problems 检查由正在运行的 File Watcher 触发,并高亮显示其特定的错误。
您可以使用提供的模板之一,或从头开始配置文件监视器。 配置完成的文件监视器可以保存在项目设置或 IDE 设置中,并在不同项目中复用。 下图列出了文件监视器的预定义模板。 您无法修改预定义模板列表。

如需了解有关特定工具文件监视器的更多信息,请参阅以下页面:
请注意,在 GoLand 中使用其中某些工具需要按照 从 JetBrains Marketplace 安装插件中说明,在 设置 | 插件 页面上安装插件。
创建文件监视器
在 设置 对话框(Ctrl+Alt+S )中,单击 文件监视器 下的 工具。 将打开 File Watchers 页面 ,显示该项目和 IDE 中已配置的 File Watcher 列表。
单击
并选择用于创建 File Watcher 的预定义模板。 该选择取决于您将要使用的工具。 若要使用不在列表中的工具,请选择 自定义。

将打开 新建监视器 对话框。
在 名称 字段中输入 File Watcher 的名称。 默认情况下,GoLand 会建议所选预定义模板的名称。
配置输入文件的预期类型和位置
使用 要监视的文件 区域中的控件定义要应用 File Watcher 的文件范围。
从 文件类型 列表中选择所需的输入文件类型。 File Watcher 将仅分析和处理此类型的文件。 文件类型是根据 文件类型与文件扩展名之间的关联 进行识别的。
默认情况下,该字段会显示与所选预定义模板匹配的文件类型。
选择 File Watcher 适用的 作用域。

对这些文件的更改将立即、在保存或切换窗口时触发 File Watcher,这取决于 自动保存已编辑文件以触发监视器 复选框的状态。
从列表中选择一个预定义作用域。 对于项目级 File Watcher,您还可以单击
,在随后打开的 作用域 对话框中配置自定义作用域。
所有位置: 下方列出的所有作用域。
项目文件: 项目中的所有文件
草稿和控制台:文件 工具窗口中的所有草稿和控制台()。
最近查看的文件: 在编辑器中最近查看的所有文件。
最近更改的文件: 在编辑器中最近更改的所有文件。
模块: 当前模块中的所有文件。
当前文件: 活动编辑器标签页中打开的文件。
所有更改文件: 所有已更改的文件,即与所有现有变更列表关联的所有文件。
默认变更列表: 与变更列表
Default关联的所有文件。
或者,单击
,并在打开的 作用域 对话框中配置 自定义作用域。
有关更多信息,请参阅 作用域。
配置与外部工具的交互
在 更改时运行的工具 区域指定要使用的工具、传递给工具的参数、预期的输出文件类型等。
在 程序(P) 字段中,指定工具可执行文件的路径( .exe 、 .cmd 、 .bat ,或其他,具体取决于工具)。
在 实参(A) 字段中,定义要传递给工具的参数。
参数通常使用 宏 指定,例如
$FileName$或$FileNameWithoutExtension$,这些宏将在运行时替换为实际文件名。您可以手动输入宏,或单击
并在打开的 宏 对话框中从列表中选择相应的模式。
在 要刷新的输出路径(O) 字段中,指定工具存储输出的文件:生成的源代码、source map 和依赖项。 根据这些设置,GoLand 能识别通过编译生成的文件。
输出路径通常使用 宏 指定。 您可以手动输入它们,或单击
并在打开的对话框中从列表中选择相应项。
要指定多个宏,请使用冒号
:作为分隔符,例如$FileNameWithoutExtension$.css:$FileNameWithoutExtension$.css.map。展开 工作目录和环境变量 隐藏区域。
定义环境变量。 例如,指定
PATH变量,用于启动当前配置工具所需但其路径未明确包含的其他工具。在 工作目录(W) 字段中,指定将应用工具的目录。
由于工具始终是在文件上下文中调用的,因此默认工作目录为当前文件所在的目录。 所有预定义模板中的默认工作目录均通过
$FileDir$宏指定。 要指定自定义的工作目录,可在字段中输入路径,或者单击并在 选择路径 对话框中选择目录,或单击
并在 宏 对话框中从列表中选择所需的 宏。
配置高级选项
在 高级选项 区域中,自定义 File Watcher 的默认行为。
指定将触发 File Watcher 的事件:
要在源代码发生任何更改时立即触发 File Watcher,请选中 自动保存已编辑文件以触发监视器 复选框。
清除此复选框后,File Watcher 会在保存操作( )或将焦点从 GoLand 移开(窗体失去焦点)时启动。

默认情况下,File Watcher 会在任何已保存更改时激活,包括从版本控制系统接收到的更新,例如签出分支时。 要忽略此类更改并仅在您在 GoLand 中更新代码时触发 File Watcher,请取消选中 监听外部更改以触发监视器 复选框。
指定是否希望 File Watcher 与 GoLand 的语法解析器交互:
选中 忽略语法错误也触发监视器 复选框后,File Watcher 会在文件语法是否正确的情况下都执行。 File Watcher 会在更新、保存或窗体失焦时启动,具体取决于 自动保存已编辑文件以触发监视器 复选框的状态。
取消选中 忽略语法错误也触发监视器 复选框后,File Watcher 会忽略语法无效的文件中的所有触发器,仅在无错误的文件中启动。
使用 从 stdout 创建输出文件 复选框,指定如何生成输出文件。
选中该复选框时,GoLand 会读取原生工具的输出
标准输出流(stdout),并据此生成结果文件。取消选中该复选框时,工具会将输出直接写入 需要刷新输出路径 字段中指定的文件。
在 显示控制台 列表中选择在何时打开控制台。
始终: 启用此选项后,工具执行完成后控制台总是会打开。
出错时: 启用此选项时,仅当
Exit code与0不同时,工具执行后才会打开控制台。从不: 选择此选项可完全禁止打开控制台。
在编辑器中显示文件监视器报告的信息
如果在 File Watcher 中配置的工具报告了与您的代码相关的错误或警告,并附有文件及具体行号的链接,您可以在编辑器中直接查看这些信息:
在 中,启用检查 文件监视器问题。
在 编辑监视器 对话框的 输出过滤器 字段中,描述您要匹配的输出格式。 为此使用宏
$FILE_PATH$、$LINE$和$MESSAGE$。 请避免在\中使用括号、点等特殊符号。 与$MESSAGE$宏匹配的文本将在编辑器中显示。
保存、启用和禁用文件监视器
保存新的 File Watcher 后,您可以选择仅在当前项目中可用(从 项目 下拉列表中选择 级别 ),或在所有项目中可用(选择 全局)。

要启用或禁用 File Watcher,请打开 设置 对话框(Ctrl+Alt+S ),转到 ,然后勾选或取消勾选旁边的复选框。
当您打开一个适用于某个预定义 File Watcher 的文件时,GoLand 会建议启用该 File Watcher:

border-effect="line" />
启用 File Watcher 后,只要所选类型和作用域的文件被更改或保存,它就会自动开始运行,详见 配置高级选项。
File Watcher 运行期间如果出现错误,将自动被禁用。 要恢复状态,请手动启用 File Watcher。
保存时自动运行文件监视器
您可以将 IDE 配置为在您的更改被 保存 时,自动在已修改的文件中运行 File Watcher。
按 Ctrl+Alt+S 打开设置,然后选择 。
启用 File Watcher 选项并应用更改。
为新项目启用全局文件监视器
全局 File Watcher 可在您将来创建的所有新项目中自动启用。
打开 新项目设置 对话框( ),转到 ,然后选中所需 File Watcher 旁的复选框。
或者,在 欢迎界面 ,从 设置 的 配置 列表中选择。 在打开的对话框中,选中相关 File Watcher 旁的复选框。
文件监视器故障排除
可能会显示一个弹出窗口,包含错误消息并告知该 File Watcher 已被禁用
以下是可能的错误列表:
报告的问题 | 问题描述 | 解决方法 |
|---|---|---|
| File Watcher 使用了当前项目中未定义的作用域。 | 双击该 watcher,选择一个可用作用域或创建一个新作用域。 |
| 项目使用了已被移除的全局 File Watcher。 | 使用 移除 按钮 |
GoLand 运行了多个相同的 File Watcher 任务 | 在进行如从 VCS 批量更新的操作后,GoLand 会为每个保存的文件执行一个单独的 File Watcher 任务。 | 在 参数 字段中添加文件专属的宏(例如 |
技巧与提示
将 gofumpt 配置为文件监视器
按 Ctrl+Alt+S 打开设置,然后选择 。
点击 添加 按钮(
)以添加新 File Watcher,并选择 gofumpt。
点击 确定 保存新的 watcher。
