vinelab/php-cs-fixer

该包已被废弃,不再维护。没有推荐替代包。

自动修复 Symfony 编码标准的脚本

安装: 159

依赖者: 0

建议者: 0

安全: 0

关注者: 3

分支: 359

类型:application

v0.5.7 2014-08-07 12:40 UTC

README

PHP编码标准修复工具可以在您想遵循PSR-1和PSR-2文档中定义的PHP编码标准时,修复代码中的大多数问题。

如果您已经使用PHP_CodeSniffer来识别代码中的编码标准问题,您知道手动修复它们是非常繁琐的,尤其是在大型项目中。这个工具会为您完成这项工作。

要求

PHP需要至少是PHP 5.3.6版本

安装

本地安装

下载php-cs-fixer.phar文件,并将其存储在您的计算机上某个位置。

全局安装(手动)

您可以使用以下命令轻松从系统中的任何位置访问php-cs-fixer

$ sudo wget http://get.sensiolabs.org/php-cs-fixer.phar -O /usr/local/bin/php-cs-fixer

或使用curl

$ sudo curl http://get.sensiolabs.org/php-cs-fixer.phar -o /usr/local/bin/php-cs-fixer

然后

$ sudo chmod a+x /usr/local/bin/php-cs-fixer

然后,只需运行php-cs-fixer

全局安装(Composer)

要安装PHP-CS-Fixer,请安装Composer并执行以下命令

$ ./composer.phar global require FriendsOfPhp/php-cs-fixer @stable

然后,确保您有~/.composer/vendor/bin在您的PATH中,然后您就可以开始使用了

export PATH="$PATH:$HOME/.composer/vendor/bin"

全局安装(homebrew)

PHP-CS-Fixer是homebrew-php项目的一部分。如果您还没有,请遵循https://github.com/homebrew/homebrew-php中的安装说明。

$ brew install homebrew/php/php-cs-fixer

更新

本地更新

self-update命令尝试更新php-cs-fixer本身

$ php php-cs-fixer.phar self-update

全局安装(手动)

您可以通过此命令更新php-cs-fixer

$ sudo php-cs-fixer self-update

全局安装(homebrew)

您可以通过此命令更新php-cs-fixer

$ brew upgrade php-cs-fixer

用法

fix命令尝试在一个给定的文件或目录上尽可能修复编码标准问题

php php-cs-fixer.phar fix /path/to/dir
php php-cs-fixer.phar fix /path/to/file

--level选项限制应用于项目的修复器

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

默认情况下,所有PSR-2修复器和一些额外的修复器都会运行。您不能通过此选项启用“contrib level”修复器;相反,您应该通过--fixers选项手动设置它们。

--fixers选项允许您选择要应用的精确修复器(修复器名称必须用逗号分隔)

php php-cs-fixer.phar fix /path/to/dir --fixers=linefeed,short_tag,indentation

如果您更方便,还可以使用-name排除您不想要的修复器

php php-cs-fixer.phar fix /path/to/dir --fixers=-short_tag,-indentation

当与精确和排除修复器结合使用时,将应用精确修复器以及上述排除的结果

php php-cs-fixer.phar fix /path/to/dir --fixers=linefeed,-short_tag

--dry-run--diff的组合将显示建议的修复总结,但不会更改您的文件。

该命令还可以从标准输入读取,在这种情况下,它不会自动修复任何内容

cat foo.php | php php-cs-fixer.phar fix --diff -

