PHP CodeSniffer WordPress 通过 Composer

Posted

技术标签:

【中文标题】PHP CodeSniffer WordPress 通过 Composer【英文标题】:PHP CodeSniffer WordPress via Composer 【发布时间】:2018-07-07 05:37:56 【问题描述】:

有没有办法通过Composer 为每个项目安装phpCodeSniffer 和WordPress Coding Standards for PHP_CodeSniffer? 我已经将两者都安装为开发依赖项,并在 CodeSniffer.conf 中将安装路径设置为 WordPress 编码标准。 不幸的是,当我在终端中运行命令时,phpcs 无法解析为配置文件,因为它正在“vendor”文件夹中查找“vendor/squizlabs/php_codesniffer/CodeSniffer.conf”

这是我的项目设置:

composer.json


    "require-dev": 
        "squizlabs/php_codesniffer": "^3.2",
        "wp-coding-standards/wpcs": "^0.14.0"
    

CodeSniffer.conf

<?php
    $phpCodeSnifferConfig = array (
        'installed_paths' => 'vendor/wp-coding-standards/wpcs',
    )
?>

终端

vendor/bin/phpcs -p THEME_NAME --standard=WordPress

“错误:没有安装“WordPress”编码标准。安装的编码标准是PEAR、Zend、PSR2、MySource、Squiz和PSR1”

【问题讨论】:

【参考方案1】:

首先,您不需要明确要求 PHP CodeSniffer,因为wp-coding-standards/wpcs 会自动提取它。

composer.json


    "require-dev": 
        "wp-coding-standards/wpcs": "^0.14.0"
    

足够了。

要让 CodeSniffer 了解添加的编码标准,请在控制台终端上键入:

$ vendor/bin/phpcs --config-set installed_paths vendor/wp-coding-standards/wpcs

它将自动创建(并稍后找到)vendor/squizlabs/php_codesniffer/CodeSniffer.conf 文件。

这应该在安装过程中自动发生;包中包含相关说明,但由于某种原因,它们没有被执行。

现在,检查已安装的标准:

$ vendor/bin/phpcs -i
The installed coding standards are MySource, PSR2, Squiz, Zend, PSR1, PEAR, WordPress-Extra, WordPress, WordPress-Core, WordPress-VIP and WordPress-Docs

【讨论】:

非常感谢!这正是我所需要的。只是一个后续问题。我也遇到了类似的问题,但我想将 CodeSniffer.conf 文件添加到根级别以通过 git 对其进行跟踪,而不是将其存储在通常排除在外的供应商中。有没有办法将 phpcs 指向另一个查找配置的路径? CodeSniffer.conf 是一个内部文件。将您的自定义配置添加到您自己的ruleset.xml - github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml 要自动注册composer installcomposer update 上的代码标准,请使用github.com/Dealerdirect/phpcodesniffer-composer-installer Composer 插件(WPCS 推荐)。

以上是关于PHP CodeSniffer WordPress 通过 Composer的主要内容,如果未能解决你的问题,请参考以下文章

PHP_CodeSniffer HG 服务端部署篇

windows 安装pear & PHP_CodeSniffer

windows环境PhpStorm中简单使用PHP_CodeSniffer规范php代码

phpstorm安装PHP_CodeSniffer

pear 安装php_codesniffer 和phpstorm设置统一编码风格

markdown PHP CodeSniffer