Обложка канала

Программирование {BookFlow}

17344 @bookflow

Программирование {BookFlow} Публикуют лекции и книги по программированию, видеоуроки, доклады с IT конференций.

Программирование {BookFlow}

4 года назад
Открыть в
Как использовать Psalm на легаси проекте Если вы задумались о необходимости использования Psalm'а на большом легаси проекте, вам нужно подумать, что делать с текущими ошибками, которых наверняка может быть больше тысячи. Править их все сразу — это мог быть правильный вариант, если не был бы таким утомительным и долгим. Глобально подавлять ошибки — это однозначно плохой способ, так как повлияет и на новый код. Конфиг Можно воспользоваться конфигом псалма и заигнорировать те директории, где расположен старый код. Однако в таком варианте необходимо, чтобы старый код был однозначно локализован. Такое возможно при наличии некоего подобия модулей, чем может похвастаться далеко не каждый легаси проект. <psalm> .... <projectFiles> <directory name="src"/> <ignoreFiles> <directory name="src/Module1"/> <directory name="src/Module2"/> <directory name="src/Module3"/> </ignoreFiles> </projectFiles> .... </psalm> Этот способ имеет ещё один недостаток: наверняка вы до сих пор что-то правите в этих модулях, и тогда ваш новый код в старых модулях тоже не будет проанализирован псалмом. Но вы же не этого добивались? psalm-baseline У псалма есть решение для таких случаев — baseline. Данный способ найдёт и сохранит все текущие ошибки в конкретный xml файл и будет их игнорировать при анализе. Также вам не придётся игнорировать директории и глобально подавлять ошибки. Зато новый код в любых директориях — новых и старых — будет успешно проанализирован псалмом. Чтобы настроить baseline, вам необходимо выполнить следующую команду в вашем проекте: ./vendor/bin/psalm --set-baseline=psalm-baseline.xml У вас в проекте появится psalm-baseline.xml файл, который необходимо закоммитить. Теперь вы сможете спокойно использовать psalm в CI. Только не забывайте в свободное время править ошибки в старых модулях. Когда вы поправите часть из них, обновите baseline: ./vendor/bin/psalm --update-baseline И так до тех пор, пока вы не избавитесь от всех ошибок, либо не удалите модули, заменив их новыми. 👉 @php_lib