Nette Documentation Preview

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

.[perex]
[Coding Standard |https://github.com/nette/coding-standard]は、PHP のコードを [Nette のコーディング標準 |contributing:coding-standard]に沿って自動的に整えます。字下げや波かっこから、空白の入れ方や import の並び順までです。

内側では業界の標準の道具である PHP CS Fixer と PHP CodeSniffer を組み合わせていて、あらかじめ設定されているので、自分で何かを用意する必要はありません。


インストール
======

Composer でこの道具を全体に入れます。

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

そして全体の vendor の実行ファイルのディレクトリが [`$PATH` の環境変数に入っている|https://getcomposer.org/doc/03-cli.md#global]ことを確かめてください。


使い方
===

この道具には 2 つのコマンドがあります。`check` のコマンドは違反を知らせるだけで、`fix` はそれを自動的に直します。

```shell
ecs check
ecs fix
```

引数なしなら `src/` と `tests/` のディレクトリを調べます。自分のパスをひとつ以上渡すこともできます。たとえば `ecs check app bin` です。

はじめて fixer を走らせる前に、必ずファイルの控えを取ってください。


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 の import を有効にします -->
	<rule ref="$presets/optimize-fn.xml"/>

	<!-- 決まりをひとつ無効にします -->
	<exclude name="SlevomatCodingStandard.TypeHints.ReturnTypeHint"/>
</ruleset>
```

どちらのファイルも自動的に見つけられ、あなたの決まりがプリセットより優先されます。コミットしたくない一度きりの上書きには、`--config-file` で追加のファイルを渡します(fixer には `.php`、sniffer には `.xml`)。


継続的インテグレーション
============

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 のコーディング標準に沿って自動的に整えます。字下げや波かっこから、空白の入れ方や import の並び順までです。

内側では業界の標準の道具である PHP CS Fixer と PHP CodeSniffer を組み合わせていて、あらかじめ設定されているので、自分で何かを用意する必要はありません。

インストール

Composer でこの道具を全体に入れます。

composer global require nette/coding-standard

そして全体の vendor の実行ファイルのディレクトリが $PATH の環境変数に入っていることを確かめてください。

使い方

この道具には 2 つのコマンドがあります。check のコマンドは違反を知らせるだけで、fix はそれを自動的に直します。

ecs check
ecs fix

引数なしなら src/tests/ のディレクトリを調べます。自分のパスをひとつ以上渡すこともできます。たとえば ecs check app bin です。

はじめて fixer を走らせる前に、必ずファイルの控えを取ってください。

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 の import を有効にします -->
	<rule ref="$presets/optimize-fn.xml"/>

	<!-- 決まりをひとつ無効にします -->
	<exclude name="SlevomatCodingStandard.TypeHints.ReturnTypeHint"/>
</ruleset>

どちらのファイルも自動的に見つけられ、あなたの決まりがプリセットより優先されます。コミットしたくない一度きりの上書きには、--config-file で追加のファイルを渡します(fixer には .php、sniffer には .xml)。

継続的インテグレーション

CI の流れでは、この道具をプロジェクトとして入れてそこから走らせます。

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