lipemat/wp-phpcs

WordPress 插件的 PHP Codesniffer

维护者

详细信息

github.com/lipemat/wp-phpcs

来源

问题

资助包维护!
lipemat

安装次数: 8,392

依赖者: 0

建议者: 0

安全: 0

星标: 5

关注者: 3

分支: 3

开放问题: 0

类型:phpcodesniffer-standard

4.4.0 2024-09-02 16:23 UTC

README

package version required WordPress version required PHP version Packagist version

WordPress 插件的 PHP Codesniffer 设置。

安装

使用 composer 进行安装。虽然这可以直接添加到您的 plugins composer.json 中,但建议全局安装以便在多个项目中重用。

如果不作为全局库使用,您的本地 composer.json 需要包含以下配置。

{
  "config": {
    "allow-plugins": {
      "dealerdirect/phpcodesniffer-composer-installer": true
    }
  }
}

通过 composer 安装

composer require lipemat/wp-phpcs

phpcs-sample.xml 文件复制到插件的根目录,并将其重命名为 phpcs.xml。根据需要调整配置。

运行

vendor/bin 目录包含在 Windows 或 Unix 上运行的脚本。您可以将该目录添加到您的 PATH 中,或者像这样详细调用它

{project dir}/vendor/bin/phpcs ./

或者

{project dir}/vendor/bin/phpcbf ./

您也可以在您的 PATH 上的某个位置创建自己的脚本。以下是一个 Windows 的示例 phpcs.bat。这假设您在根目录中创建了一个名为 wp-phpcs 的文件夹,并在那里运行了 composer require。

@echo off
C:\wp-phpcs\vendor\bin\phpcs %*

自动化

一旦您已将 phpcs 和 phpcbf 的脚本添加到您的 PATH 中,您可以使用包含的 git-hooks/pre-commit 在提交之前自动运行 PHP lint 和 PHPCS。

将 pre-commit 文件复制到您的插件的 .git/hooks 目录,其余的将自动完成。

包含的 Sniffs

  1. WordPress 编码标准
  2. WordPress VIP 编码标准
  3. PHPCompatibilityWP
  4. PHPCSExtra

Lipe Sniffs

此包附带一些 可选的 Lipe 命名空间 sniffs。

  1. <rule ref="Lipe" /> 用于所有默认配置和 sniffs。
    1. @note 此配置具有主观性,您可能只想包含所需的 sniffs 命名空间。
  2. <rule ref="Lipe.JS" /> 用于我们的 JavaScript 安全 sniffs,支持 dompurify。
  3. <rule ref="Lipe.DB.CalcFoundRows" /> 用于检测 MySQL SQL_CALC_FOUND_ROWS 的弃用用法。
  4. <rule ref="Lipe.PHP.DisallowNullCoalesceInCondition" /> 用于检测在条件中使用 ??
  5. <rule ref="Lipe.PHP.DisallowNullCoalesceInForLoops" /> 用于检测在 for 循环中使用 ??
  6. <rule ref="Lipe.Performance.SlowMetaQuery" /> 用于检测缓慢的 meta 查询。
    1. 类似于 WordPress.DB.SlowDBQuery.slow_db_query_meta_query,但支持使用 EXISTSNOT_EXISTS meta 查询。
  7. <rule ref="Lipe.Performance.SlowOrderBy" /> 用于检测 WP_Query 中的缓慢的 ORDER BY 子句。
  8. <rule ref="Lipe.Performance.PostNotIn" /> 用于检测 WP_Query 中的 post__not_in 子句的使用。
  9. <rule ref="Lipe.Performance.SuppressFilters" /> 用于检测在 get_posts 中缺少 suppress_filters 子句的使用。

LipePlugin Sniffs

此包附带一些 可选的 LipePlugin 命名空间 sniffs,旨在与分布式插件或库一起使用。

  1. <rule ref="LipePlugin" /> 用于所有默认配置和 sniffs。
    1. @note 此配置具有主观性,您可能只想包含所需的 sniffs 命名空间。
  2. <rule ref="Lipe.CodeAnalysis.SelfInClassSniff" /> 强制使用 static 而不是 self 以提高可扩展性。
    1. 'ReturnType' - 方法的返回类型。
    2. 'InstanceOf' - 静态调用时的 self 实例。
    3. 'NewInstance' - 通过 new self() 构建。
    4. 'ScopeResolution' - 通过 self:: 的本地常量。
  3. <rule ref="LipePlugin.TypeHints.PrivateInClass" /> 用于分布式包,不应使用 private 以提高可扩展性。
  4. <rule ref="LipePlugin.TypeHints.PreventStrictTypes" /> 用于分布式包,不应使用 strict_type 以提高兼容性。

其他注意事项

phpcs-sample.xml 中排除了许多内容。这是因为一些内容实际上与 WordPress 标准不符。您可以删除任何 <exclude> 项以使代码更加严格。如果真的想要使代码非常严格,可以全部删除。