pedrotroller/php-cs-custom-fixer

PHP-CS-FIXER : 我的自定义修复器

v2.33.1 2024-08-02 11:28 UTC

README

CircleCI Latest Stable Version License Dependabot Status Scrutinizer Code Quality

安装

composer require pedrotroller/php-cs-custom-fixer --dev

配置

// .php_cs.dist
<?php

$config = PhpCsFixer\Config::create()
    // ...
    ->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers())
    // ...
;

return $config;

修复器

PedroTroller/order_behat_steps

Behat上下文中的步骤定义方法必须按照注解和方法名排序。

可用选项

  • instanceof (可选): 您的Behat上下文类的父类或接口。
    • 默认值: Behat\Behat\Context\Context

配置示例

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    [
        // ...
        'PedroTroller/order_behat_steps' => true,
        // ...
    ]
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

或者使用我的规则列表构建器

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    PedroTroller\CS\Fixer\RuleSetFactory::create()
        ->enable('PedroTroller/order_behat_steps')
        ->getRules()
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

修复

--- Original                                                                     // 80 chars
+++ New                                                                          //
@@ @@                                                                            //
     }                                                                           //
                                                                                 //
     /**                                                                         //
-     * @Then the response should be received                                    //
+     * @BeforeScenario                                                          //
      */                                                                         //
-    public function theResponseShouldBeReceived()                               //
+    public function reset()                                                     //
     {                                                                           //
         // ...                                                                  //
     }                                                                           //
                                                                                 //
     /**                                                                         //
-     * @When a demo scenario sends a request to :path                           //
+     * @Given I am on the homepage                                              //
      */                                                                         //
-    public function aDemoScenarioSendsARequestTo($path)                         //
+    public function iAmOnTheHomepage()                                          //
     {                                                                           //
         // ...                                                                  //
     }                                                                           //
                                                                                 //
     /**                                                                         //
-     * @Given I am on the homepage                                              //
+     * @When a demo scenario sends a request to :path                           //
      */                                                                         //
-    public function iAmOnTheHomepage()                                          //
+    public function aDemoScenarioSendsARequestTo($path)                         //
     {                                                                           //
         // ...                                                                  //
     }                                                                           //
                                                                                 //
     /**                                                                         //
-     * @BeforeScenario                                                          //
+     * @Then the response should be received                                    //
      */                                                                         //
-    public function reset()                                                     //
+    public function theResponseShouldBeReceived()                               //
     {                                                                           //
         // ...                                                                  //
     }                                                                           //
 }                                                                               //
                                                                                 //

配置示例

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    [
        // ...
        'PedroTroller/order_behat_steps' => [ 'instanceof' => [ 'Behat\Behat\Context\Context' ] ],
        // ...
    ]
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

或者使用我的规则列表构建器

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    PedroTroller\CS\Fixer\RuleSetFactory::create()
        ->enable('PedroTroller/order_behat_steps', [ 'instanceof' => [ 'Behat\Behat\Context\Context' ] ])
        ->getRules()
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

修复

--- Original                                                                     // 80 chars
+++ New                                                                          //
@@ @@                                                                            //
     }                                                                           //
                                                                                 //
     /**                                                                         //
-     * @Then the response should be received                                    //
+     * @BeforeScenario                                                          //
      */                                                                         //
-    public function theResponseShouldBeReceived()                               //
+    public function reset()                                                     //
     {                                                                           //
         // ...                                                                  //
     }                                                                           //
                                                                                 //
     /**                                                                         //
-     * @When a demo scenario sends a request to :path                           //
+     * @Given I am on the homepage                                              //
      */                                                                         //
-    public function aDemoScenarioSendsARequestTo($path)                         //
+    public function iAmOnTheHomepage()                                          //
     {                                                                           //
         // ...                                                                  //
     }                                                                           //
                                                                                 //
     /**                                                                         //
-     * @Given I am on the homepage                                              //
+     * @When a demo scenario sends a request to :path                           //
      */                                                                         //
-    public function iAmOnTheHomepage()                                          //
+    public function aDemoScenarioSendsARequestTo($path)                         //
     {                                                                           //
         // ...                                                                  //
     }                                                                           //
                                                                                 //
     /**                                                                         //
-     * @BeforeScenario                                                          //
+     * @Then the response should be received                                    //
      */                                                                         //
-    public function reset()                                                     //
+    public function theResponseShouldBeReceived()                               //
     {                                                                           //
         // ...                                                                  //
     }                                                                           //
 }                                                                               //
                                                                                 //

