styleci / php-cs-fixer
自动修复PHP代码风格的工具
此包尚未发布版本,信息不多。
README
PHP编码规范修复工具可以在你想要遵循PSR-1和PSR-2文档中定义的PHP编码规范以及更多规范时,修复你代码中的大多数问题。
如果你已经在使用代码检查工具来识别代码规范问题,你知道手动修复这些问题非常繁琐,尤其是在大型项目中。这个工具不仅可以检测它们,还可以为你修复它们。
这是StyleCI的定制版本。
用法
fix
命令尝试在一个给定的文件或一个给定目录及其子目录中的文件上修复尽可能多的编码规范问题
php php-cs-fixer.phar fix /path/to/dir php php-cs-fixer.phar fix /path/to/file
输出格式的--format
选项。支持的格式有txt
(默认),json
和xml
。
--verbose
选项将显示应用的修复器。当使用txt
格式时,它还会显示进度通知。
--rules
选项限制应用于项目的规则
php php-cs-fixer.phar fix /path/to/project --rules=@PSR2
默认情况下,所有PSR修复器都会运行。
--rules
选项允许你选择要应用的特定修复器(修复器名称必须由逗号分隔)
php php-cs-fixer.phar fix /path/to/dir --rules=linefeed,short_tag,indentation
你也可以通过在修复器名称前放置破折号来黑名单你不想使用的修复器,如果这样做更方便,可以使用-name_of_fixer
php php-cs-fixer.phar fix /path/to/dir --rules=-short_tag,-indentation
当使用精确和黑名单修复器的组合时,应用精确修复器,同时保留上述黑名单的结果
php php-cs-fixer.phar fix /path/to/project --rules=@Symfony,-@PSR1,-return,strict
--dry-run
和--diff
的组合将显示建议修复的摘要,但不会更改你的文件。
--allow-risky
选项允许你设置是否运行风险修复器。默认值取自配置文件。风险修复器是一种可能会更改代码行为的修复器。默认情况下不运行任何风险修复器。
该命令也可以从标准输入读取,在这种情况下,它不会自动修复任何内容
cat foo.php | php php-cs-fixer.phar fix --diff -
从可用的修复器列表中选择
- alias_functions [@Symfony]
应使用主函数而不是别名。
- align_double_arrow
对连续行中的双箭头符号进行对齐。
- align_equals
对连续行中的等于符号进行对齐。
- array_element_no_space_before_comma [@Symfony]
在数组声明中,每个逗号前不得有空格。
- array_element_white_space_after_comma [@Symfony]
在数组声明中,每个逗号后必须有空格。
- blankline_after_open_tag [@Symfony]
确保没有代码与PHP打开标签在同一行上,并且它后面有一个空行。
- braces [@PSR2, @Symfony]
每个结构体的主体必须用括号包围。括号应正确放置。括号主体的缩进应正确。
- class_definition [@PSR2, @Symfony]
类、特质或接口定义的关键词周围的空间应为单个空格。
- concat_with_spaces
连接操作应至少有一个空格在其周围。
- concat_without_spaces [@Symfony]
连接操作应无空格。
- double_arrow_multiline_whitespaces [@Symfony]
操作符 => 不应被多行空白字符包围。
- duplicate_semicolon [@Symfony]
删除重复的分号。
- echo_to_print
如果可能,将 echo 语言构造转换为 print。
- elseif [@PSR2, @Symfony]
应使用关键字 elseif 而不是 else if,以便所有控制关键字看起来像单个单词。
- empty_return [@Symfony]
想要返回空的返回语句应该是简单的 "return"。
- encoding [@PSR1, @PSR2, @Symfony]
PHP 代码必须仅使用无 BOM 的 UTF-8(移除 BOM)。
- eof_ending [@PSR2, @Symfony]
文件必须始终以一个空行结束。
- ereg_to_preg
用 preg 替换已弃用的 ereg 正则表达式函数。(风险修复!)
- extra_empty_lines [@Symfony]
删除额外的空白行和/或配置后的空白行。
- function_call_space [@PSR2, @Symfony]
在调用方法或函数时,方法或函数名和开括号之间不得有空格。
- function_declaration [@PSR2, @Symfony]
函数声明中应正确放置空格。
- function_typehint_space [@Symfony]
在函数的参数和类型提示之间添加缺少的空格。
- hash_to_slash_comment [@Symfony]
单行注释应使用双斜杠(//)而不是井号(#)。
- header_comment
添加、替换或删除头部注释。
- include [@Symfony]
Include/Require 和文件路径应使用单个空格分隔。文件路径不应放在括号内。
- indentation [@PSR2, @Symfony]
代码必须使用 4 个空格的缩进,并且不得使用制表符进行缩进。
- line_after_namespace [@PSR2, @Symfony]
在命名空间声明之后必须有一个空行。
- linefeed [@PSR2, @Symfony]
所有 PHP 文件都必须使用 Unix LF(换行符)行结束。
- list_commas [@Symfony]
删除列表函数调用中的尾随逗号。
- logical_not_operators_with_spaces
逻辑非运算符(!)应具有前导和尾随空白。
- logical_not_operators_with_successor_space
逻辑非运算符(!)应有一个尾随空格。
- long_array_syntax
数组应使用长语法。
- lowercase_constants [@PSR2, @Symfony]
PHP 常量 true、false 和 null 必须小写。
- lowercase_keywords [@PSR2, @Symfony]
PHP 关键字必须小写。
- method_argument_default_value [@Symfony]
在方法参数中,不得在非默认参数之前有带默认值的参数。
- method_argument_space [@PSR2, @Symfony]
在方法参数和方法调用中,每个逗号之前不得有空格,每个逗号之后必须有一个空格。
- method_separation [@Symfony]
方法必须用一行空白分隔。
- multiline_array_trailing_comma [@Symfony]
PHP 多行数组应有一个尾随逗号。
- multiline_spaces_before_semicolon
禁止在关闭分号之前有多行空白。
- multiple_use [@PSR2, @Symfony]
每个声明必须有一个 use 关键字。
- namespace_no_leading_whitespace [@Symfony]
命名空间声明行不应包含前导空白。
- new_with_braces [@Symfony]
使用 new 关键字创建的所有实例都必须后跟大括号。
- newline_after_open_tag
确保在 PHP 开放标签同一行上没有代码。
- no_blank_lines_after_class_opening [@Symfony]
在类开大括号之后不应有空行。
- no_blank_lines_before_namespace
在命名空间声明之前不应有空行。
- no_empty_lines_after_phpdocs [@Symfony]
在 docblock 和被注释元素之间不应有空行。
- object_operator [@Symfony]
在对象 T_OBJECT_OPERATOR 之前和之后不应有空格。
- 运算符间隔 [@Symfony]
二元运算符应至少有一个空格。
- 有序使用
使用语句的排序。
- 括号 [@PSR2, @Symfony]
在开括号后不得有空格。在闭括号前不得有空格。
- php4构造函数
将PHP4风格的构造函数转换为__construct。 (风险修复!)
- PHP闭合标签 [@PSR2, @Symfony]
只包含PHP的文件中必须省略闭合标签 ?>。
- php单元构造
使用PHPUnit断言方法调用如"->assertSame(true, $foo)"时,应使用专用方法"->assertTrue($foo)"。 (风险修复!)
- php单元严格
应使用PHPUnit方法"assertSame"而不是"assertEquals"。 (风险修复!)
- PHPdoc对齐 [@Symfony]
所有 @param、@throws、@return、@var 和 @type PHPdoc 标签的项目都必须垂直对齐。
- PHPdoc缩进 [@Symfony]
Docblocks的缩进应与文档化的主题相同。
- PHPdoc行内标签 [@Symfony]
修复PHPDoc行内标签,使 inheritdoc 总是行内。
- PHPdoc无访问权限 [@Symfony]
从phpdocs中省略 @access 注释。
- PHPdoc无空返回 [@Symfony]
省略 @return void 和 @return null 注释。
- PHPdoc无包 [@Symfony]
从phpdocs中省略 @package 和 @subpackage 注释。
- phpdoc_order
在phpdocs中,注释应按顺序排列,使参数注释首先,然后是抛出注释,然后是返回注释。
- phpdoc_property
应使用 @property 标签而不是其他变体。
- PHPdoc标量 [@Symfony]
标量类型应始终以相同的形式书写。"int",而不是"integer";"bool",而不是"boolean";"float",而不是"real"或"double"。
- PHPdoc分隔 [@Symfony]
在phpdocs中,注释应分组在一起,使相同类型的注释紧随其后,不同类型的注释之间用一个空行分隔。
- PHPdoc摘要 [@Symfony]
Phpdocs摘要应以句号、感叹号或问号结束。
- PHPdoc转换为注释 [@Symfony]
仅在结构元素上使用docblocks。
- PHPdoc缩进 [@Symfony]
Phpdocs应从内容开始和结束,不包括docblocks的第一行和最后一行。
- PHPdoc类型到变量 [@Symfony]
@type 应始终写作 @var。
- PHPdoc类型 [@Symfony]
在phpdoc中,必须使用正确的格式来使用标准PHP类型。
- phpdoc_var_to_type
@var 应始终写作 @type。
- PHPdoc变量无名称 [@Symfony]
@var 和 @type 注释不应包含变量名称。
- 预递增 [@Symfony]
如果可能,应使用预递增/递减。
- print_to_echo [@Symfony]
如果可能,将 print 语言构造转换为 echo。
- psr0
类必须在与它们的命名空间匹配的路径中,至少深一个命名空间,类名应与文件名匹配。 (风险修复!)
- psr4
类名应与文件名匹配。 (风险修复!)
- 移除use子句中的前导斜杠 [@Symfony]
移除use子句中的前导斜杠。
- 移除use语句之间的行 [@Symfony]
移除use语句之间的换行符。
- 返回 [@Symfony]
返回语句前应有一个空行。
- self访问器 [@Symfony]
在类元素内部应首选"self"而不是类名本身。
- short_array_syntax
PHP数组应使用PHP 5.4简短语法。
- short_bool_cast [@Symfony]
不应使用使用双感叹号进行短布尔转换。
- short_echo_tag
将短 echo <?= 替换为长格式 <?php echo 语法。
- short_tag [@PSR1, @PSR2, @Symfony]
PHP代码必须使用长标签或短echo?=?>标签;不得使用其他标签变体。
- single_array_no_trailing_comma [@Symfony]
PHP单行数组不应有尾随逗号。
- single_blank_line_before_namespace [@Symfony]
在命名空间声明之前应恰好有一行空白。
- single_line_after_imports [@PSR2, @Symfony]
每个命名空间使用必须在单独一行上,并且使用语句块之后必须有一行空白。
- single_quote [@Symfony]
将简单字符串的双引号转换为单引号。
- spaces_after_semicolon [@Symfony]
修复分号后面的空白。
- spaces_before_semicolon [@Symfony]
单行分号前不允许有空格。
- spaces_cast [@Symfony]
在类型转换和变量之间应有一个空格。
- standardize_not_equal [@Symfony]
将所有<>替换为!=。
- strict
比较应该是严格的。(风险修复!)
- strict_param
函数应使用$strict参数。(风险修复!)
- switch_case_space [@PSR2, @Symfony]
删除冒号和case值之间的额外空格。
- ternary_spaces [@Symfony]
标准化三元运算符周围的空格。
- trailing_spaces [@PSR2, @Symfony]
删除非空白行末尾的尾随空白。
- trim_array_spaces [@Symfony]
数组应格式化为函数/方法参数,不带前导或尾随单行空格。
- unalign_double_arrow [@Symfony]
不对齐双箭头符号。
- unalign_equals [@Symfony]
不对齐等于符号。
- unary_operators_spaces [@Symfony]
一元运算符应放置在其操作数旁边。
- unneeded_control_parentheses [@Symfony]
删除控制语句周围的未必要括号。
- unused_use [@Symfony]
必须删除未使用的use语句。
- visibility [@PSR2, @Symfony]
必须在所有属性和方法上声明可见性;抽象和final必须在可见性之前声明;static必须在可见性之后声明。
- whitespacy_lines [@Symfony]
删除空白行末尾的尾随空白。
使用--config
选项可以根据一些知名的目录结构自定义要分析的文件
# For the Symfony 2.3+ branch php php-cs-fixer.phar fix /path/to/sf23 --config=sf23
从可用配置列表中选择
- default 默认配置
- magento Magento应用的配置
- sf23 Symfony 2.3+分支的配置
--dry-run
选项显示需要修复的文件,但不会实际修改它们
php php-cs-fixer.phar fix /path/to/code --dry-run
除了使用命令行选项来自定义修复器之外,您还可以将项目配置保存到项目根目录中的.php_cs.dist
文件中。该文件必须返回一个Symfony\CS\ConfigInterface
的实例,这允许您配置规则、需要分析的文件和目录。您还可以创建.php_cs
文件,这是将用于替代项目配置的本地配置。将此文件添加到.gitignore
文件是一个好习惯。使用--config-file
选项,您可以指定.php_cs
文件的路径。
以下示例将向默认PSR2集修复器列表中添加两个修复器
<?php $finder = Symfony\CS\Finder\DefaultFinder::create() ->exclude('somedir') ->in(__DIR__) ; return Symfony\CS\Config\Config::create() ->setRules(array( '@PSR2' => true, 'strict_param' => true, 'short_array_syntax' => true, )) ->finder($finder) ;
您还可以使用黑名单而不是上面显示的允许列表来使用修复器。以下示例显示如何使用所有Symfony
修复器,但排除short_tag
修复器。
<?php $finder = Symfony\CS\Finder\DefaultFinder::create() ->exclude('somedir') ->in(__DIR__) ; return Symfony\CS\Config\Config::create() ->setRules(array( '@Symfony' => true, 'short_tag' => false, )) ->finder($finder) ;
通过使用带有yes或no的--using-cache
选项,您可以设置是否应使用缓存机制。
缓存
缓存机制默认启用。这将通过仅修复自上次运行以来已修改的文件来加快后续运行的进程。如果工具版本已更改或修复器列表已更改,则工具将修复所有文件。仅支持将工具作为phar文件下载或通过composer安装时使用的缓存。
可以通过--using-cache
选项或配置文件禁用缓存。
<?php return Symfony\CS\Config\Config::create() ->setUsingCache(false) ;
可以通过--cache-file
选项或配置文件指定缓存文件。
<?php return Symfony\CS\Config\Config::create() ->setCacheFile(__DIR__.'/.php_cs.cache') ;