Symfony Finder исключить с глобусом

Я пытаюсь запустить PHP CS Fixer, который, по моему мнению, основан на Symfony (с которым я не знаком), и у меня возникла проблема с исключением некоторых путей.

Моя настройка ниже:

$finder = PhpCsFixer\Finder::create()
    ->in(__DIR__)
    ->exclude('lib/adodb')
    ->exclude('lib/bbcode')
    ->exclude('lib/joomla')
    ->exclude('lib/JSON')
    ->exclude('lib/pear')
    ->exclude('lib/phpass')
    ->exclude('lib/smarty')
    ->exclude('lib/smtp')
    ->exclude('modules/*/lib')  
    ->name('*.class')
    ->name('*.inc')
    ->name('*.php')
;

В основном я хотел бы исключить:

modules/ANYNAME/lib/ANYFILE
modules/ANYNAME/lib/ANYSUBDIR/ANYFILE

Но я считаю, что ->exclude('modules/*/lib') линия не ловит их. Например, modules/somemodule/lib/somefile.inc все еще обрабатывается.

Я думал, что это потому, что я имел ->name('*.inc') но это, кажется, происходит с или без этой линии.

Другое исключает работу отлично, кроме ->exclude('modules/*/lib') один.

Есть указатели?

** Исправление / Обновление **

Кажется, проблема в селекторе имен. Кажется, это не разрешено выбирать *.inc с помощью name например, а затем попытаться исключить те, которые найдены в modules/xyz/lib,

Преодоление этого решило бы мою проблему

1 ответ

Решение

PHP CS Fixer может принять любую итерацию в качестве поиска. Действительно, по умолчанию это просто symfony / finder ( https://github.com/symfony/finder/blob/master/Finder.php).

Как вы видете, exclude не принимает шар. Вы можете использовать, например, notPath:

$finder = PhpCsFixer\Finder::create()
    ->in(__DIR__)
    ->notPath('#modules/.*/lib#')
    ->name('*.inc');

Допустим, у вас есть следующая структура: $ ls -lR .: Всего 8 drwxr-xr-x 2 keradus keradus 4096 Mai 5 20:32 a drwxr-xr-x 3 keradus keradus 4096 Mai 5 20:31 модулей

./a:
total 4
-rw-r--r-- 1 keradus keradus 24 Mai  5 20:35 a.inc

./modules:
total 4
drwxr-xr-x 3 keradus keradus 4096 Mai  5 20:31 ANYNAME

./modules/ANYNAME:
total 4
drwxr-xr-x 3 keradus keradus 4096 Mai  5 20:31 lib

./modules/ANYNAME/lib:
total 8
-rw-r--r-- 1 keradus keradus   24 Mai  5 20:35 b.inc
drwxr-xr-x 2 keradus keradus 4096 Mai  5 20:32 sub

./modules/ANYNAME/lib/sub:
total 4
-rw-r--r-- 1 keradus keradus 24 Mai  5 20:35 c.inc

Даже если все эти 3 файла нарушают стандарты кодирования, только один (не исключенный искателем) будет исправлен:

$ php-cs-fixer fix --dry-run -vvv
Loaded config default from "/home/keradus/tmp/.php_cs.dist".
F
Legend: ?-unknown, I-invalid file syntax, file ignored, S-Skipped, .-no changes, F-fixed, E-error
   1) a/a.inc (braces)
Другие вопросы по тегам