Выпуск PHPStan 1.0, статического анализатора для кода на языке PHP

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
02-Ноя-2021 15:30

После шести лет разработки состоялся первый стабильный релиз статического анализатора PHPStan 1.0, позволяющего находить ошибки в коде на языке PHP без его выполнения и использования unit-тестов. Код проекта написан на языке PHP и распространяется под лицензией MIT.
Анализатор предоставляет 10 уровней проверки, в которых каждый последующий уровень расширяет возможности предыдущего и предоставляет более строгие проверки:
  • Базовые проверки, определение неизвестных классов, функций и методов ($this), неопределённых переменных, а также передачи неверного числа аргументов.
  • Выявление вероятно неопределённых переменных, неизвестных magic-методов и свойств классов с __call и __get.
  • Выявление неизвестных методов во всех выражениях, не ограничиваясь
    вызовом через $this. Проверка PHPDocs.
  • Проверка возвращаемых типов и назначения типов свойствам.
  • Базовое выявление "мёртвого" (никогда не вызываемого) кода. Выявление вызовов instanceof всегда возвращающих значение false, никогда не срабатывающих блоков "else" и кода, находящегося после return.
  • Проверка типов аргументов, передаваемых в методы и функции.
  • Предупреждение об отсутствии аннотаций с информацией о типах.
  • Предупреждение о некорректных union-типах, определяющих коллекции из двух и более типов.
  • Предупреждение о вызове методов и доступе к свойствам с типами "nullable".
  • Проверка использования типа "mixed".
Примеры выявляемых базовых проблем:
  • Существование классов, используемых в instanceof, catch, typehints и других языковых конструкциях.
  • Существование и доступность вызываемых методов и функций, а также числа передаваемых аргументов.
  • Проверка возвращения методом данных с тем же типом, что определён в выражении return.
  • Существование и видимость свойств, к которым выполняется обращение, а также проверка объявленных и фактических типов данных, используемых в свойствах.
  • Корректность числа параметров, переданных в вызовы sprintf/printf в блоке форматирования строк.
  • Существование переменных с учётом блоков, формируемых операторами ветвления и циклами.
  • Бесполезные приведения типов (например, "(string) ‘foo’") и строгие проверки ("===" и "!==") данных с разными типами и операндами, всегда возвращающими значение false.
Ключевые новшества PHPStan 1.0:
  • Реализован уровень проверки "9", осуществляющий проверки использования типа "mixed", предназначенного для организации приёма функцией параметров с разными типами. Девятый уровень выявляет небезопасные приёмы использования "mixed", такие как передача значений с типом "mixed" другому типу, вызов методов с типом "mixed" и обращение к его свойствам, так как они могут не существовать.
  • Управление проверкой идентичности возвращаемых значений для одинаковых вызовов функций с использованием аннотаций @phpstan-pure и @phpstan-impure.
  • Анализ типов в конструкциях try-catch-finally с использованием аннотаций @throws.
  • Выявление определённых, но неиспользуемых внутренних (private) свойств, методов и констант.
  • Передача несовместимых callback-вызовов в функции работы с массивами, такие как array_map и usort.
  • Инспектирование типов для отсутствующих typehint-аннотаций.
  • Обеспечена совместимость описаний типов с PHPDocs, что позволяет использовать в PHPDocs типы из сообщений об ошибках.

===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_phpstan, #_static, #_php
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 21-Ноя 23:14
Часовой пояс: UTC + 5