composer require pedrotroller/php-cs-custom-fixer --dev
// .php_cs
<?php
$config = PhpCsFixer\Config::create()
// ...
->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers())
// ...
;
return $config;
Function methods MUST be splitted by a line break
<?php
$config = PhpCsFixer\Config::create()
// ...
->setRules([
// ...
'PedroTroller/line_break_between_method_arguments' => [ "max-args" => 4, "max-length" => 120 ],
// ...
])
// ...
->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers())
;
return $config;
--- Original // 80 chars
+++ New //
@@ @@ //
return; //
} //
//
- public function fun2($arg1, array $arg2 = [], \ArrayAccess $arg3 = null, bool $bool = true, \Iterator $thisLastArgument = null)
- { //
+ public function fun2( //
+ $arg1, //
+ array $arg2 = [], //
+ \ArrayAccess $arg3 = null, //
+ bool $bool = true, //
+ \Iterator $thisLastArgument = null //
+ ) { //
return; //
} //
//
- public function fun3( //
- $arg1, //
- array $arg2 = [] //
- ) { //
+ public function fun3($arg1, array $arg2 = []) //
+ { //
return; //
} //
} //
//
Transform multiline docblocks with only one comment into a singleline docblock.
<?php
$config = PhpCsFixer\Config::create()
// ...
->setRules([
// ...
'PedroTroller/line_break_between_statements' => true,
// ...
])
// ...
->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers())
;
return $config;
--- Original // 80 chars
+++ New //
@@ @@ //
do { //
// ... //
} while (true); //
+ //
foreach (['foo', 'bar'] as $str) { //
// ... //
} //
+ //
if (true === false) { //
// ... //
} //
- //
//
while (true) { //
// ... //
//
Forbidden functions MUST BE commented
<?php
$config = PhpCsFixer\Config::create()
// ...
->setRules([
// ...
'PedroTroller/forbidden_functions' => [ "comment" => "YOLO" ],
// ...
])
// ...
->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers())
;
return $config;
--- Original // 80 chars
+++ New //
@@ @@ //
class MyClass { //
public function fun() //
{ //
- var_dump('this is a var_dump'); //
+ var_dump('this is a var_dump'); // YOLO //
//
$this->dump($this); //
//
//
<?php
$config = PhpCsFixer\Config::create()
// ...
->setRules([
// ...
'PedroTroller/forbidden_functions' => [ "comment" => "NEIN NEIN NEIN !!!", "functions" => [ "var_dump", "var_export" ] ],
// ...
])
// ...
->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers())
;
return $config;
--- Original // 80 chars
+++ New //
@@ @@ //
class MyClass { //
public function fun() //
{ //
- var_dump('this is a var_dump'); //
+ var_dump('this is a var_dump'); // NEIN NEIN NEIN !!! //
//
$this->dump($this); //
//
- return var_export($this); //
+ return var_export($this); // NEIN NEIN NEIN !!! //
} //
//
public function dump($data) //
//
Remove useless comments regarding the method definition
<?php
$config = PhpCsFixer\Config::create()
// ...
->setRules([
// ...
'PedroTroller/useless_comment' => true,
// ...
])
// ...
->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers())
;
return $config;
--- Original // 80 chars
+++ New //
@@ @@ //
//
class TheClass //
{ //
- /** //
- * @param Model\User $user //
- */ //
public function fun1(Model\User $user, Model\Address $address = null) { //
return; //
} //
//
Collapse/expand PHP single line comments
<?php
$config = PhpCsFixer\Config::create()
// ...
->setRules([
// ...
'PedroTroller/single_line_comment' => [ "action" => "expanded" ],
// ...
])
// ...
->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers())
;
return $config;
--- Original // 80 chars
+++ New //
@@ @@ //
//
class TheClass //
{ //
- /** @var string */ //
+ /** //
+ * @var string //
+ */ //
private $prop1; //
//
/** //
@@ @@ //
return; //
} //
//
- /** @return null */ //
+ /** //
+ * @return null //
+ */ //
public function fun2($file) { //
return; //
} //
} //
//
<?php
$config = PhpCsFixer\Config::create()
// ...
->setRules([
// ...
'PedroTroller/single_line_comment' => [ "action" => "collapsed" ],
// ...
])
// ...
->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers())
;
return $config;
--- Original // 80 chars
+++ New //
@@ @@ //
/** @var string */ //
private $prop1; //
//
- /** //
- * @var string //
- */ //
+ /** @var string */ //
private $prop1; //
//
- /** //
- * @return null //
- */ //
+ /** @return null */ //
public function fun1($file) { //
return; //
} //
//
<?php
$config = PhpCsFixer\Config::create()
// ...
->setRules([
// ...
'PedroTroller/single_line_comment' => [ "action" => "collapsed", "types" => [ "@var", "@return" ] ],
// ...
])
// ...
->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers())
;
return $config;
--- Original // 80 chars
+++ New //
@@ @@ //
/** @var string */ //
private $prop1; //
//
- /** //
- * @var string //
- */ //
+ /** @var string */ //
private $prop1; //
//
- /** //
- * @return null //
- */ //
+ /** @return null */ //
public function fun1($file) { //
return; //
} //
//
Class/interface/trait methods MUST BE ordered (getter and setters at the end, ordered following arguments order).
<?php
$config = PhpCsFixer\Config::create()
// ...
->setRules([
// ...
'PedroTroller/ordered_with_getter_and_setter_first' => true,
// ...
])
// ...
->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers())
;
return $config;
--- Original // 80 chars
+++ New //
@@ @@ //
} //
} //
//
- public function setFirstName($firstName) //
+ public function getIdentifier() //
{ //
- $this->firstName = $firstName; //
+ return $this->identifier; //
} //
//
- public function setName($name) //
+ public function getName() //
{ //
- $this->name = $name; //
+ return $this->name; //
} //
//
- public function isEnabled() //
+ public function setName($name) //
{ //
- return $this->enabled; //
+ $this->name = $name; //
} //
//
- public function getName() //
+ public function getFirstName() //
{ //
- return $this->name; //
+ return $this->firstName; //
} //
//
- public function getIdentifier() //
+ public function setFirstName($firstName) //
{ //
- return $this->identifier; //
+ $this->firstName = $firstName; //
} //
//
- public function getFirstName() //
+ public function isEnabled() //
{ //
- return $this->firstName; //
+ return $this->enabled; //
} //
//
public function enable() //
//
PHPSpec spec functions MUST NOT have a public scope AND PHPSpec spec functions MUST BE ordered with specs first (order: let, letGo, its_* and it_* functons).
<?php
$config = PhpCsFixer\Config::create()
// ...
->setRules([
// ...
'PedroTroller/phpspec' => true,
// ...
])
// ...
->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers())
;
return $config;
--- Original // 80 chars
+++ New //
@@ @@ //
class TheSpec extends ObjectBehavior //
{ //
//
- public function letGo($file) { //
+ function let($file) { //
return; //
} //
//
- private function thePrivateMethod() { //
+ function letGo($file) { //
return; //
} //
//
- public function itIsNotASpec($file) { //
+ function it_is_a_spec($file) { //
return; //
} //
//
- public function it_is_a_spec($file) { //
+ function its_other_function($file) { //
return; //
} //
//
- public function let($file) { //
+ private function thePrivateMethod() { //
return; //
} //
//
- public function its_other_function($file) { //
+ public function itIsNotASpec($file) { //
return; //
} //
} //
//
PHPSpec spec functions MUST BE ordered with specs first (order: let, letGo, its_* and it_* functons).
<?php
$config = PhpCsFixer\Config::create()
// ...
->setRules([
// ...
'PedroTroller/ordered_spec_elements' => true,
// ...
])
// ...
->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers())
;
return $config;
--- Original // 80 chars
+++ New //
@@ @@ //
class TheSpec extends ObjectBehavior //
{ //
//
- function letGo($file) { //
+ function let($file) { //
return; //
} //
//
- private function thePrivateMethod() { //
+ function letGo($file) { //
return; //
} //
//
- public function itIsNotASpec($file) { //
+ function it_is_a_spec($file) { //
return; //
} //
//
- function it_is_a_spec($file) { //
+ public function its_other_function($file) { //
return; //
} //
//
- function let($file) { //
+ private function thePrivateMethod() { //
return; //
} //
//
- public function its_other_function($file) { //
+ public function itIsNotASpec($file) { //
return; //
} //
} //
//
PHPSpec spec functions MUST NOT have a public scope.
<?php
$config = PhpCsFixer\Config::create()
// ...
->setRules([
// ...
'PedroTroller/phpspec_scenario_scope' => true,
// ...
])
// ...
->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers())
;
return $config;
--- Original // 80 chars
+++ New //
@@ @@ //
//
class TheSpec extends ObjectBehavior //
{ //
- public function let($file) { //
+ function let($file) { //
return; //
} //
//
- public function letGo($file) { //
+ function letGo($file) { //
return; //
} //
//
- public function it_is_a_spec($file) { //
+ function it_is_a_spec($file) { //
return; //
} //
//
@@ @@ //
return; //
} //
//
- public function its_other_function($file) { //
+ function its_other_function($file) { //
return; //
} //
} //
//
Remove useless code after a returned value
<?php
$config = PhpCsFixer\Config::create()
// ...
->setRules([
// ...
'PedroTroller/useless_code_after_return' => true,
// ...
])
// ...
->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers())
;
return $config;
--- Original // 80 chars
+++ New //
@@ @@ //
*/ //
public function fun1(Model\User $user, Model\Address $address = null) { //
return; //
- //
- $user->setName('foo'); //
- //
- return $this; //
} //
//
/** //
@@ @@ //
switch ($this->status) { //
case 1: //
return $this->name; //
- break; //
default: //
return $this; //
- return $this; //
} //
} //
//
@@ @@ //
*/ //
public function buildCallable() //
{ //
- return function () { return true; return false; }; //
+ return function () { return true; }; //
} //
} //
//
composer tests