文件监视器
文件监视器允许您在 IDE 中更改或保存文件时自动运行命令行工具,例如编译器、格式化工具或代码检查工具。
文件监视器有两个专用的 代码检查:
每个预定义的 File Watcher 适用的文件中都会运行 可用的 File Watcher检查。 如果项目没有配置相关的文件观察器,CLion 建议添加一个。
由正在运行的 File Watcher 调用的 File Watcher problems检查会突出显示特定于它的错误。
您可以使用现有的模板之一或从头开始配置 File Watcher。 配置好的 File Watcher 可以保存在您的项目设置或 IDE 设置中,并在不同的项目中使用。
有关特定工具的文件监视器的更多信息,请参阅相应页面:
请注意,在 CLion 中使用其中的一些工具需要您在 设置 | 插件 页面上安装插件,如 从 JetBrains Marketplace 安装插件中所述。
在开始之前
安装并启用 File Watchers插件,在 设置 | 插件 页面, Marketplace 选项卡中,如 从 JetBrains Marketplace 安装插件中所述。
创建文件观察器
在 设置 对话框(Ctrl+Alt+S )中,点击 文件监视器 下的 工具。 “ 文件监视器页面 ”打开,显示了该项目和 IDE 中已配置的文件监视器列表。
点击
并选择您要从中创建File Watcher的预定义模板。 选择取决于您将要使用的工具。 若要使用不在列表中的工具,请选择 自定义。

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

这些文件的更改将立即或在保存或窗口失去焦点时引发 File Watcher,这取决于 自动保存已编辑的文件以触发监视器 复选框的状态。
从列表中选择一个预定义作用域。 对于项目级文件监视器,您也可以点击
,在打开的 作用域 对话框中配置自定义作用域。
所有位置: 下述所有作用域。
项目文件: 项目根目录内的所有文件。
临时文件和控制台: 位于 临时文件与控制台 目录中的所有文件位于 Project 工具窗口。
打开文件: 当前在编辑器中打开的所有文件。
当前文件: 在活动编辑器选项卡中打开的文件。
或者,点击
并在打开的 自定义作用域 对话框中配置 作用域。
欲了解更多信息,请参阅 文件作用域与文件颜色。
可选地 :指定您希望 File Watcher 如何处理依赖项。 一个 root file 是一个未包括在(例如,通过
import) 指定作用域内的任何其他文件中的文件。要仅针对根文件运行 File Watcher,请选择 仅跟踪根文件 复选框。
清除该复选框以对调用它的文件以及在指定作用域内递归包含此文件的所有文件运行 File Watcher。
请注意, 范围 设置会覆盖 仅跟踪根文件 复选框设置:如果某个依赖超出了指定作用域,文件监视器将不会应用于其。
配置与外部工具的交互
在 更改时运行的工具 区域,指定要使用的工具、传递给它的参数、预期的输出文件类型等。
在 程序(P) 字段中,指定工具的可执行文件的路径( .exe 、 .cmd 、 .bat 或其他,具体取决于具体的工具)。
在 实参(A) 字段中,定义传递给工具的参数。
参数通常使用 宏指定,例如,
$FileName$或$FileNameWithoutExtension$,这些将被替换为实际的文件名。手动键入宏或点击
,然后在打开的 宏 对话框中从列表中选择相关模式。
在 要刷新的输出路径(O) 字段中,指定工具存储其输出结果的文件:生成的源代码、源地图和依赖项。 基于这些设置,CLion 识别通过编译生成的文件。
通常使用 宏 指定输出路径。 您可以手动输入它们或点击
并在打开的对话框中从列表中选择相关项。
要指定多个宏,请使用冒号
:作为分隔符,例如,$FileNameWithoutExtension$.css:$FileNameWithoutExtension$.css.map。展开 工作目录和环境变量 隐藏区域。
定义环境变量。 例如,为 您 正在配置但路径中未引用的工具指定
PATH变量,其中包含启动该工具所需的工具。 在大多数情况下,它是 Node.js 或 ruby.exe。 这种情况可能是由于使用自定义手动安装而非通过 Node Package Manager (npm) 或 gem manager 进行安装导致的。在 工作目录(W) 字段中,指定工具将应用到的目录。
因为该工具总是在文件的上下文中调用,所以默认工作目录是当前文件所在的目录。 所有预定义模板中都用
$FileDir$宏指定了默认工作目录。 若要指定自定义工作目录,请在字段中键入路径,或点击并在 选择路径 对话框中选择目录,或点击
并从 宏 对话框的列表中选择所需的 宏。
配置高级选项
在 高级选项 区域,定制 File Watcher 的默认行为。
指定将触发 File Watcher 的事件:
若要在对源代码进行任何更改后立即调用 File Watcher,请选中 自动保存已编辑的文件以触发监视器 复选框。
清除复选框后,File Watcher 会在保存时启动( )或当您从 CLion 移开焦点(在窗口失去焦点时)。

