26b/php-pre-commit

强制PHP标准的预提交git钩子。

安装: 2,779

依赖项: 0

建议者: 0

安全性: 0

星标: 7

关注者: 3

分支: 1

开放问题: 7

语言:Shell

类型:脚本

0.2.1 2022-08-11 16:23 UTC

This package is auto-updated.

Last update: 2024-09-24 12:13:31 UTC


README

强制PHP标准的预提交git钩子。

当前使用PHP_CodeSniffer (PHPCS) 和根据 phpcs 配置文件(通常是 phpcs.xml)修正 .php 阶段文件。

使用 composer 命令安装

composer require --dev 26b/php-pre-commit

为了将钩子移动到 .git/hooks 文件夹,请在项目的 composer.json 中添加以下内容:

"scripts": {
    "post-install-cmd": "php-pre-commit",
    "post-update-cmd": "php-pre-commit"
}

使用 composer installcomposer updatepre-commit 钩子移动到 .git/hooks

如果您想跳过预提交执行,可以在 git commit 中添加 --no-verify 参数。

重要

此包 不要求 PHPCS,因为您可以选择使用本地或全局的 phpcs。本地 phpcs 在预提交运行时具有优先权。您可以按以下方式要求它们:

# Local
composer require --dev squizlabs/php_codesniffer
# Or global
composer global require squizlabs/php_codesniffer

用例

本地 PHPCS

如果您打算在不同的存储库中使用不同的标准集合,我们建议您本地安装 php_codesniffer,这将确保在稍后配置 phpcs --config-set ... 时不会发生冲突。如果您选择本地方法,请确保在下面的示例中正确修复PHPCS路径。

通常,这将是将所有 phpcs 引用更改为 ./vendor/bin/phpcs(或任何其他本地路径)。

WordPress

设置WordPress标准(手动)

首先,我们需要克隆WordPress标准存储库。它应该放置在一个 phpcs 可以访问的目录中。我们将我们的存储库放置在根目录的 wpcs 目录中。通过以下方式将存储库克隆到 wpcs 文件夹:

git clone git@github.com:WordPress/WordPress-Coding-Standards.git --depth=1 --branch 3.1.0 ~/wpcs

其次,我们需要告诉 phpcs 这些标准的所在地。

phpcs --config-set installed_paths /full/path/to/wpcs

最后,为了检查 phpcs 是否识别并使用了标准,我们可以这样检查:

$ phpcs -i
The installed coding standards are PEAR, Zend, PSR2, Squiz, PSR1, PSR12, WordPress, WordPress-Extra, WordPress-Docs and WordPress-Core

输出应类似于这个,具有WordPress标准。如果它们缺失,phpcs 可能没有识别路径。通过以下方式检查其路径:

$ phpcs --config-show
Using config file: /full/path/to/global/composer/vendor/squizlabs/php_codesniffer/CodeSniffer.conf

default_standard: WordPress-Extra
installed_paths:  /full/path/to/wpcs

替代方案(自动)

作为替代方案,您可以使用 PHP_CodeSniffer Standards Composer Installer Plugin,该插件可以帮助自动将所需的标准链接到 phpcs。请注意,它需要在本地安装 phpcs,因此我们的 pre-commit 钩子将使用该 phpcs。然后我们可以按以下方式要求此包和WPCS:

composer require --dev dealerdirect/phpcodesniffer-composer-installer wp-coding-standards/wpcs

或者将它们添加到 composer.json

"require-dev": {
    "dealerdirect/phpcodesniffer-composer-installer": "*",
    "wp-coding-standards/wpcs": "*"
}

并添加脚本,在 composer install 时正确配置 phpcs,如下所示:

"scripts": {
    "install-codestandards": [
        "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin::run"
    ],
    "post-install-cmd": [
        "php-pre-commit",
        "@install-codestandards"
    ]
}

Laravel

自动设置

在这里,您也可以使用 PHP_CodeSniffer Standards Composer Installer Plugin 将Laravel标准自动链接到 phpcs。同样,请确保安装了本地的 phpcs,因此我们的 pre-commit 钩子将使用它。我们只需要要求 emielmolenaar/phpcs-laravel 包,我们就完成了

composer require --dev emielmolenaar/phpcs-laravel

最后,将相同的脚本添加到在 composer install 时正确配置 phpcs

"scripts": {
    "install-codestandards": [
        "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin::run"
    ],
    "post-install-cmd": [
        "php-pre-commit",
        "@install-codestandards"
    ]
}

手动设置

一个不断更新的Laravel编码标准存储库是 emielmolenaar/phpcs-laravel。现在我们将进行配置(与 WordPress配置 非常相似)。首先克隆 emielmolenaar/phpcs-laravel 存储库

git clone https://github.com/emielmolenaar/phpcs-laravel.git --branch 2.0

再次,告诉 phpcs 标准在哪里。

phpcs --config-set installed_paths /full/path/to/phpcs-laravel

再次确认 phpcs 是否识别并使用了已安装的标准

$ phpcs -i
The installed coding standards are PEAR, Zend, PSR2, MySource, Squiz, PSR1, PSR12 and phpcs-laravel

--config-show 将会输出以下内容

$ phpcs --config-show
Using config file: /full/path/to/composer/vendor/squizlabs/php_codesniffer/CodeSniffer.conf

installed_paths: /full/path/to/phpcs-laravel

故障排除

  • 如果脚本不可执行,请运行以下命令,其中路径指向 composer 可执行文件的位置。(如果全局安装,应该在 ~/.composer/vendor/bin,否则在包含 composer.json 的文件夹中。)

    chmod +x vendor/bin/php-pre-commit