CLion教程-CLion中的文件监视器

文件监视器允许您在IDE中更改或保存文件时自动运行命令行工具,如编译器、格式化工具或代码检查工具。
文件监视器有两个专用的代码检查:
- “可用的文件监视器”检查在适用预定义文件监视器的每个文件中运行。如果项目没有相关的文件监视器配置,CLion将建议添加一个。
- “文件监视器问题”检查由正在运行的文件监视器调用,并突出显示与该监视器特定的错误。
您可以使用现有模板之一或从头开始配置文件监视器。配置好的文件监视器可以保存在项目设置或IDE设置中,并在不同的项目中使用。
- 当您打开一个适用于预定义文件监视器的文件时,CLion会显示一个窗格,建议激活它。
点击“Yes”以使用默认配置激活文件监视器。
- 如果您点击“No”,CLion将认为建议的文件监视器已被抑制。您仍然可以按照下面的“创建文件监视器”部分的说明手动创建和启用它。
开始之前
在“设置 | 插件”页面上安装并启用“文件监视器”插件,如从JetBrains存储库安装插件中所述。
要在CLion中创建文件监视器,请按照以下步骤进行操作:
- 打开设置对话框,按下Ctrl+Alt+S(或导航到File > Settings)。
- 在设置对话框中,点击“Tools”类别下的“File Watchers”。这将打开File Watchers页面。
- 点击“Add”按钮,并选择要创建文件监视器的预定义模板。选择的模板取决于您要使用的工具。如果要使用的工具不在列表中,请选择“Custom”。这将打开New Watcher对话框。
- 在“Name”字段中,输入文件监视器的名称。默认情况下,CLion会建议使用选定的预定义模板的名称。
配置预期的输入文件类型和位置:
使用“Files to watch”区域中的控件定义要应用文件监视器的文件范围。
- 从“File type”列表中选择预期的输入文件类型。文件监视器将仅考虑该类型的文件进行分析和处理。文件类型根据文件类型和文件扩展名之间的关联进行识别。 默认情况下,该字段显示与选择的预定义模板相对应的文件类型。
选择适用于文件监视器的范围(Scope)。 在这些文件中的更改将根据“Auto-save edited files to trigger the watcher”复选框的状态,立即或在保存或帧失活时调用文件监视器。 从列表中选择预定义的范围之一。对于项目级的文件监视器,您还可以点击“Browse”按钮,在打开的Scopes对话框中配置自定义范围。
- All Places:所有下面列出的范围。
- Project Files:项目根目录中的所有文件。
- Scratches and Consoles:位于Project工具窗口中的Scratches和Consoles目录中的所有文件。
- Open Files:当前在编辑器中打开的所有文件。
- Current File:当前活动编辑器选项卡中打开的文件。
或者,点击“Browse”按钮并在打开的Scopes对话框中配置自定义范围。 有关详细信息,请参阅Scopes and file colors。
可选:指定文件监视器处理依赖项的方式。根文件是指在指定范围内(Scope)的任何其他文件中不包含(例如通过
import
)的文件。- 要仅针对根文件运行文件监视器,请选中“Track only root files”复选框。
- 清除复选框以对调用它的文件以及在指定范围内递归包含此文件的所有文件运行文件监视器。
注意,Scope设置会覆盖“Track only root files”复选框的设置:如果依赖项位于指定范围之外,则不会应用文件监视器。
此选项仅对项目范围的文件监视器可用。
选择自动保存编辑的文件以触发文件监视器的操作:
- 如果您想在每次保存更改时都自动触发文件监视器,请选中“Auto-save edited files to trigger the watcher”复选框。
- 清除复选框以要求手动触发文件监视器。您可以通过右键单击编辑器选项卡,然后从上下文菜单中选择“Run <your-watcher-name>”来手动触发。
此选项适用于项目和全局范围的文件监视器。
- 配置具体的文件监视器参数(根据选定的预定义模板)。 模板配置参数的方式可能会有所不同。如果选择了自定义模板,您可以使用指定的工具的命令行选项和参数自定义文件监视器。
- 点击“OK”以保存文件监视器的设置。
现在,当满足文件监视器的条件时,它将自动运行,并执行您在设置中配置的操作。请确保您已正确配置了所选工具的路径和其他必需的设置,以便文件监视器能够顺利执行所需的任务。
配置与外部工具的交互
在"Tool to run on changes"区域中,指定要使用的工具、要传递给它的参数、预期的输出文件类型等。
- 在"Program"字段中,指定工具的可执行文件路径(.exe、.cmd、.bat或其他具体工具所需的文件类型)。
- 要使用程序文件名而不是其完整路径,请将其所在文件夹的路径添加到
PATH
环境变量中。- 在Windows上,可以省略.com、.exe、.cmd或.bat扩展名。
- 要使用jar归档文件,请指定其绝对路径。或者,要使用相对路径,请在IDE设置的"Appearance & Behavior | Path Variables"页面中,添加其父文件夹到CLion路径变量中,快捷键为Ctrl+Alt+S。
- 在"Arguments"字段中,定义要传递给工具的参数。
参数通常使用宏来指定,例如$FileName$
或$FileNameWithoutExtension$
,它们将被实际的文件名替换。
手动输入宏或点击,从打开的宏对话框列表中选择相关模式。
在指定参数时,请遵循以下规则:
- 使用空格作为分隔符。
- 如果参数包含空格,请用双引号括起来或将整个参数放在双引号中:"some" "arg"或"some arg"。
- 如果参数包含双引号,请使用反斜杠进行转义:-Dmy.prop="quoted_value"。
- 在"Output paths to refresh"字段中,指定工具存储其输出(生成的源代码、源映射和依赖项)的文件。基于这些设置,CLion可以识别通过编译生成的文件。
更改"Output paths to refresh"字段中的值不会使工具将其输出存储到其他位置。如果您仍然需要这样做,请在"Arguments"字段中指定所需的自定义输出位置:使用冒号作为分隔符输入输出路径,并使用宏。
输出路径通常使用宏来指定。手动输入路径或点击,从列表中选择相关模式。
- 展开"Working Directory"和"Environment Variables"隐藏区域。
- 定义环境变量。例如,为配置的工具启动所需但在路径中未引用的工具(如Node.js或ruby.exe)指定
PATH
变量。在大多数情况下,这可能是由于自定义手动安装而不是通过Node Package Manager(npm)或gem管理器进行安装。 - 在"Working directory"字段中,指定要应用工具的目录。
因为工具始终在文件的上下文中调用,所以默认的工作目录是当前文件的目录。所有预定义模板中都使用$FileDir$
宏指定了默认的工作目录。要指定自定义的工作目录,请在字段中输入路径,或点击并在"Select Path"对话框中选择目录,或点击
并从宏对话框的列表中选择所需的宏。
如果将"Working Directory"字段保留为空,CLion将使用调用文件的目录作为工作目录。
配置高级选项
在"Advanced Options"区域中,自定义File Watcher的默认行为。
指定触发File Watcher的事件:
- 要在对源代码进行任何更改后立即触发File Watcher,请选中"Auto-save edited files to trigger the watcher"复选框。
当复选框未选中时,File Watcher在保存(File | Save All)或从CLion移出焦点(在框架停用时)时启动。
- 默认情况下,File Watcher会在保存更改时被唤醒,包括从版本控制系统接收到的更新(例如,检出分支)。如果要忽略此类更改,并且只在CLion中更新代码时触发File Watcher,请清除"Trigger the watcher on external changes"复选框。
指定是否希望File Watcher与CLion的语法解析器进行交互:
- 当选中"Trigger watcher regardless of syntax errors"复选框时,无论文件的语法正确与否,File Watcher都会启动。File Watcher将根据"Auto-save edited files to trigger the watcher"复选框的状态,在更新、保存或框架停用时启动。
- 当清除"Trigger watcher regardless of syntax errors"复选框时,File Watcher会忽略所有语法无效的文件中的触发器,仅在无错误的文件中启动。
使用"Create output file from stdout"复选框来指定如何生成输出文件。
- 当选中该复选框时,CLion会读取工具的输出的标准输出流(stdout),并从中生成结果文件。
- 当清除该复选框时,工具将直接生成输出文件,CLion不会读取其标准输出流。
使用"Delete output file on project cleanup"复选框来指定在清理项目时是否删除生成的输出文件。
- 当选中该复选框时,CLion会在项目清理期间删除生成的输出文件。
- 当清除该复选框时,CLion会保留生成的输出文件。
使用"Show console when a file watcher is triggered"复选框来指定当File Watcher被触发时是否显示控制台窗口。
- 当选中该复选框时,CLion会在触发File Watcher时显示控制台窗口。
- 当清除该复选框时,CLion会在触发File Watcher时隐藏控制台窗口。
注意:这些选项仅适用于具有stdout输出的File Watcher。对于没有stdout输出的File Watcher,控制台不会显示,无论该选项是否选中。
使用"Immediate file synchronization"复选框来指定是否在运行File Watcher之前立即同步文件系统。
- 当选中该复选框时,CLion将在触发File Watcher之前立即将文件系统与内存中的内容同步。
- 当清除该复选框时,CLion将在触发File Watcher时,将内存中的内容与文件系统同步。
注意:默认情况下,File Watcher始终在运行之前立即同步文件系统。
- 点击"Apply"或"OK"按钮应用更改并关闭对话框。
- "Apply"按钮应用更改并保持对话框打开,以便可以继续进行其他更改。
- "OK"按钮应用更改并关闭对话框。
在编辑器中显示File Watcher报告的信息
如果在File Watcher配置的工具中报告了关于代码的错误或警告,并附带文件和特定行的链接,您可以直接在编辑器中查看这些信息:
- 在"Settings | Editor | Inspections"中,启用"File Watcher Problems"检查。
- 在Edit Watcher对话框的"Output Filters"字段中,描述您想要匹配的输出格式。使用宏
$FILE_PATH$
、$LINE$
和$MESSAGE$
。请避免使用特殊符号,如大括号和点号,可以使用反斜杠进行转义。与$MESSAGE$
宏匹配的文本将显示在编辑器中。
保存、启用和禁用File Watchers
保存新的File Watcher后,您可以决定它只在当前项目中可用(从"Level"列表中选择"Project")还是在所有项目中可用(选择"Global")。
- 要启用或禁用File Watcher,打开"Settings"对话框(Ctrl+Alt+S),转到"Tools | File Watchers",并选中或清除旁边的复选框。
当启用File Watcher时,只要更改或保存所选类型和范围内的文件,它就会自动启动。
如果File Watcher在运行时发生错误,它将自动禁用。要恢复状态,请手动启用File Watcher。
为新项目启用全局File Watchers
全局File Watchers可以自动在您未来创建的所有新项目中启用。
- 打开"Settings for New Projects"对话框(File | Settings for New Projects),转到"Tools | File Watchers",并选中所需File Watchers旁边的复选框。
- 或者,在Welcome Screen上,从"Configure"列表中选择"Settings"。在打开的对话框中,选中相关File Watchers旁边的复选框。
解决File Watchers的问题
在"Settings | Tools | File Watchers"列表中,File Watcher旁边可能会有一个红色的错误消息。
以下是可能的错误列表:
报告的问题 | 问题描述 | 解决方法 |
---|---|---|
Unknown Scope error | File Watcher使用了此项目中未定义的范围。 | 双击Watcher,选择可用的范围或创建一个新范围。 |
Not found error | 项目使用了被删除的全局File Watcher。 | 使用"Remove"按钮 |
CLion runs numerous identical File Watcher tasks | 例如,从您的版本控制系统进行批量更新后,CLion为每个保存的文件运行单独的File Watcher任务。 | 在"Arguments"字段中添加特定于文件的宏(例如&FileNameWithoutExtension& )。 |