
Легко найти неиспользованные элементы частного класса, потому что они не используются в самом классе. Но как насчет общественных методов/свойств/константов?
final class Book
{
public function getTitle(): string
{
// ...
}
- public function getSubtitle(): string
- {
- // ...
- }
}Как мы можем обнаружить неиспользованный общественный элемент?
Это именно то, что делает этот пакет.
Этот метод очень полезен для частных проектов и для обнаружения случайно использованного public модификатора, который следует изменить на private как называется только местно.
composer require tomasvotruba/unused-public --devПакет доступен для версии PHP 7.2+.
С установщиком расширения PHPSTAN все готово к запуску.
Включите каждый элемент самостоятельно с помощью простой конфигурации:
# phpstan.neon
parameters :
unused_public :
methods : true
properties : true
constants : trueУ вас есть сотни сообщенных публичных методов? У вас нет времени, чтобы проверить их все, но хотите постепенно справиться с ними?
Установите максимально допустимую конфигурацию %:
# phpstan.neon
parameters :
unused_public :
methods : 2.5Это означает, что максимум 2,5 % всех публичных методов разрешено как неиспользованное:
Вы хотите проверить вызовы методов только для локального, которые не должны быть удалены, но вместо этого быть превращены в private / protected ?
# phpstan.neon
parameters :
unused_public :
local_methods : true Некоторые методы используются только в шаблонах ветки или лезвия и могут сообщать о ложных положительности как неиспользованные.
{{ book. getTitle () }}Как мы можем их исключить? Добавьте свои каталоги шаблонов веток или лезвия в конфигурации, чтобы исключить методы имена:
# phpstan.neon
parameters :
unused_public :
template_paths :
- templates В некоторых случаях правила сообщают о ложных положительных моментах:
Поставщики с открытым исходным кодом проектируют общественный API для проектов. Элемент сообщается как неиспользованный, но на самом деле он предназначен для использования публики?
Отметьте класс или элемент с помощью аннотации @api , чтобы пропустить его:
final class Book
{
/**
* @api
*/
public function getName ()
{
return $ this -> name ;
}
}