🛠️
[php-cs-fixer] 除外(exclude)Finderの設定例
published_at: 2019-06-04
Laravel の app/Providers など、php-cs-fixer がかかるとアプリケーションの動作に影響が出てしまう場合があるところなどを除外する設定についてだいたい把握したと思うので記事にします
Version
- php-cs-fixer + suin/php-cs-fixer-rules を利用
- "friendsofphp/php-cs-fixer": "^2.15"
- "suin/php-cs-fixer-rules": "^2.0"
- PHP 7.3
- Composer version 1.8.5 2019-04-09 17:46:47
ポイント
- .php_cs.dist
- 配列で指定する
- 複数指定できて、コメントアウトで除外を除外することが可能
- 指定はディレクトリ単位
- ファイルを個別には指定できない模様
- 実行時オプション
-
--path-mode=intersection
をつける
-
設定例 (.php_cs.dist)
<?php
$finder = PhpCsFixer\Finder::create()
->exclude([
'app/Console',
'app/Exceptions',
'app/Providers', // <- ★★★
])
->in(__DIR__)
;
return PhpCsFixer\Config::create()
->setRiskyAllowed(true)
->setRules(Suin\PhpCsFixer\Rules::create([
// If you want to overwrite default rules
// add rules here.
'declare_strict_types' => false,
//・・・
'php_unit_method_casing' => false,
'php_unit_test_case_static_method_calls' => false,
]))
->setFinder($finder);
実行例
❯ ./vendor/bin/php-cs-fixer fix --path-mode=intersection --config=./.php_cs.dist --verbose --dry-run ./app
Loaded config default from "./.php_cs.dist".
Using cache file ".php_cs.cache".
(以下、自主規制。期待動作はしてました)
その他
-
簡素化を意図して、以下のように Makefile を準備してみたのだが、phpunit は期待動作になるのに php-cs-fixer が動かないのが謎。
//・・・ CS_TG := $(CURDIR)/app/ UT_TG := $(CURDIR)/tests/Unit/ FT_TG := $(CURDIR)/tests/Feature/ //・・・ csd: vendor vender/bin/php-cs-fixer fix --path-mode=intersection --config=.php_cs.dist --verbose --dry-run $(CS_TG) cs: vendor vender/bin/php-cs-fixer fix --path-mode=intersection --config=.php_cs.dist --verbose $(CS_TG) test: ft ut ft: vendor vendor/bin/phpunit --configuration=phpunit.xml $(FT_TG) ut: vendor vendor/bin/phpunit --configuration=phpunit.xml $(UT_TG) vendor: composer.json composer.lock composer self-update composer validate composer install
- console
❯ make csd vender/bin/php-cs-fixer fix --path-mode=intersection --config=.php_cs.dist --verbose --dry-run /path/to/app/ make: vender/bin/php-cs-fixer: No such file or directory make: *** [csd] Error 1
- console
Discussion