https://github.com/deprecated-packages/easy-coding-standard-prefixed
[READ-ONLY] Prefixed version of ECS to prevent install conflicts on older version
https://github.com/deprecated-packages/easy-coding-standard-prefixed
coding-standard ecs php-code-sniffer php-cs-fixer prefixed psr-12
Last synced: 7 months ago
JSON representation
[READ-ONLY] Prefixed version of ECS to prevent install conflicts on older version
- Host: GitHub
- URL: https://github.com/deprecated-packages/easy-coding-standard-prefixed
- Owner: deprecated-packages
- License: mit
- Created: 2020-01-09T21:59:57.000Z (about 6 years ago)
- Default Branch: main
- Last Pushed: 2021-05-07T09:45:23.000Z (almost 5 years ago)
- Last Synced: 2024-11-29T00:26:08.467Z (over 1 year ago)
- Topics: coding-standard, ecs, php-code-sniffer, php-cs-fixer, prefixed, psr-12
- Language: PHP
- Homepage: https://github.com/symplify/easy-coding-standard
- Size: 979 MB
- Stars: 4
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# The Easiest Way to Use Any Coding Standard
[](https://packagist.org/packages/symplify/easy-coding-standard/stats)

## Features
- Use [PHP_CodeSniffer || PHP-CS-Fixer](https://tomasvotruba.com/blog/2017/05/03/combine-power-of-php-code-sniffer-and-php-cs-fixer-in-3-lines/) - anything you like
- **2nd run under few seconds** with un-changed file cache
- Skipping files for specific checkers
- Prepared sets - PSR12, Symfony, Common, Array, Symplify and more...
- [Prefixed version](https://github.com/symplify/easy-coding-standard-prefixed) in case of conflicts on install
Are you already using another tool?
- [How to Migrate From PHP_CodeSniffer to EasyCodingStandard in 7 Steps](https://www.tomasvotruba.com/blog/2018/06/04/how-to-migrate-from-php-code-sniffer-to-easy-coding-standard/#comment-4086561141)
- [How to Migrate From PHP CS Fixer to EasyCodingStandard in 6 Steps](https://www.tomasvotruba.com/blog/2018/06/07/how-to-migrate-from-php-cs-fixer-to-easy-coding-standard/)
## Install
```bash
composer require symplify/easy-coding-standard --dev
```
### Prefixed Version
The prefix verion can be used when there are dependancy clashes. Head over to the
["Easy Coding Standard Prefixed" repository](https://github.com/symplify/easy-coding-standard-prefixed) for more information.
```bash
composer require symplify/easy-coding-standard-prefixed --dev
```
## Usage
### 1. Create Configuration and Setup Checkers
- Create an `ecs.php` in your root directory
- Add [Sniffs](https://github.com/squizlabs/PHP_CodeSniffer)
- ...or [Fixers](https://github.com/FriendsOfPHP/PHP-CS-Fixer) you'd love to use
```php
// ecs.php
use PhpCsFixer\Fixer\ArrayNotation\ArraySyntaxFixer;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symplify\EasyCodingStandard\ValueObject\Set\SetList;
return static function (ContainerConfigurator $containerConfigurator): void {
// A. standalone rule
$services = $containerConfigurator->services();
$services->set(ArraySyntaxFixer::class)
->call('configure', [[
'syntax' => 'short',
]]);
// B. full sets
$containerConfigurator->import(SetList::PSR_12);
};
```
### 2. Run in CLI
```bash
# dry
vendor/bin/ecs check src
# fix
vendor/bin/ecs check src --fix
```
## Features
How to load own config?
```bash
vendor/bin/ecs check src --config another-config.php
```
## Configuration
Configuration can be extended with many options. Here is list of them with example values and little description what are they for:
```php
use PhpCsFixer\Fixer\ArrayNotation\ArraySyntaxFixer;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symplify\EasyCodingStandard\ValueObject\Option;
return static function (ContainerConfigurator $containerConfigurator): void {
$parameters = $containerConfigurator->parameters();
// alternative to CLI arguments, easier to maintain and extend
$parameters->set(Option::PATHS, [__DIR__ . '/src', __DIR__ . '/tests']);
// run single rule only on specific path
$parameters->set(Option::ONLY, [
ArraySyntaxFixer::class => [__DIR__ . '/src/NewCode'],
]);
$parameters->set(Option::SKIP, [
// skip paths with legacy code
__DIR__ . '/packages/*/src/Legacy',
ArraySyntaxFixer::class => [
// path to file (you can copy this from error report)
__DIR__ . '/packages/EasyCodingStandard/packages/SniffRunner/src/File/File.php',
// or multiple files by path to match against "fnmatch()"
__DIR__ . '/packages/*/src/Command',
],
// skip rule completely
ArraySyntaxFixer::class,
// just single one part of the rule?
ArraySyntaxFixer::class . '.SomeSingleOption',
// ignore specific error message
'Cognitive complexity for method "addAction" is 13 but has to be less than or equal to 8.',
]);
// scan other file extendsions; [default: [php]]
$parameters->set(Option::FILE_EXTENSIONS, ['php', 'phpt']);
// configure cache paths & namespace - useful for Gitlab CI caching, where getcwd() produces always different path
// [default: sys_get_temp_dir() . '/_changed_files_detector_tests']
$parameters->set(Option::CACHE_DIRECTORY, '.ecs_cache');
// [default: \Nette\Utils\Strings::webalize(getcwd())']
$parameters->set(Option::CACHE_NAMESPACE, 'my_project_namespace');
// indent and tabs/spaces
// [default: spaces]
$parameters->set(Option::INDENTATION, 'tab');
// [default: PHP_EOL]; other options: "\n"
$parameters->set(Option::LINE_ENDING, "\r\n");
};
```
## Codings Standards in Markdown

How to correct PHP snippets in Markdown files?
```bash
vendor/bin/ecs check-markdown README.md
vendor/bin/ecs check-markdown README.md docs/rules.md
# to fix them, add --fix
vendor/bin/ecs check-markdown README.md docs/rules.md --fix
```
Do you have already paths defined in `ecs.php` config? Drop them from CLI and let ECS use those:
```bash
vendor/bin/ecs check-markdown --fix
```
## FAQ
### How can I see all loaded checkers?
```bash
vendor/bin/ecs show
vendor/bin/ecs show --config ...
```
### How do I clear cache?
```bash
vendor/bin/ecs check src --clear-cache
```
### Run on Git Diff Changed Files Only
Execution can be limited to changed files using the `process` option `--match-git-diff`:
```bash
vendor/bin/ecs check src --match-git-diff
```
This option will filter the files included by the configuration, creating an intersection with the files listed in `git diff`.
## Your IDE Integration
### PHPStorm
ECS can be used as an External Tool

Go to `Preferences` > `Tools` > `External Tools` and click `+` to add a new tool.
- Name: `ecs` (Can be any value)
- Description: `easyCodingStandard` (Can be any value)
- Program: `$ProjectFileDir$/vendor/bin/ecs` (Path to `ecs` executable; On Windows path separators must be a `\`)
- Parameters: `check $FilePathRelativeToProjectRoot$` (append `--fix` to auto-fix)
- Working directory: `$ProjectFileDir$`
Press `Cmd/Ctrl` + `Shift` + `A` (Find Action), search for `ecs`, and then hit Enter. It will run `ecs` for the current file.
To run `ecs` on a directory, right click on a folder in the project browser go to external tools and select `ecs`.
You can also create a keyboard shortcut in [Preferences > Keymap](https://www.jetbrains.com/help/webstorm/configuring-keyboard-and-mouse-shortcuts.html) to run `ecs`.
### Visual Studio Code
[EasyCodingStandard for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=azdanov.vscode-easy-coding-standard) extension adds support for running EasyCodingStandard inside the editor.
## Tool Integration
| Tool | Extension | Description |
| ---- | --------- | ----------- |
| [GrumPHP](https://github.com/phpro/grumphp) | [ECS Task](https://github.com/phpro/grumphp/blob/master/doc/tasks/ecs.md) | Provides a new task for GrumPHP which runs ECS |
## Report Issues
In case you are experiencing a bug or want to request a new feature head over to the [Symplify monorepo issue tracker](https://github.com/symplify/symplify/issues)
## Contribute
The sources of this package are contained in the Symplify monorepo. We welcome contributions for this package on [symplify/symplify](https://github.com/symplify/symplify).