Установите зависимости для разработки:
composer require --dev spaceonfire/easy-coding-standard-bridge symplify/easy-coding-standard symfony/var-exporter
Добавить скрипт в composer.json
{
"scripts": {
"codestyle": "@php -d xdebug.mode=off `which ecs` check --ansi"
}
}
Чтобы скопировать базовые конфиги для Easy Coding Standard и EditorConfig, выполните команду из директории репозитория.
vendor/bin/ecs-init.php
После этого у вас появятся файлы .editorconfig
и ecs.php
. Доработайте конфиг ecs.php
под нужды проекта, укажите
директории с кодом для анализа.
После инициализации конфига на действующем проекте ecs
найдет массу ошибок в кодовой базе, не все из которых он может
решить автоматически при использовании ключа --fix
. В этом случае можно просто принять все эти ошибки как "baseline"
и игнорировать их при анализе. Это позволяет упростить процесс внедрения инструмента и начать писать новый код применяя
стандарты.
Для создания "baseline" конфига необходимо сначала собрать ошибки в формате JSON:
vendor/bin/ecs check --output-format=json > ecs-baseline-errors.json
После этого запустить команду для генерации "baseline" конфига на основе полученного JSON файла:
vendor/bin/ecs-baseliner.php ecs-baseline-errors.json
Эта команда создаст файл ecs-baseline.php
в рабочей директории. Его необходимо подключить в файле ecs.php
(по-умолчанию он уже подключен в шаблоне). После чего можно проверить что ошибки игнорируются.
Если после этого ecs
снова найдет ошибки, повторите сбор ошибок в новый файл (например, ecs-baseline-errors.2.json
)
и повторите генерацию "baseline" конфига с указанием всех файлов ошибок. Повторите эти шаги, пока ecs
не перестанет
выводить ошибки.
vendor/bin/ecs-baseliner.php ecs-baseline-errors.json ecs-baseline-errors.2.json
После внедрения "baseline" конфига не забывайте при редактировании legacy кода убирать файлы из "baseline" конфига и исправлять ошибки, тем самым постепенно приводя кодовую базу проекта в соответствие стандартам.
Пример задания для запуска проверки кода в GitLab CI/CD:
stages:
- test
.in-docker-job:
tags:
- docker
image: alpine
.php-job:
extends: .in-docker-job
image: spaceonfire/nginx-php-fpm:latest-7.4
.composer-job:
extends: .php-job
before_script:
- composer install
cache:
key: composer
paths:
- vendor
- $COMPOSER_CACHE_DIR
variables:
COMPOSER_CACHE_DIR: "$CI_PROJECT_DIR/._composer-cache"
codestyle:
extends: .composer-job
stage: test
script:
- composer codestyle -- --no-progress-bar --no-interaction
При указании docker образа, в котором будет выполняться задание, вместо spaceonfire/nginx-php-fpm:latest-7.4
можно
указать тег с версией php для проекта (доступны 7.2
, 7.3
, 7.4
) либо другой образ с php
и composer
.
Please see CHANGELOG for more information on what has changed recently.
Report issues and send Pull Requests in the main spaceonfire repository. Please see CONTRIBUTING and CODE_OF_CONDUCT for details.
The MIT License (MIT). Please see License File for more information.