PedroTroller/ordered_with_getter_and_setter_first

类/接口/特质方法必须按顺序排列(访问器位于类开头,按属性顺序排列)。

配置示例

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    [
        // ...
        'PedroTroller/ordered_with_getter_and_setter_first' => true,
        // ...
    ]
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

或者使用我的规则列表构建器

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    PedroTroller\CS\Fixer\RuleSetFactory::create()
        ->enable('PedroTroller/ordered_with_getter_and_setter_first')
        ->getRules()
);
$config->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()                                                    //
                                                                                 //

PedroTroller/exceptions_punctuation

异常消息必须以 "."、"…"、"?" 或 "!" 结尾。

风险:会更改异常消息。

配置示例

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    [
        // ...
        'PedroTroller/exceptions_punctuation' => true,
        // ...
    ]
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

或者使用我的规则列表构建器

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    PedroTroller\CS\Fixer\RuleSetFactory::create()
        ->enable('PedroTroller/exceptions_punctuation')
        ->getRules()
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

修复

--- Original                                                                     // 80 chars
+++ New                                                                          //
@@ @@                                                                            //
 class MyClass {                                                                 //
     public function fun1()                                                      //
     {                                                                           //
-        throw new \Exception('This is the message');                            //
+        throw new \Exception('This is the message.');                           //
     }                                                                           //
                                                                                 //
     public function fun2($data)                                                 //
     {                                                                           //
-        throw new LogicException(sprintf('This is the %s', 'message'));         //
+        throw new LogicException(sprintf('This is the %s.', 'message'));        //
     }                                                                           //
 }                                                                               //
                                                                                 //

PedroTroller/forbidden_functions

禁止使用的函数必须被注释为禁止使用

可用选项

  • comment (可选): 要放入注释中的禁止信息

    • 默认值: @TODO 删除此行
  • functions (可选): 要标记为禁止使用的函数名

    • 默认值: var_dump, dump, die

配置示例

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    [
        // ...
        'PedroTroller/forbidden_functions' => [ 'comment' => 'YOLO' ],
        // ...
    ]
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

或者使用我的规则列表构建器

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    PedroTroller\CS\Fixer\RuleSetFactory::create()
        ->enable('PedroTroller/forbidden_functions', [ 'comment' => 'YOLO' ])
        ->getRules()
);
$config->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_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    [
        // ...
        'PedroTroller/forbidden_functions' => [ 'comment' => 'NEIN NEIN NEIN !!!', 'functions' => [ 'var_dump', 'var_export' ] ],
        // ...
    ]
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

或者使用我的规则列表构建器

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    PedroTroller\CS\Fixer\RuleSetFactory::create()
        ->enable('PedroTroller/forbidden_functions', [ 'comment' => 'NEIN NEIN NEIN !!!', 'functions' => [ 'var_dump', 'var_export' ] ])
        ->getRules()
);
$config->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)                                                 //
                                                                                 //

PedroTroller/line_break_between_method_arguments

如果方法声明太长,则必须将此方法的参数分开(每行一个参数)

可用选项

  • automatic-argument-merge (可选): 如果同时满足以下条件(行不太长且参数不多),则将参数放回一行中

    • 默认值: true
  • inline-attributes (可选): 在拆分的情况下,方法参数的属性声明将与参数本身在同一行上

    • 默认值: false
  • max-args (可选): 允许在多行拆分参数时的最大参数数量(使用 false 禁用此功能)

    • 默认值: 3
  • max-length (可选): 允许在多行拆分参数时的最大字符数

    • 默认值: 120

配置示例

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    [
        // ...
        'PedroTroller/line_break_between_method_arguments' => [ 'max-args' => 4, 'max-length' => 120, 'automatic-argument-merge' => true, 'inline-attributes' => true ],
        // ...
    ]
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

或者使用我的规则列表构建器

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    PedroTroller\CS\Fixer\RuleSetFactory::create()
        ->enable('PedroTroller/line_break_between_method_arguments', [ 'max-args' => 4, 'max-length' => 120, 'automatic-argument-merge' => true, 'inline-attributes' => true ])
        ->getRules()
);
$config->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;                                                                 //
     }                                                                           //
 }                                                                               //
                                                                                 //

配置示例

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    [
        // ...
        'PedroTroller/line_break_between_method_arguments' => [ 'max-args' => false, 'max-length' => 120, 'automatic-argument-merge' => true, 'inline-attributes' => true ],
        // ...
    ]
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

