PHP_CodeSniffer
PhpStorm 通过与PHP_CodeSniffer工具的集成提供代码样式检查,该工具可验证您的代码是否与您选择的编码标准保持一致。您可以指定预定义的编码标准之一,或使用您自己先前定义的编码标准,根目录位于默认 PHP_CodeSniffer 的Standards目录之外。此外,您可以与您的团队分享您的自定义编码风格。
要在 PhpStorm 中使用 PHP_CodeSniffer 而不是命令行,您需要在 PhpStorm 中注册并将其配置为 PhpStorm代码检查。一旦在 PhpStorm 中安装并启用,该工具就可以在任何打开的 PHP 文件中使用,并且不需要额外的步骤来启动它。文件中的每次更新都会激活动态代码检查,因此可以轻松摆脱发现的问题。
PHP_CodeSniffer 即时报告的错误和警告显示为弹出消息。当该工具以批处理模式运行时,错误和警告会显示在“问题”工具窗口中。每条消息都有phpcs
前缀以将其与 PhpStorm 内部检查区分开来。PhpStorm 还与PHP Code Beautifier and Fixer工具集成,可让您修复许多检测到的问题。
先决条件
在将 PHP_CodeSniffer 集成到 PhpStorm 之前,请确保满足以下先决条件:
您正在使用 PHP_CodeSniffer 1.5.0 及更高版本。
必须将包含 PHP 引擎可执行文件的目录添加到系统中
path
。这允许代码质量工具脚本执行对系统范围的 PHP 引擎的调用。对于基于 Docker Compose 的远程解释器,请确保使用
exec
mode 以避免产生额外的容器。在设置/首选项对话框 ( Ctrl+Alt+S) 中,转到 。
在打开的PHP页面上,单击CLI 解释器列表旁边的。
在打开的CLI 解释器对话框中,将所选解释器的生命周期模式设置为连接到现有容器 ('docker-compose exec')。
安装和配置 PHP_CodeSniffer
PHP_CodeSniffer 脚本可以用作本地脚本、与 PHP 解释器关联的脚本,或者声明为项目依赖项并通过Composer安装的脚本,这是首选和推荐的方式。
使用 Composer 安装 PHP_CodeSniffer
在开始之前,请确保 Composer 已安装在您的计算机上并在当前项目中初始化,如Composer 依赖项管理器中所述。
当您使用 Composer 安装 PHP_CodeSniffer 时,PhpStorm 会自动下载必要的脚本,在 IDE 中注册它们,并且可以选择启用和配置相应的代码检查。
在composer.json中,将squizlabs/php_codesniffer依赖记录添加到
require
orrequire-dev
部分。按Ctrl+Space以获得包名称和版本的代码完成。执行以下操作之一:
单击编辑器面板顶部的安装快捷方式链接。
如果启用了未安装的 Composer 包检查,PhpStorm 将突出显示当前未安装的已声明依赖项。按Alt+Enter并选择是否要一次安装特定依赖项或所有依赖项。
点击composer.json编辑器gutter中包记录旁边的,跳转到对应的Settings/Preferences页面,手动配置PHP_CodeSniffer。
重置 PHP_CodeSniffer 配置
初始配置 PHP_CodeSniffer 后,composer.json中的进一步修改不会影响检查配置。要应用更新的更改,请重置 PHP_CodeSniffer 配置。
在设置/首选项对话框 ( Ctrl+Alt+S) 中,导航到 。
在打开的质量工具页面上,展开PHP_CodeSniffer区域并单击配置列表旁边的。
在打开的PHP_CodeSniffer对话框中,清空PHP_CodeSniffer 路径字段。
通过单击composer.json编辑器面板顶部的更新来更新项目 Composer 依赖项。有关详细信息,请参阅更新依赖项。
PhpStorm 将重新执行 PHP_CodeSniffer 配置,从而应用composer.json中的更改。
手动配置 PHP_CodeSniffer
您可以使用手动下载的本地 PHP 代码质量工具脚本或与 PHP 解释器关联的脚本。可以有许多本地和远程 PHP 解释器,在Settings/Preferences对话框的PHP页面上指定的解释器被认为是Project Default。在配置远程 PHP 解释器或配置本地 PHP 解释器中了解有关配置 PHP 解释器的更多信息。
选择要使用的 PHP_CodeSniffer 脚本
在设置/首选项对话框 ( Ctrl+Alt+S) 中,导航到 。
在打开的Quality Tools页面上,展开PHP_CodeSniffer区域。从配置列表中,选择 PHP_CodeSniffer 脚本:
要使用与特定远程 PHP 解释器关联的脚本,请选择该解释器的名称。
要使用本地脚本,请选择Local。在这种情况下,无论项目中使用的是本地还是远程的 PHP 解释器,都会执行本地 PHP_CodeSniffer。请注意,PHP_CodeSniffer 只能有一个本地配置,因为 PhpStorm 运行包含 PHP 引擎路径的脚本( Windows 为phpcs.bat ,Linux 和 macOS 为phpcs )。
要使用与默认项目解释器关联的脚本,即在设置/首选项对话框的PHP页面上选择的脚本,请选择默认项目解释器。
配置本地 PHP_CodeSniffer 脚本
下载并安装PHP_CodeSniffer脚本。
要检查 PHP_CodeSniffer 安装,请切换到安装目录并运行以下命令:
phpcs --版本如果该工具可用,您将收到以下格式的消息:
Squiz 的 PHP_CodeSniffer 版本 <version>(稳定)。(http://https://uiz.net)要根据您自己的自定义编码标准检查代码,请创建它。将规则和指向它们的规则集.xml文件存储在编码标准根目录中。
在 PhpStorm 中注册本地 PHP_CodeSniffer 脚本:
在设置/首选项对话框 ( Ctrl+Alt+S) 中,导航到 。
在打开的质量工具页面上,展开PHP_CodeSniffer区域并单击配置列表旁边的。
在打开的PHP_CodeSniffer对话框中,在PHP_CodeSniffer 路径字段中指定phpcs.bat或phpcs PHP_CodeSniffer 可执行文件的位置。手动键入路径或单击并在打开的对话框中选择相关文件夹。
要检查phpcs.bat或phpcs的指定路径是否确保了 PhpStorm 和 PHP_CodeSniffer 之间的交互,即可以从 PhpStorm 启动该工具,并且 PhpStorm 将从它接收问题报告,请单击“验证”按钮。此验证等同于运行
phpcs --version
命令。如果验证成功通过,PhpStorm 会显示检测到的 PHP_CodeSniffer 版本信息。
如有必要,在Tool process timeout字段中,指定您希望 PhpStorm 等待 PHP_CodeSniffer 的结果多长时间,然后终止进程以防止过多的 CPU 和内存使用。
如有必要,在PHP Code Beautifier and Fixer Settings区域的Path to phpcbf字段中提供PHP Code Beautifier and Fixer工具的路径。这将让您自动修复 PHP_CodeSniffer 检测到的许多错误。如果您使用 Composer 安装 PHP_CodeSniffer,则会自动检测并设置PHP Code Beautifier 和 Fixer 。
配置与 PHP 解释器关联的 PHP_CodeSniffer 脚本
在设置/首选项对话框 ( Ctrl+Alt+S) 中,转到 。
在打开的质量工具页面上,展开PHP_CodeSniffer区域并单击配置列表旁边的。PHP_CodeSniffer对话框打开,在左侧窗格中显示所有已配置 PHP_CodeSniffer 脚本的列表,其中一个是 Local 类型,其他以与脚本关联的 PHP 解释器命名。
单击工具栏上的 。在打开的远程解释器的 PHP_CodeSniffer对话框中,选择远程 PHP 解释器以使用关联的脚本。如果列表不包含相关解释器,请单击并在CLI 解释器对话框中配置远程解释器,如配置远程 PHP 解释器中所述。
当您单击OK时,PhpStorm 会将您带回PHP_CodeSniffer对话框,其中新的PHP_CodeSniffer配置已添加到列表中,右侧窗格显示选择的远程 PHP 解释器、与其关联的 PHP_CodeSniffer 的路径以及高级 PHP_CodeSniffer 选项.
如有必要,在Tool process timeout字段中,指定您希望 PhpStorm 等待 PHP_CodeSniffer 的结果多长时间,然后终止进程以防止过多的 CPU 和内存使用。
如有必要,在PHP Code Beautifier and Fixer Settings区域的Path to phpcbf字段中提供PHP Code Beautifier and Fixer工具的路径。这将让您自动修复 PHP_CodeSniffer 检测到的许多错误。如果您使用 Composer 安装 PHP_CodeSniffer,则会自动检测并设置PHP Code Beautifier 和 Fixer 。
将 PHP_CodeSniffer 配置为 PhpStorm 检查
使用 Composer 配置 PHP_CodeSniffer 检查
您可以在composer.json的脚本部分中包含有关默认和自定义 PHP_CodeSniffer 规则集的信息。当您安装或更新项目依赖项时,将检测指定的规则集并自动启用PHP_CodeSniffer 验证检查。
如果没有在composer.jsonscripts
部分指定规则集,PhpStorm 将额外检查项目根目录以找到具有 phpcs.xml默认名称的规则集。如果文件存在,它将被自动选择为检查的自定义规则集。
在composer.json
scripts
部分中,将PHP_CodeSniffer 启动命令添加到叶元素之一中。phpcs
提供
--standard
参数以表示使用的编码标准。例如,添加以下记录会将编码标准设置为PSR2:“脚本”:{“phpcs”:“phpcs --standard=PSR2”}添加以下记录会将编码标准设置为Custom并将规则集的路径设置为<project root>/phpcs.xml:
“脚本”:{“phpcs”:“phpcs --standard=phpcs.xml”}
此外,您可以在composer.jsonrequire-dev
部分中提供自定义的非 PSR 标准依赖项以自动检测它。目前,支持以下标准:
手动配置 PHP_CodeSniffer 检查
在Settings/Preferences对话框 ( Ctrl+Alt+S) 中,单击Editor下的Inspections。
在打开的检查页面上,展开PHP_CodeSniffer validation旁边的复选框。
在页面的右侧窗格中,使用选项区域中的控件配置 PHP_CodeSniffer 工具:
从Severity列表中,选择 PHP_CodeSniffer 检查的严重程度。选定的值决定了 PhpStorm 处理检测到的差异的严重程度并显示在检查结果中。
从范围列表中,选择将检查应用程序限制到的范围。
在Check files with extensions字段中,提供 PHP_CodeSniffer 应检查的文件扩展名的逗号分隔列表。
要让 PHP_CodeSniffer 报告除错误之外的警告,请选中Show warnings as...复选框并从列表中选择严重程度。要仅报告错误并禁止报告警告,请清除Show warnings as...复选框。
如果您依赖自定义的第三方编码标准(例如Coder或Joomla Coding Standards),则需要在使用之前将其与 PHP_CodeSniffer 集成。为此,请选中已安装的标准路径复选框,单击并在打开的对话框中选择自定义标准安装目录。
选择Show sniff name复选框以在编辑器或检查结果中显示相应的嗅探器名称以及检查摘要。
指定要应用的编码标准。
要使用预定义的编码标准之一,请在编码标准列表中选择它,指定编码样式以检查您的代码。该列表包含安装在主php_codesniffer目录结构中的所有编码标准。
要根据您自己先前定义的编码标准检查您的代码,请选择自定义。单击并在打开的Custom Coding Standard对话框中,在Path to ruleset字段中为您自己的编码标准指定ruleset.xml文件的路径。手动键入路径或单击并在打开的对话框中选择相关文件夹。
修复 PHP_CodeSniffer 检测到的问题
PhpStorm 与PHP Code Beautifier 和 Fixer工具集成,可让您修复许多检测到的问题。如果您使用 Composer 安装 PHP_CodeSniffer,PHP Code Beautifier 和 Fixer将被检测并自动设置。否则,您需要手动设置。
使用快速修复解决问题
检测到问题后,PhpStorm 会根据 PHP_CodeSniffer检查设置突出显示它。
将插入符号放在检测到的问题上,然后单击,或按Alt+Enter。
选择PHP Code Beautifier and Fixer:从弹出菜单中修复整个文件。请注意,这将修复在当前文件中检测到的所有问题。
您还可以在批处理模式中检测问题,或通过代码清理自动修复它们。
使用代码清理自动修复问题
以批处理模式运行 PHP_CodeSniffer
从 PHP_CodeSniffer 验证检查中排除文件
当等待 PHP_CodeSniffer 响应超过PHP_CodeSniffer对话框的Tool process timeout字段中指定的限制时,PhpStorm 建议将该文件添加到忽略列表中。
在设置/首选项对话框 ( Ctrl+Alt+S) 中,导航到 。
在打开的质量工具页面上,展开PHP_CodeSniffer区域并单击显示忽略的文件链接。
要添加文件,请单击并在打开的对话框中找到所需的文件。
要从列表中删除文件并让 PHP_CodeSniffer 再次处理它,请选择该文件并单击。
要从列表中删除所有文件,请单击。