php-cs-fixer: нужна дополнительная информация об использовании опции fix -- level

ладно, я знаю 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 

Я знаю, что psr0, psr1, psr2 уровни поддерживают определенные стандарты кодирования.

но я хочу знать, что --level=symfony предложения и как этот стандарт кодирования отличается от psr2.

также, если мы не предоставляем --level опция вообще. Не считать --level=psr2 по умолчанию?

спасибо

3 ответов


теперь в 2017 году, начиная с версии 2, можно использовать describe команда.

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

он показывает вам текущие фиксаторы в наборе правил с именами и описанием:

enter image description here

поэтому для набора правил "Symfony" это будет выглядеть так:

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

и для одного правила, как:

vendor/bin/php-cs-fixer describe some_rule

уровень изменен на @Rule

и уведомления устарела. Используют его, как правило, только с @ префикс вместо.

если вы ищете более подробную информацию, см. связанный PR.


Как я вижу из этого документа https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/1.8/README.rst он выполняет этот список фильтров:

  • blankline_after_open_tag - убедиться в отсутствии кода на одной линии с открывающего тега PHP, и это следует blankline.
  • concat_without_spaces-конкатенация должна использоваться без пробелов.
  • double_arrow_multiline_whitespaces-Operator => не должен быть ограничен многострочным пробела.
  • duplicate_semicolon-удалить дублированные точки с запятой.
  • empty_return-оператор return, желающий ничего не возвращать, должен быть просто "return".
  • extra_empty_lines-удаляет дополнительные пустые строки.
  • include-Include и путь к файлу должны быть разделены одним пробелом. Путь к файлу не следует заключать в скобки.
  • join_function-функция Implode должна использоваться вместо функции join.
  • list_commas - Удалить конечные запятые в вызовах функции списка.
  • multiline_array_trailing_comma - PHP многострочные массивы должны иметь конечную запятую.
  • namespace_no_leading_whitespace-строка объявления пространства имен не должна содержать ведущие пробелы.
  • new_with_braces - все экземпляры, созданные с новым ключевым словом, должны сопровождаться фигурными скобками.
  • no_blank_lines_after_class_opening - после открытия класса не должно быть пустых строк распорка.
  • no_empty_lines_after_phpdocs - между docblock и документированным элементом не должно быть пустых строк.
  • object_operator-не должно быть места до или после объекта t_object_operator.
  • operators_spaces-двоичные операторы должны быть окружены хотя бы одним пробелом.
  • phpdoc_indent-Docblocks должны иметь тот же отступ, что и задокументированный субъект.
  • phpdoc_no_access - @Access аннотации должны быть исключено из phpdocs.
  • phpdoc_no_empty_return - @return void и @return null аннотации должны быть опущены из 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-Docblocks следует использовать только на структурных элементы.
  • phpdoc_trim-Phpdocs должен начинаться и заканчиваться содержимым, исключая самую первую и последнюю строку docblocks.
  • phpdoc_type_to_var - @type всегда должен быть записан как @var.
  • phpdoc_var_without_name - @VAR и @Type аннотации не должны содержать имя переменной.
  • remove_leading_slash_use-удалить ведущие косые черты в предложениях use.
  • remove_lines_between_uses - удаляет разрывы строк между использованием заявления.
  • return - пустой канал строки должен предшествовать оператору return.
  • self_accessor-внутри классного элемента "self" должно быть предпочтительнее самого имени класса.
  • single_array_no_trailing_comma - PHP однострочные массивы не должны иметь конечной запятой.
  • single_blank_line_before_namespace-перед объявлением пространства имен должна быть ровно одна пустая строка.
  • single_quote-конвертировать двойные кавычки в одинарные для простых струн.
  • spaces_before_semicolon-однострочные пробелы перед закрытием точки с запятой
  • spaces_cast-между cast и variable должно быть одно пространство.
  • standardize_not_equal-заменить все на !=.
  • ternary_spaces-стандартизация пространств вокруг тернарного оператора.
  • trim_array_spaces - массивы должны быть отформатированы как аргументы функции / метода, без ведущей или конечной одной строки пространство.
  • unalign_double_arrow-символы двойной стрелки Unalign.
  • unalign_equals-Unalign равно символам.
  • unary_operators_spaces-унарные операторы должны располагаться рядом с их операндами.
  • unused_use-неиспользуемые операторы use должны быть удалены.
  • whitespacy_lines-удалить конечные пробелы в конце пустых строк.

вот!--5-->хороший пост в блоге С помощью php-cs-fixer и вот это означает, что по умолчанию он использует psr2 фиксаторы если --level опция не предусмотрена.

но, если мы проходим --level=symfony явно он запускает некоторые "дополнительные" проверки, которые нацелены на Symfony и выходят за рамки PSR2

по умолчанию он запускает " все фиксаторы PSR-2 и некоторые дополнительные." Вы можно переключать уровень, который вы хотите запустить с флагом --level, который Я установите psr2 так, чтобы" дополнительные " проверки, которые являются целевыми в Symfony и идите выше и выше PSR2,не бросайте меня. (Он бежит весь стек по умолчанию, который называется уровнем "symfony" и включает такие вещи, как"выровнять знаки равенства в последующих строках").

и php-cs-fixer README на github предоставляет некоторую информацию о фильтрах, которые выполняются в PSR-0, PSR-1, PSR-2 и symfony.