iodigital-com/php-code-sniffer-standard

iO PHP_CodeSniffer Standard

安装次数: 14,211

依赖项: 8

建议者: 1

安全: 0

星标: 1

关注者: 5

分支: 1

公开问题: 2

类型:phpcodesniffer-standard


README

通过 iO 规则扩展默认的 PHP_CodeSniffer

注意: 向此包添加新的 phpcs-rules 必须导致主版本更新!

安装

需要该包

composer require --dev iodigital-com/php-code-sniffer-standard

设置

在项目的根目录中创建一个 phpcs.xml 文件,并包含默认的 iO 规则集

<?xml version="1.0" encoding="UTF-8"?>
<ruleset>
    <arg name="cache"/>

    <!-- include root folder of project , change to your framework requirements -->
    <file>.</file>
    <!-- exclude paths -->
    <exclude-pattern>./src/Migrations</exclude-pattern>
    <exclude-pattern>./vendor</exclude-pattern>
    <exclude-pattern>./local-repo</exclude-pattern>

    <!-- include all rules in iO ruleset -->
    <rule ref="IO"/>
    <rule ref="YourFramework"/> <!-- include your framework standards -->
</ruleset>

修改排除路径和/或为您的项目包含自定义规则集。

PHPCompatibility

要充分利用 PHPCompatibility 标准化,您应指定一个测试版本以进行检查。这将启用对已弃用/删除的 PHP 功能以及检测使用新 PHP 功能的代码的检查。通过在您的 phpcs.xml 中添加配置规则来包含测试版本。示例

    <config name="testVersion" value="7.0"/> <!-- check for compatability with php 7.0 -->
    <config name="testVersion" value="7.1-"/> <!-- check for 7.1 and higher -->
    <config name="testVersion" value="7.0-7.2"/> <!-- check within range 7.0 to 7.2 -->

更多信息请见: https://github.com/PHPCompatibility/PHPCompatibility#using-a-custom-ruleset

用法

由于您现在已在项目的根目录中有一个 phpcs.xml 文件,您可以使用默认的 phpcs 命令:vendor/bin/phpcs。为了节省时间,请使用 GrumPHP 或 Githooks 来触发嗅探。

忽略嗅探违规

有时无法解决嗅探违规。在这种情况下,应使用 phpcs:ignore 以及 phpcs:disable / phpcs:enable 注释来忽略违规。

为了这样做,请采取以下方法

  1. 仅忽略导致违规的 部分 文件,而不是整个文件。如果确实应该忽略整个文件,则可以使用 phpcs:ignoreFile 注释或更好的是,向项目的 ruleset.xml 添加 <exclude-pattern>
  2. 优先使用 phpcs:ignore 而不是 phpcs:disablephpcs:enable,即在可能的情况下使用 phpcs:ignore,并且当 phpcs:ignore 的放置不会引入其他嗅探违规时,使用 phpcs:disablephpcs:enable。理由:使用 phpcs:disablephpcs:enable 可能会在添加新代码或移动现有代码时禁用比最初打算的更多代码,例如在重构代码时。
  3. 始终指明将要忽略的确切嗅探规则或嗅探规则,使用完整的嗅探规则名称,而不是仅使用嗅探规则组。例如,使用 phpcs:ignore Squiz.WhiteSpace.FunctionSpacing.BeforeFirst, Squiz.WhiteSpace.FunctionSpacing.AfterLast 而不是 phpcs:ignore Squiz.WhiteSpace.FunctionSpacing 或没有参数的 phpcs:ignore
  4. 优先将 phpcs:ignore 注释放置在单独的一行上,在违规之前,而不是在违规所在行上。理由:当忽略多个嗅探规则时,phpcs:ignore 注释可能会迅速超过行长度限制;当 phpcs:ignore 注释放在违规之前的单独行上时,这不会进行检查,但当 phpcs:ignore 注释放在违规所在行上时,则会进行检查。
  5. 使用 -- 后跟简短的解释来添加忽略嗅探规则的原因。

示例

try {
    $this->logger->log(LogLevel::INFO, new DateTimeImmutable());
//phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch -- DateTimeImmutable creation cannot fail in this case
} catch (Exception $exception) {
}

贡献

如果您想要贡献代码,请为每个合并请求创建一个带有 每个请求一个嗅探器 的合并请求。请在描述中提供一个关于嗅探器的例子,包括一段好代码和一段坏代码。