从可用的修复器列表中选择

  • psr0 [PSR-0] 类必须在与它们的命名空间匹配的路径中

    至少有一个命名空间深度,类名应与文件名匹配。

  • encoding [PSR-1] PHP代码必须仅使用UTF-8

    无BOM(移除BOM)。

  • short_tag [PSR-1] PHP代码必须使用长

    <?php ?> 标签或短echo <?= ?> 标签;它不得使用其他标签变体。

  • braces [PSR-2] 每个结构的主体必须

    应被大括号括起来。大括号应放置得当。大括号的内容应正确缩进。

  • elseif [PSR-2] 关键字 elseif 应

    使用,而不是 else if,以便所有控制关键字看起来像单个单词。

  • eof_ending [PSR-2] 一个文件必须始终以一个

    空行结束。

  • function_call_space [PSR-2] 当调用一个方法或

    函数时,方法或函数名与开括号之间不得有空格。

  • function_declaration [PSR-2] 函数声明中的空格应

    放置得当。

  • indentation [PSR-2] 代码必须使用 4

    个空格的缩进,且不得使用制表符进行缩进。

  • line_after_namespace [PSR-2] 命名空间声明之后

    必须有一个空白行。

  • linefeed [PSR-2] 所有 PHP 文件必须使用 Unix

    LF(换行)行结束。

  • lowercase_constants [PSR-2] PHP 常量 true、false、

    和 null 必须是小写。

  • lowercase_keywords [PSR-2] PHP 关键字必须是小写。

  • method_argument_space [PSR-2] 在方法参数和方法

    调用中,每个逗号之前不得有空格,每个逗号之后必须有一个空格。

  • multiple_use [PSR-2] 每个声明中必须有一个 use

    关键字。

  • parenthesis [PSR-2] 开括号之后不得有空格。

    。闭括号之前不得有空格。

  • php_closing_tag [PSR-2] 仅包含 PHP 的文件中

    必须省略关闭的 ?> 标签。

  • trailing_spaces [PSR-2] 从非空白行的末尾

    移除尾随空格。

  • visibility [PSR-2] 必须在所有属性和方法上

    声明可见性;抽象和最终必须在可见性之前声明;静态必须在可见性之后声明。

  • concat_without_spaces [symfony] 连接应不使用空格。

  • duplicate_semicolon [symfony] 删除重复的分号。

  • extra_empty_lines [symfony] 移除额外的空白行。

  • include [symfony] 包含和文件路径应

    使用单个空格分隔。文件路径不应置于方括号中。

  • multiline_array_trailing_comma [symfony] PHP 多行数组应

    有尾随逗号。

  • namespace_no_leading_whitespace [symfony] 命名空间声明

    行不应包含前导空格。

  • new_with_braces [symfony] 使用 new 关键字创建的所有

    实例都必须跟有括号。

  • object_operator [symfony] 在对象运算符

    T_OBJECT_OPERATOR 前后不应有空格。

  • operators_spaces [symfony] 运算符应至少有一个空格

    包围。

  • phpdoc_params [symfony] @param 标签的所有项必须

    垂直对齐。

  • remove_lines_between_uses [symfony] 移除 use 语句之间的换行符。

  • return [symfony] return 语句之前应有一个空行。

  • single_array_no_trailing_comma [symfony] PHP 单行数组不应有

    尾随逗号。

  • spaces_before_semicolon [symfony] 在结尾分号之前不允许

    存在单行空白。

  • spaces_cast [symfony] 在类型转换和变量之间应有一个

    空格。

  • standardize_not_equal [symfony] 将所有 <> 替换为 !=。

  • ternary_spaces [symfony] 标准化三元运算符周围的空格。

  • unused_use [symfony] 必须删除未使用的 use 语句。

  • whitespacy_lines [symfony] 从空白行的末尾

    移除尾随空格。

  • align_double_arrow [contrib] 在连续行中对齐双箭头符号。

  • align_equals [contrib] 在

  • concat_with_spaces [contrib] 连接应至少有一个空格

    包围。

  • multiline_spaces_before_semicolon [contrib] 在多行之前不允许存在空白。

    存在单行空白。

  • 有序使用 [贡献] 排序使用语句。

  • 短数组语法 [贡献] PHP 数组应该使用

    PHP 5.4 短语法。

  • 严格 [贡献] 比较应该是严格的。

    警告!这可能会改变代码的行为。

  • 严格参数 [贡献] 函数应该使用

    $strict 参数。警告!这可能会改变代码的行为。

--config 选项根据一些已知的目录结构自定义要分析的文件

# For the Symfony 2.3+ branch
php php-cs-fixer.phar fix /path/to/sf23 --config=sf23

从可用配置列表中选择

  • 默认 默认配置
  • magento Magento 应用的配置
  • sf23 Symfony 2.3+ 分支的配置

--dry-run 选项显示需要修复的文件,但实际上不会修改它们

php php-cs-fixer.phar fix /path/to/code --dry-run

您可以通过在项目的根目录中保存 .php_cs 文件来配置修复器,而不是使用命令行选项。该文件必须返回一个实现 SymfonyCSConfigInterface 的实例,这使得您可以配置修复器、级别、需要分析的文件和目录

<?php

$finder = Symfony\CS\Finder\DefaultFinder::create()
    ->exclude('somedir')
    ->in(__DIR__)
;

return Symfony\CS\Config\Config::create()
    ->fixers(array('indentation', 'elseif'))
    ->finder($finder)
;

您还可以使用黑名单而不是上述显示的白名单方法来使用修复器。以下示例显示了如何使用所有 symfony 修复器,但排除 psr0 修复器。注意修复器名称前额外的 -

<?php

$finder = Symfony\CS\Finder\DefaultFinder::create()
    ->exclude('somedir')
    ->in(__DIR__)
;

return Symfony\CS\Config\Config::create()
    ->fixers(array('-psr0'))
    ->finder($finder)
;

默认情况下,symfony 级别被设置,您也可以更改默认级别

<?php

return Symfony\CS\Config\Config::create()
    ->level(Symfony\CS\FixerInterface::PSR2_LEVEL)
;

结合这些配置和命令行选项,您可以选择不同的用法。

例如,默认级别是 symfony,但如果您也不希望使用 psr0 修复器,可以指定 --fixers="-psr0" 选项。

但如果您只使用精确的修复器与 --fixers 选项,则只有这些精确的修复器被启用,无论是否设置了级别。

使用 --config-file 选项,您可以指定 .php_cs 文件的路径。

辅助工具

为以下编辑器存在专门的插件

贡献

此工具附带了许多内置的修复器和查找器,但每个人都欢迎贡献更多。

修复器

修复器 是一个尝试修复一个 CS 问题(一个 Fixer 类必须实现 FixerInterface)的类。

配置

配置 了解 CS 级别以及当在项目目录中运行时工具必须扫描的文件和目录。这对于遵循知名目录结构的项目很有用(例如,对于 Symfony 项目)。