🛠️

[php-cs-fixer] ルールが厳しすぎて消す・直しまくるので調整する例

2021/05/02に公開

published_at: 2019-05-17


デフォルトのままだとがんばって書いたのが消されたり直されたりしすぎるので調整した・・・

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

調整事項

PHPDoc 周辺

@return の行を消されないようにする

'no_superfluous_phpdoc_tags' => false,

@package を消されないようにする

'phpdoc_no_package' => false,
'general_phpdoc_annotation_remove' => [
    'annotations' => ['author'],
],

コメント中に余計な改行が入らないようにする

'phpdoc_separation' => false,

PHPDoc用のコメントの揃え方:縦に揃える

'phpdoc_align' => [
    'align' => 'vertical',
],

配列周辺

最後にカンマがないとき入れないままにする

'trailing_comma_in_multiline_array' => false,

イコールや => の見映えを揃える

binary_operator_spaces' => [
    'align_double_arrow' => true,
    'align_equals' => true,
],

.php_cs.dist

https://github.com/sogaoh/LaravelPractice/blob/master/server/.php_cs.dist

<?php

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,
        'no_superfluous_phpdoc_tags' => false,
        'phpdoc_no_package' => false,
        'general_phpdoc_annotation_remove' => [
            'annotations' => ['author'],
        ],
        'phpdoc_separation' => false,
        'phpdoc_align' => [
            'align' => 'vertical',
        ],
        'binary_operator_spaces' => [
            'align_double_arrow' => true,
            'align_equals' => true,
        ],
        'trailing_comma_in_multiline_array' => false,
    ]))
    ->setFinder(PhpCsFixer\Finder::create()
        ->exclude('vendor')
        ->in(__DIR__)
    );

Note

  • public -> protected -> private に並び替えないオプションを探したい
  • テストメソッドにかけるとスネークケースに直されるのを回避したい

参考情報

Discussion