或者使用我的规则列表构建器

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    PedroTroller\CS\Fixer\RuleSetFactory::create()
        ->enable('PedroTroller/line_break_between_method_arguments', [ 'max-args' => false, 'max-length' => 120, 'automatic-argument-merge' => true, 'inline-attributes' => true ])
        ->getRules()
);
$config->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;                                                                 //
     }                                                                           //
 }                                                                               //
                                                                                 //

PedroTroller/line_break_between_statements

每个语句(in、for、foreach等)必须由一个空行分开

配置示例

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    [
        // ...
        'PedroTroller/line_break_between_statements' => true,
        // ...
    ]
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

或者使用我的规则列表构建器

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    PedroTroller\CS\Fixer\RuleSetFactory::create()
        ->enable('PedroTroller/line_break_between_statements')
        ->getRules()
);
$config->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) {                                                          //
             // ...                                                              //
                                                                                 //

PedroTroller/comment_line_to_phpdoc_block

类元素(方法、属性等)注释必须为PhpDoc块

配置示例

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    [
        // ...
        'PedroTroller/comment_line_to_phpdoc_block' => true,
        // ...
    ]
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

或者使用我的规则列表构建器

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    PedroTroller\CS\Fixer\RuleSetFactory::create()
        ->enable('PedroTroller/comment_line_to_phpdoc_block')
        ->getRules()
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

修复

--- Original                                                                     // 80 chars
+++ New                                                                          //
@@ @@                                                                            //
      */                                                                         //
     private $name;                                                              //
                                                                                 //
-    // @var string | null                                                       //
+    /**                                                                         //
+     * @var string | null                                                       //
+     */                                                                         //
     private $value;                                                             //
                                                                                 //
     /**                                                                         //
@@ @@                                                                            //
         $this->name = $name;                                                    //
     }                                                                           //
                                                                                 //
-    // Get the name                                                             //
-    //                                                                          //
-    // @return string                                                           //
+    /**                                                                         //
+     * Get the name                                                             //
+     *                                                                          //
+     * @return string                                                           //
+     */                                                                         //
     public function getName()                                                   //
     {                                                                           //
         return $this->name;                                                     //
     }                                                                           //
                                                                                 //
-    // Get the value                                                            //
-    // @return null | string                                                    //
+    /**                                                                         //
+     * Get the value                                                            //
+     * @return null | string                                                    //
+     */                                                                         //
     public function getValue()                                                  //
     {                                                                           //
         return $this->value;                                                    //
     }                                                                           //
                                                                                 //
-    // Set the value                                                            //
-                                                                                //
-    // @param string $value                                                     //
+    /**                                                                         //
+     * Set the value                                                            //
+     * @param string $value                                                     //
+     */                                                                         //
     public function setValue($value)                                            //
     {                                                                           //
         $this->value = $value;                                                  //
     }                                                                           //
 }                                                                               //
                                                                                 //

PedroTroller/useless_code_after_return

所有不可访问的 return(即跟随另一个 return)必须被删除

配置示例

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    [
        // ...
        'PedroTroller/useless_code_after_return' => true,
        // ...
    ]
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

或者使用我的规则列表构建器

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    PedroTroller\CS\Fixer\RuleSetFactory::create()
        ->enable('PedroTroller/useless_code_after_return')
        ->getRules()
);
$config->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; };                                    //
     }                                                                           //
 }                                                                               //
                                                                                 //

PedroTroller/doctrine_migrations

