php-cs-fixer:需要更多关于使用 fix --level 选项的信息

php-cs-fixer: need more information on using fix --level option

好的,我知道 php-cs-fixer 允许对编码标准进行以下级别的修复:

php php-cs-fixer.phar fix /path/to/project --level=psr0
php php-cs-fixer.phar fix /path/to/project --level=psr1
php php-cs-fixer.phar fix /path/to/project --level=psr2
php php-cs-fixer.phar fix /path/to/project --level=symfony 

我知道 psr0psr1psr2 级别保持指定的编码标准。

但我想知道 --level=symfony 提供了什么以及该编码标准与 psr2 有何不同。

此外,如果我们根本不提供 --level 选项。默认情况下是否假设 --level=psr2

正如我从该文档中看到的 https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/1.8/README.rst 它执行此过滤器列表:

  • blankline_after_open_tag - 确保在 PHP 打开标签的同一行上没有代码,并且后面跟一个空行。
  • concat_without_spaces - 应该在没有 space 的情况下使用串联。
  • double_arrow_multiline_whitespaces - 运算符=>不应该被多行白spaces包围。
  • duplicate_semicolon - 删除重复的分号。
  • empty_return - 一个 return 声明希望 return 什么都不应该只是 "return".
  • extra_empty_lines - 删除多余的空行。
  • include - 包含和文件路径应该用一个 space 分开。文件路径不应放在括号内。
  • join_function - 应该使用内爆函数而不是连接函数。
  • list_commas - 删除列表函数调用中的尾随逗号。
  • multiline_array_trailing_comma - PHP 多行数组应该有尾随逗号。
  • namespace_no_leading_whitespace - 名称space 声明行不应包含前导白色space。
  • new_with_braces - 所有使用 new 关键字创建的实例后面都必须跟大括号。
  • no_blank_lines_after_class_opening - class 大括号后不应有空行。
  • no_empty_lines_after_phpdocs - 文档块和文档元素之间不应有空行。
  • object_operator - 在对象 T_OBJECT_OPERATOR.
  • 之前或之后不应有 space
  • operators_spaces - 二元运算符应至少包含一个 space.
  • phpdoc_indent - 文档块的缩进应与记录的主题相同。
  • phpdoc_no_access - @access 注释应该从 phpdocs 中省略。
  • phpdoc_no_empty_return - @return void 和@return 空注释应该从 phpdocs 中省略。
  • phpdoc_no_package - @package 和 @subpackage 注释应该从 phpdocs 中省略。
  • phpdoc_params - @param、@throws、@return、@var 和 @type phpdoc 标签的所有项目必须垂直对齐。
  • phpdoc_scalar - 标量类型应始终以相同的形式编写。 "int",不是"integer"; "bool",不是"boolean"; "float",不是 "real" 或 "double"。
  • phpdoc_separation - phpdocs 中的注释应分组在一起,以便相同类型的注释紧跟在一起,不同类型的注释由一个空行分隔。
  • phpdoc_short_description - Phpdocs 简短描述应以句号、感叹号或问号结尾。
  • phpdoc_to_comment - 文档块只能用于结构元素。
  • phpdoc_trim - Phpdocs 应该以内容开始和结束,不包括文档块的第一行和最后一行。
  • phpdoc_type_to_var - @type 应始终写为 @var.
  • phpdoc_var_without_name - @var 和@type 注释不应包含变量名。
  • remove_leading_slash_use - 删除 use 子句中的前导斜杠。
  • remove_lines_between_uses - 删除 use 语句之间的换行符。
  • return - 一个空换行符应该在 return 语句之前。
  • self_accessor - 在 classy 元素中 "self" 应该优先于 class 名称本身。
  • single_array_no_trailing_comma - PHP 单行数组不应有尾随逗号。
  • single_blank_line_before_namespace - namespace 声明前应该只有一个空行。
  • single_quote - 将简单字符串的双引号转换为单引号。
  • spaces_before_semicolon - 单行白色space 前分号为
  • spaces_cast - 一个 space 应该在 cast 和 variable 之间。
  • standardize_not_equal - 将所有 <> 替换为 !=.
  • ternary_spaces - 围绕三元运算符标准化 spaces。
  • trim_array_spaces - 数组的格式应类似于 function/method 参数,没有前导或尾随单行 space.
  • unalign_double_arrow - 不对齐双箭头符号。
  • unalign_equals - 不对齐等于符号。
  • unary_operators_spaces - 一元运算符应该放在它们的操作数附近。
  • unused_use - 必须删除未使用的 use 语句。
  • whitespacy_lines - 删除空白行末尾的尾随白色space。

这里是关于使用 php-cs-fixera good blog post,这里暗示如果未提供 --level 选项,默认情况下它使用 psr2 修复程序。

但是,如果我们明确地通过 --level=symfony 它 运行 一些 “附加”检查,这些检查针对 Symfony 并超越 PSR2

By default, it runs “all PSR-2 fixers and some additional ones.” You can toggle the level you want to run with the --level flag, which I’ll be setting to psr2 so that the “additional” checks, which are targeted at Symfony and go above-and-beyond PSR2, don’t throw me off. (It runs the entire stack by default, which is called level “symfony” and includes things like “Align equals signs in subsequent lines”).

php-cs-fixer README on github 还提供了一些关于 PSR-0、PSR-1、PSR-2 和 symfony 中 运行 过滤器的信息。

现在 2017 年,从版本 2 开始,您可以使用 describe 命令

vendor/bin/php-cs-fixer describe @PSR2

它向您显示规则集中的当前修复程序及其名称和描述:

所以对于 "Symfony" 规则集它看起来像:

vendor/bin/php-cs-fixer describe @Symfony

对于像这样的单个规则:

vendor/bin/php-cs-fixer describe some_rule

级别更改为@Rule

另请注意 level 选项已弃用。作为规则使用它,只需使用 @ 前缀即可。

vendor/bin/php-cs-fixer --rules=@PSR2

如果您要查找更多详细信息,请参阅 related PR