opositatest / php-cs-fixer-config
针对opositatest项目的PHP CS Fixer配置
v2.0
2024-05-08 10:10 UTC
Requires
- php: ^8.3
- friendsofphp/php-cs-fixer: ^3.54
Requires (Dev)
- phpunit/phpunit: ^11.0
README
此仓库包含所有Opositatest PHP项目的通用代码风格配置。
它基于refinery29/php-cs-fixer-config
的思路。
安装
composer require --dev opositatest/php-cs-fixer-config
用法
配置
在项目根目录中创建一个名为.php_cs.dist
的配置文件,内容如下
<?php $config = new Opositatest\PhpCsFixerConfig\OpositatestConfig(); $config->getFinder() ->in(__DIR__ . "/src") ->in(__DIR__ . "/tests"); return $config;
手动执行
要手动执行修复,您必须运行php-cs-fixer
(通常位于/vendor/bin
或/bin
)
$ ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php
--verbose
和--diff
选项可以用来查看实际做出的更改。为了避免自动应用更改,可以使用--dry-run
选项
$ ./vendor/bin/php-cs-fixer fix --config=.php_cs.dist --verbose --diff --dry-run
限制范围
在大型项目中,您第一次运行此工具时可能会得到许多更改,这使得很难发现潜在的问题。该工具使用了Symfony Finder组件,因此您可以使用该组件提供的任何过滤器来限制目录、文件名等。例如
仅应用于特定子目录
$config->getFinder() ->in(__DIR__ . "/src/Model");
仅应用于文件名以Controller
结尾的PHP文件
$config->getFinder() ->in("/src") ->name("*Controller.php");
排除目录
$config->getFinder() ->in("/src") ->exclude("third-party")
pre-commit钩子
可以配置一个pre-commit
钩子,在每次提交前自动格式化代码。
运行touch .git/hooks/pre-commit
来创建一个新的钩子,使用chmod +x .git/hooks/pre-commit
使其可执行,并将以下脚本粘贴到.git/pre-commit
#!/usr/bin/env bash echo "Running php-cs-fixer..." CURRENT_DIRECTORY=`pwd` GIT_HOOKS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" PROJECT_DIRECTORY="$GIT_HOOKS_DIR/../.." cd $PROJECT_DIRECTORY; PHP_CS_FIXER="vendor/bin/php-cs-fixer" git status --porcelain | grep -e '^[AM]\(.*\).php$' | cut -c 3- | while read line; do ${PHP_CS_FIXER} fix --config=.php_cs --verbose ${line}; git add "$line"; done cd $CURRENT_DIRECTORY; echo "Done."