Могу ли я указать стандарт CodeSniffer как зависимость для разработчика?

Скажем, у меня есть два или три проекта, и все они используют разные стандарты PHP CodeSniffer (на заказ).

Я хотел бы иметь возможность включать их как require-dev зависимости от Composer, так что при раскрутке репозитория проекта они будут установлены вместе с PHPUnit и другими моими требованиями разработчика.

В настоящее время у меня есть все стандарты на моей машине phpcs папка стандартов, и я говорю каждому проекту, какой стандарт использовать через phpcs.xml файл конфигурации в корне проекта.

Можно ли указать путь к стандарту, чтобы его можно было установить и использовать через composer?

3

Решение

Вы можете указать дополнительный путь для phpcs искать стандарты в использовании installed_paths установка. Вот пример phpcs.xml конфигурация:

<?xml verison="1.0"?>
<ruleset name="MyProject">
<description>My cool project, using a custom PHPCS standard</description>
<rule ref="MyCoolStandard" />
<config name="installed_paths" value="vendor/myvendorhere" />
</ruleset>

Тогда предположим, что ваш пользовательский стандарт PHPCS имеет такую ​​структуру файлов:

+ MyCoolStandard
- нюхает
- занятия
- MyClassSniff.php
- ruleset.xml

Вы можете добавить основной composer.json файл к нему и дать ему имя. Важной частью здесь является то, что вам нужно будет указать это для установки в путь, который соответствует стандартному названию — или проще просто Назовите пакет как ваш стандарт (примечание: должно совпадать ruleset.xml в стандартном случае, чехол включен):

{
"name": "myvendorhere/MyCoolStandard",
"description": "My cool PHPCS standard",
"require": {}
}

Теперь вы можете просто включить его в качестве хранилища VCS в свой проект:

# Project: composer.json
...
"repositories": [
{
"type": "vcs",
"url": "git@github.com:myvendorhere/myreponame.git"}
],
"require-dev": {
"myvendorhere/MyCoolStandard": "dev-master"}
...

TL; DR:

  • Использовать installed_paths Параметр конфигурации CodeSniffer, указывающий путь поставщика вашего композитора (вплоть до папки, названной в честь вашего стандарта) в качестве стандартного пути
  • В репозитории вашего стандарта назовите пакет composer после стандарта (с учетом регистра). Оно должно совпадать с именем, которое вы используете в своем ruleset.xml чтобы phpcs может найти его, в противном случае вы получите ошибки, говорящие, что это не может быть найдено.
  • Включите ваш пользовательский стандарт как репо VCS в конфиг композитора проекта (или лучше …!)
2

Другие решения

Других решений пока нет …