
Es fácil encontrar elementos de clase privada no utilizadas, porque no se usan en la clase misma. Pero, ¿qué pasa con los métodos públicos/propiedades/constantes?
final class Book
{
public function getTitle(): string
{
// ...
}
- public function getSubtitle(): string
- {
- // ...
- }
}¿Cómo podemos detectar el elemento público no utilizado?
Eso es exactamente lo que hace este paquete.
Esta técnica es muy útil para proyectos privados y para detectar un modificador public utilizado accidentalmente que debe cambiarse a private como se llama solo localmente.
composer require tomasvotruba/unused-public --devEl paquete está disponible para la versión PHP 7.2+.
Con el instalador de extensión de Phpstan, todo está listo para ejecutarse.
Habilite cada elemento por su cuenta con configuración simple:
# phpstan.neon
parameters :
unused_public :
methods : true
properties : true
constants : true¿Tiene cientos de métodos públicos reportados? ¿No tienes tiempo para revisarlos a todos, pero quieres manejarlos gradualmente?
Establezca el máximo de configuración de % permitido en su lugar:
# phpstan.neon
parameters :
unused_public :
methods : 2.5Esto significa que el máximo 2.5 % de todos los métodos públicos están permitidos como no utilizados:
¿Desea verificar las llamadas de método de solo local que no deben eliminarse, sino que se convierte en private / protected ?
# phpstan.neon
parameters :
unused_public :
local_methods : true Algunos métodos se usan solo en plantillas de ramita o cuchilla, y podrían informarse falsas positivamente como no utilizadas.
{{ book. getTitle () }}¿Cómo podemos excluirlos? Agregue sus directorios de plantilla de twig o cuchilla en la configuración para excluir los nombres de los métodos:
# phpstan.neon
parameters :
unused_public :
template_paths :
- templates En algunos casos, las reglas informan falsos positivos:
Los proveedores de código abierto diseñan API pública para ser utilizado por proyectos. ¿El elemento se informa como no utilizado, pero en realidad está diseñado para ser utilizado público?
Marque la clase o elemento con la anotación @api para omitirla:
final class Book
{
/**
* @api
*/
public function getName ()
{
return $ this -> name ;
}
}