文件监视器默认在任何已保存的更改时唤醒,包括当您从版本控制系统收到更新时,例如检出分支。 要忽略此类更改并仅在您更新 CLion 中的代码时调用 Watcher,请取消选中 在外部更改时触发监视器 复选框。
指定是否希望 File Watcher 与 CLion 语法解析器进行交互:
当选中 触发监视器,即使存在语法错误 复选框时,文件监视器会在文件语法正确与否的情况下启动。 文件监视器将根据 自动保存已编辑的文件以触发监视器 复选框的状态在更新、保存或框架停用时启动。
当清除 触发监视器,即使存在语法错误 复选框时,文件监视器会忽略语法无效文件中的所有触发器,仅在无错误的文件中启动。
使用 从 stdout 创建输出文件 复选框来指定您希望如何生成输出文件。
当选中复选框时,CLion 会读取本机工具的输出
standard output stream (stdout)并生成结果文件。选中复选框时,该工具会将其输出直接写入 要刷新的输出路径 字段中指定的文件。
在 显示控制台 列表中,选择您希望 File Watcher 何时打开控制台。
始终: 启用此选项后,工具执行完成后控制台总会打开。
出错时: 使用此选项,仅当
Exit code不同于0时,控制台才会在工具执行后打开。Never: 选择此选项可完全禁止打开控制台。
在编辑器中显示由 File Watcher 报告的信息
如果 File Watcher 中配置的工具报告了包含文件和特定行链接的代码错误或警告,您可以在编辑器中直接查看此信息:
在 中,启用检查 文件监视器问题。
在 输出过滤器 字段中, 编辑观察器 对话框描述您想匹配的输出格式。 请使用宏
$FILE_PATH$、$LINE$和$MESSAGE$。 您需要避免使用像大括号和点这样的特殊符号\。 与$MESSAGE$宏匹配的文本将显示在编辑器中。
保存、启用与禁用 File Watchers
保存新的文件监视器后,您可以决定它是仅在当前项目中可用(从 级别 列表中选择 Project )还是对所有项目可用(选择 全局)。

要启用或禁用文件监视器,请打开 设置 对话框(Ctrl+Alt+S ),转到 ,并选中或清除其旁边的复选框。
当您打开一个适用于预定义文件监视器的文件时,CLion 会建议启用文件监视器:

border-effect="line" />
启用 File Watcher 后,只要选定作用域内的选定类型文件被更改或保存,它就会自动启动,详见 配置高级选项。
如果在 File Watcher 运行时发生错误,File Watcher 会自动停用。 若要恢复状态,请手动启用 File Watcher。
为新项目启用全局文件监视器
Global 文件监视器可以在您将来创建的所有新项目中自动启用。
打开 新项目设置 对话框 () ,转到 ,并选中所需 File Watchers 旁边的复选框。
或者,在 欢迎界面 上,从 配置 列表中选择 设置。 在打开的对话框中,选中相关 File Watchers 旁边的复选框。
文件监视器故障排除
可能会显示一个弹出窗口,带有错误消息,同时通知您文件监视器已被禁用。
这里是可能出现的错误列表:
已报告的问题 | 问题描述 | 解决方法 |
|---|---|---|
| 文件监视器使用在此项目中未定义的作用域。 | 双击观察器并选择可用的作用域或创建一个新的。 |
| 该项目使用了一个已被删除的全局 File Watcher。 | 使用 移除 按钮 |
CLion 运行多个相同的 File Watcher 任务 | 在进行批量更新之后,例如来自您的 VCS,CLion 会为每个保存的文件运行一个单独的 File Watcher 任务。 | 在 参数 字段中添加文件特定的宏(如 |