Nette Documentation Preview

syntax
Nette Coding Standard
*********************

.[perex]
[Coding Standard |https://github.com/nette/coding-standard] автоматически форматирует ваш PHP-код по [стандарту кодирования Nette |contributing:coding-standard]: от отступов и скобок до пробелов и порядка импортов.

Под капотом он сочетает два общепринятых инструмента, PHP CS Fixer и PHP CodeSniffer, которые идут уже настроенными, так что настраивать что-либо самому не нужно.


Установка
=========

Установите инструмент глобально через Composer:

```shell
composer global require nette/coding-standard
```

и убедитесь, что глобальный каталог с бинарниками vendor находится [в переменной окружения `$PATH`|https://getcomposer.org/doc/03-cli.md#global].


Использование
=============

У инструмента две команды. Команда `check` только сообщает о нарушениях, а `fix` исправляет их автоматически:

```shell
ecs check
ecs fix
```

Без аргументов он просматривает каталоги `src/` и `tests/`; можно передать и один или несколько собственных путей, например `ecs check app bin`.

Прежде чем запускать исправление в первый раз, обязательно сделайте резервную копию файлов.


Версия PHP
==========

Инструмент поддерживает PHP от 8.0 до 8.5 и применяет правила постепенно, в зависимости от версии. Версию он определяет автоматически из `composer.json` вашего проекта, но её можно задать и явно параметром `--preset`:

```shell
ecs check --preset php81
```


Собственные правила
===================

Правила можно подстроить под свой проект. Чтобы изменить правила PHP CS Fixer, создайте в корне проекта файл `ncs.php`:

```php
<?php
return [
	'strict_comparison' => false,
];
```

Чтобы изменить правила PHP CodeSniffer, создайте файл `ncs.xml`. Ссылаться на пресет версии в нём не нужно (он подмешивается автоматически), а через `$presets/` можно подтянуть любой встроенный пресет:

```xml
<?xml version="1.0"?>
<ruleset name="MyProject">
	<!-- включаем импорты use function/const -->
	<rule ref="$presets/optimize-fn.xml"/>

	<!-- отключаем правило -->
	<exclude name="SlevomatCodingStandard.TypeHints.ReturnTypeHint"/>
</ruleset>
```

Оба файла находятся автоматически, и ваши правила имеют приоритет над пресетом. Для разового переопределения, которое вы не хотите коммитить, передайте дополнительный файл через `--config-file` (`.php` для fixer, `.xml` для sniffer).


Непрерывная интеграция
======================

В конвейере CI установите инструмент как проект и запускайте его оттуда:

```yaml
- run: composer create-project nette/coding-standard temp/coding-standard
- run: php temp/coding-standard/ecs check
```

Nette Coding Standard

Coding Standard автоматически форматирует ваш PHP-код по стандарту кодирования Nette: от отступов и скобок до пробелов и порядка импортов.

Под капотом он сочетает два общепринятых инструмента, PHP CS Fixer и PHP CodeSniffer, которые идут уже настроенными, так что настраивать что-либо самому не нужно.

Установка

Установите инструмент глобально через Composer:

composer global require nette/coding-standard

и убедитесь, что глобальный каталог с бинарниками vendor находится в переменной окружения $PATH.

Использование

У инструмента две команды. Команда check только сообщает о нарушениях, а fix исправляет их автоматически:

ecs check
ecs fix

Без аргументов он просматривает каталоги src/ и tests/; можно передать и один или несколько собственных путей, например ecs check app bin.

Прежде чем запускать исправление в первый раз, обязательно сделайте резервную копию файлов.

Версия PHP

Инструмент поддерживает PHP от 8.0 до 8.5 и применяет правила постепенно, в зависимости от версии. Версию он определяет автоматически из composer.json вашего проекта, но её можно задать и явно параметром --preset:

ecs check --preset php81

Собственные правила

Правила можно подстроить под свой проект. Чтобы изменить правила PHP CS Fixer, создайте в корне проекта файл ncs.php:

<?php
return [
	'strict_comparison' => false,
];

Чтобы изменить правила PHP CodeSniffer, создайте файл ncs.xml. Ссылаться на пресет версии в нём не нужно (он подмешивается автоматически), а через $presets/ можно подтянуть любой встроенный пресет:

<?xml version="1.0"?>
<ruleset name="MyProject">
	<!-- включаем импорты use function/const -->
	<rule ref="$presets/optimize-fn.xml"/>

	<!-- отключаем правило -->
	<exclude name="SlevomatCodingStandard.TypeHints.ReturnTypeHint"/>
</ruleset>

Оба файла находятся автоматически, и ваши правила имеют приоритет над пресетом. Для разового переопределения, которое вы не хотите коммитить, передайте дополнительный файл через --config-file (.php для fixer, .xml для sniffer).

Непрерывная интеграция

В конвейере CI установите инструмент как проект и запускайте его оттуда:

- run: composer create-project nette/coding-standard temp/coding-standard
- run: php temp/coding-standard/ecs check