Продолжаю рассказывать о своих проектах. Сегодня — Laramago, пакет для проверки Laravel-кода с помощью Mago. Уже вышла версия 0.1.5. Расскажу, откуда он появился, что умеет и почему для версии 1.0 мне нужны десять реальных проектов.

Зачем я его делаю
Хочется замечать ошибки ещё во время разработки. Mago умеет проверять PHP-код, находить проблемы с типами и форматировать файлы. Но у Laravel много своей магии: свойства моделей, связи, цепочки запросов, контейнер зависимостей. То, что привычно разработчику, анализатору нужно объяснить.
Для этого я и делаю Laramago. Хочу, чтобы проверки понимали устройство моих Laravel-проектов и помогали разбирать настоящие ошибки.
Как он создавался
Начал с Laravel-пресета и подключения через Composer. В первом релизе 0.0.1 уже были настройки линтера, форматирования и начальная поддержка вызовов Eloquent.
Постепенно добавлял сведения о свойствах моделей, связях, scopes, построителях запросов, коллекциях и конфигурации. Сценарии проверяю через сам Mago; поведение также сравниваю с Larastan. Если особенности приложения определить не удалось, важно сохранить диагностику, а не объявить код правильным.
Что есть сейчас
Пакет уже доступен на Packagist и используется в одном реальном проекте. Основной анализ читает исходники без запуска Laravel и подключения к базе. Это помогает работать со свойствами и связями моделей, уточнять типы результатов запросов и проверять поддерживаемые конструкции фреймворка.
В 0.1.5 добавил необязательный сборщик сведений о схеме базы для выбранных моделей. Пока он работает только с SQLite в файле и включается отдельно, с выполнением кода приложения. Одновременно улучшил проверку актуальности метаданных и исправил предупреждения в коде пакета.
Это рабочий предрелиз: возможностей уже немало, но опыт на разных приложениях ещё предстоит набрать.
Почему до версии 1.0 ещё девять проектов
У меня простая схема версий. В 0.1.5 первая цифра 0 означает предрелиз, вторая 1 — число реальных проектов, где Laramago запущен, а третья 5 — патч-версию.
Когда Laramago заработает на десяти реальных проектах, выпущу 1.0. Для меня это будет основанием сказать: пакет проверен в работе на разных приложениях. Пока продолжаю подключать его к проектам, находить ограничения и исправлять их.
Описание и ссылки собрал на странице Laramago. Исходники — на GitHub, пакет — на Packagist. О следующих шагах буду писать под меткой Laramago.








