isaac/php-code-sniffer-standard

此包已被放弃,不再维护。作者建议使用 iodigital-com/php-code-sniffer-standard 包代替。

ISAAC PHP_CodeSniffer Standard

安装数: 33,447

依赖项: 4

建议者: 0

安全: 0

星标: 9

关注者: 7

分支: 3

开放问题: 1

类型:phpcodesniffer-standard

v28.2.0 2022-11-04 10:56 UTC

This package is auto-updated.

Last update: 2023-07-14 10:23:18 UTC


README

此存储库已存档并重命名,移动到 iO PHP_CodeSniffer Standard。功能嗅探和更改将在 iO 存储库中处理。

要使用 iodigital-com/php-code-sniffer-standard 替换 isaac/php-code-sniffer-standard,请执行以下步骤

  1. composer.json 中移除 isaac/php-code-sniffer-standard

    composer remove --dev --no-update isaac/php-code-sniffer-standard
    
  2. 安装 iodigital-com/php-code-sniffer-standard

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

    注意:如果您不在最新版本,您可能希望在要求新包时包含版本约束。

  3. 在您的项目的 phpcs.xml 中,将 <rule ref="ISAAC"/> 替换为 <rule ref="IO"/>

  4. phpcs.xml 和 PHP 文件中替换对特定 ISAAC 嗅探的任何引用,用对 IO 嗅探的引用替换。这可以通过在整个项目中搜索嗅探名称并使用新嗅探名称替换它们来完成

    搜索 替换为
    ISAAC.Classes.MethodPerClassLimit IO.Classes.MethodPerClassLimit
    ISAAC.Classes.PropertyPerClassLimit IO.Classes.PropertyPerClassLimit
    ISAAC.ControlStructures.DisallowGotoOperator IO.ControlStructures.DisallowGotoOperator
    ISAAC.ControlStructures.DisallowNullCoalesceOperator IO.ControlStructures.DisallowNullCoalesceOperator
    ISAAC.Namespaces.MultipleLinesPerUse IO.Namespaces.MultipleLinesPerUse

通过执行以下操作来验证 PHP_CodeSniffer 是否仍然正确工作

vendor/bin/phpcs

ISAAC PHP_CodeSniffer Standard

通过 ISAAC 规则扩展默认的 PHP_CodeSniffer

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

安装

要求包

composer require --dev isaac/php-code-sniffer-standard

设置

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

<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="phpcs-isaac">
    <!-- include root folder of project -->
    <file>.</file>
    <!-- exclude paths -->
    <exclude-pattern>./src/Migrations</exclude-pattern>
    <exclude-pattern>./vendor</exclude-pattern>

    <!-- include all rules in isaac ruleset -->
    <rule ref="ISAAC"/>
</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

忽略嗅探违规

有时无法解决嗅探违例。在这种情况下,应使用phpcs:ignorephpcs: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) {
}

贡献

如果您想进行贡献,请创建一个带有每个合并请求一个嗅探的合并请求。请在描述中提供一个示例,说明嗅探的内容,并附上良好和不良代码片段。