Обновить
0
Лавриненко Максим@mlavrinenko

Программист

Отправить сообщение

Разработчик jscpd уже сам его переписал на Rust: https://github.com/kucherenko/jscpd/tree/master/rust Crate: https://crates.io/crates/jscpd

Звучит как будто подключить на Битрикс проект phpstan экстремально просто, но если вы в коде используете, скажем, метод add наследника DataManager, то можете упасть с ошибкой от phpstan говорящей о том что он не знает этого DataManager. Потом окажется, что в ядре этот DataManager не настоящий, а class_alias'нутый. В итоге приходится через bootstrap-файл phpstan'а вызывать все эти alias'ы после classmap'инга всех нужных модулей.

Ещё одной большой болью является тот факт, что в ядре масса методов, phpdoc'кументация которых врёт. Вот прямо врёт - говорит что возвращает один тип, а по факту возвращает всегда другой. phpstan поддерживает stub-файлы. Ура? Нет.

Why is PHPStan complaining about “Class not found” in a stub file?

Stub files are analysed independently from the rest of your codebase. This means that any type they’re referencing must also be present as a stub, even if you don’t want to override any of its PHPDocs.

В редком случае можно разместить один файл в stub'ы и всё. В реальности, одно за другое целпяется и чуть ли не всё ядро надо описывать. Для решения этой проблемы можно воспользоваться php-stubs/generator, но там тоже начинают возникать проблемы одна за другой, в итоге так это и не поборол.

А что касается pre-commit хука, это только на первый взгляд кажется хорошей идеей. А вот если phpstan думает 5 минут, то становится как-то печально. К тому же, для многих типовой сценарий - коммитить через некий GUI, например в PhpStorm и там рассматривать большие полотна отчёта об ошибках не так уж и удобно.

Информация

В рейтинге
5 417-й
Зарегистрирован
Активность