PHPStan 2.0
Сегодня была выпущена вторая мажорная версия PHPStan — популярного статического анализатора кода для PHP, который помогает находить ошибки до выполнения, проверяя типы данных и структуру.
Первая версия была выпущена чуть больше трех лет назад, и теперь, с выходом второй мажорной версии, нас ожидают новые возможности и улучшения 🚀
Уровень 10
Ранее последним уровнем быть 9-й который проверял только явное использование типа mixed
, но пропускал случаи, когда тип данных не указан вообще. Новый уровень исправляет это, проверяя также неявно типизированные значения.
Новый тип "list"
Для более точной работы с массивами теперь можно указывать новый тип данных — list
. Это массив с целочисленными ключами, начиная с 0, без пропусков. Пример:
/** @param list<int> $listOfIntegers */
public function doFoo(array $listOfIntegers): void
{
}
Эффективное использования памяти и улучшенная скорость
Свежая версия теперь использует на 50–70% меньше памяти при анализе крупных проектов, что значительно улучшает производительность, особенно в условиях CI.
Проверка PHPDoc тегов @var
Улучшили проверку типов, указанных в комментариях @var
. Это помогает избежать ситуаций, когда тип в комментарии не совпадает с фактическим типом переменной в коде.
Пример:
/** @var string|null $a */
$a = doFoo();
// PHPStan сообщит, что тип string|null не совпадает с типом string в реальной переменной.
Аннотация @phpstan-pure
для чистых функций
Для чистых функций теперь доступна аннотация @phpstan-pure
. Она указывает, что функция должна всегда возвращать одно и то же значение при одинаковых входных данных и не должна иметь побочных эффектов.
Оптимизация кеширования
В версии 2.0 улучшена работа с кешем — старые элементы теперь удаляются 😊 и, как результат, экономится дисковое пространство!
Заметки о выпуске впечатляют — более 180 изменений! 😲 Так что если вы не фанат Psalm (его конкурента), переходите по ссылке на инструкцию по обновлению для подробностей 😊