26b / php-pre-commit
强制PHP标准的预提交git钩子。
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 install
或 composer update
将 pre-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