从Doctrine迁移中删除不必要的空方法和注释(如 getDescription()up()down()

可用选项

  • instanceof (可选): Doctrine迁移扩展的父类
    • 默认值: Doctrine\Migrations\AbstractMigration

配置示例

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    [
        // ...
        'PedroTroller/doctrine_migrations' => true,
        // ...
    ]
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

或者使用我的规则列表构建器

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    PedroTroller\CS\Fixer\RuleSetFactory::create()
        ->enable('PedroTroller/doctrine_migrations')
        ->getRules()
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

修复

--- Original                                                                     // 80 chars
+++ New                                                                          //
@@ @@                                                                            //
 use Doctrine\DBAL\Schema\Schema;                                                //
 use Doctrine\Migrations\AbstractMigration;                                      //
                                                                                 //
-/**                                                                             //
- * Auto-generated Migration: Please modify to your needs!                       //
- */                                                                             //
 final class Version20190323095102 extends AbstractMigration                     //
 {                                                                               //
-    public function getDescription()                                            //
-    {                                                                           //
-        return '';                                                              //
-    }                                                                           //
                                                                                 //
     public function up(Schema $schema)                                          //
     {                                                                           //
-        // this up() migration is auto-generated, please modify it to your needs//
         $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
                                                                                 //
         $this->addSql('CREATE TABLE admin (identifier CHAR(36) NOT NULL COMMENT \'(DC2Type:guid)\', PRIMARY KEY(identifier)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB');
@@ @@                                                                            //
                                                                                 //
     public function down(Schema $schema)                                        //
     {                                                                           //
-        // this down() migration is auto-generated, please modify it to your needs
         $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
                                                                                 //
         $this->addSql('DROP TABLE admin');                                      //
     }                                                                           //
 }                                                                               //
                                                                                 //

配置示例

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    [
        // ...
        'PedroTroller/doctrine_migrations' => [ 'instanceof' => [ 'Doctrine\Migrations\AbstractMigration' ] ],
        // ...
    ]
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

或者使用我的规则列表构建器

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    PedroTroller\CS\Fixer\RuleSetFactory::create()
        ->enable('PedroTroller/doctrine_migrations', [ 'instanceof' => [ 'Doctrine\Migrations\AbstractMigration' ] ])
        ->getRules()
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

修复

--- Original                                                                     // 80 chars
+++ New                                                                          //
@@ @@                                                                            //
 use Doctrine\DBAL\Schema\Schema;                                                //
 use Doctrine\Migrations\AbstractMigration;                                      //
                                                                                 //
-/**                                                                             //
- * Auto-generated Migration: Please modify to your needs!                       //
- */                                                                             //
 final class Version20190323095102 extends AbstractMigration                     //
 {                                                                               //
-    public function getDescription()                                            //
-    {                                                                           //
-        return '';                                                              //
-    }                                                                           //
                                                                                 //
     public function up(Schema $schema)                                          //
     {                                                                           //
-        // this up() migration is auto-generated, please modify it to your needs//
         $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
                                                                                 //
         $this->addSql('CREATE TABLE admin (identifier CHAR(36) NOT NULL COMMENT \'(DC2Type:guid)\', PRIMARY KEY(identifier)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB');
@@ @@                                                                            //
                                                                                 //
     public function down(Schema $schema)                                        //
     {                                                                           //
-        // this down() migration is auto-generated, please modify it to your needs
         $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
                                                                                 //
         $this->addSql('DROP TABLE admin');                                      //
     }                                                                           //
 }                                                                               //
                                                                                 //

PedroTroller/phpspec

Phpspec场景函数不得有返回类型声明。

Phpspec场景函数不得有作用域。

Phpspec规范类的必须按顺序排列(let、letGo、its_、it_、getMatchers和其他方法)

Lambda函数不得有静态作用域。

可用选项

  • instanceof (可选): 您的规范类的父类
    • 默认值: PhpSpec\ObjectBehavior

配置示例

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    [
        // ...
        'PedroTroller/phpspec' => true,
        // ...
    ]
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

或者使用我的规则列表构建器

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    PedroTroller\CS\Fixer\RuleSetFactory::create()
        ->enable('PedroTroller/phpspec')
        ->getRules()
);
$config->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;                                                                 //
     }                                                                           //
                                                                                 //
-    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;                                                                 //
     }                                                                           //
 }                                                                               //
                                                                                 //

配置示例

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    [
        // ...
        'PedroTroller/phpspec' => [ 'instanceof' => [ 'PhpSpec\ObjectBehavior' ] ],
        // ...
    ]
);
$config->registerCustomFixers(new PedroTroller\CS\Fixer\Fixers());
// ...

return $config;

或者使用我的规则列表构建器

// .php_cs.dist
<?php

$config = new PhpCsFixer\Config();
// ...
$config->setRules(
    PedroTroller\CS\Fixer\RuleSetFactory::create()
        ->enable('PedroTroller/phpspec', [ 'instanceof' => [ 'PhpSpec\ObjectBehavior' ] ])
        ->getRules()
);
$config->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;                                                                 //
     }                                                                           //
                                                                                 //
-    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;                                                                 //
     }                                                                           //
 }                                                                               //
                                                                                 //

贡献

在创建拉取请求提交贡献之前,您必须

  • 运行测试并确保没有问题
  • 重新构建文档

如何运行测试

composer tests

如何重新构建文档

bin/doc > README.md