Edited at

[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


調整事項


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',
],


並び替える系


メソッドの順序を public -> protected -> private に並び替えない

'ordered_class_elements' => false,


import ライブラリの順序を並び替えない

'ordered_imports' => false,


配列周辺


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

'trailing_comma_in_multiline_array' => false,


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

'binary_operator_spaces' => [

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


PHPUnit 周辺


テストメソッド名をそのまま変えない

snake_case にも camelCase にもしない

'php_unit_method_casing' => false,


assertXXX メソッドの呼び出し方を変えない

$this->self::static:: どれでも良い

'php_unit_test_case_static_method_calls' => false,


Whole .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,
'ordered_class_elements' => false,
'ordered_imports' => false,
'php_unit_method_casing' => false,
'php_unit_test_case_static_method_calls' => false,
]))
->setFinder(PhpCsFixer\Finder::create()
->exclude('vendor')
->in(__DIR__)
);


参考情報