Выпуск PHPStan 1.0, статического анализатора для кода на языке PHP
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
После шести лет разработки состоялся первый стабильный релиз статического анализатора 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
===========
Похожие новости
- Главная ссылка к новости (https://phpstan.org/blog/phpst...)
- OpenNews: Выпуск Psalm 3.12, статического анализатора для языка PHP
- OpenNews: Выпуск Snuffleupagus 0.5.1, модуля для блокирования уязвимостей в PHP-приложениях
- OpenNews: Разработчики PHP предложили P++, диалект со строгой типизацией
- OpenNews: Выпуск виртуальной машины HHVM 4.0 с прекращением поддержки PHP
- OpenNews: Отчёт о компрометации git-репозитория и базы пользователей проекта PHP
Похожие новости:
- Локальная root-уязвимость в PHP-FPM
- Уязвимость в PHP, позволяющая обойти ограничения, заданные в php.ini
- Facebook открыл код статического анализатора Mariana Trench
- [PHP, Программирование] Что нового в PHP 8.1 (перевод)
- [Системное администрирование, PHP, MySQL, Программирование, Cisco] Автоматический и автоматизированный способы блокировки ресурсов по поисковой выдаче
- [PHP, Go, Тестирование веб-сервисов, Kubernetes] Как мы делали инструмент для QA, а сделали для всего техотдела
- [Разработка веб-сайтов, PHP, Symfony, Yii, Laravel] Валидация в приложении на PHP (часть 1 — валидация доменного слоя)
- [PHP, Программирование] PHP 8: встроенное наблюдение (перевод)
- [PHP, Анализ и проектирование систем, SQL] Идеальный каталог, базовая библиотека
- [Laravel] Проверка тестов PHP API на соответствие определениям OpenAPI — пример Laravel
Теги для поиска: #_phpstan, #_static, #_php
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 05:24
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
После шести лет разработки состоялся первый стабильный релиз статического анализатора PHPStan 1.0, позволяющего находить ошибки в коде на языке PHP без его выполнения и использования unit-тестов. Код проекта написан на языке PHP и распространяется под лицензией MIT. Анализатор предоставляет 10 уровней проверки, в которых каждый последующий уровень расширяет возможности предыдущего и предоставляет более строгие проверки:
=========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 05:24
Часовой пояс: UTC + 5