
É fácil encontrar elementos de classe privada não utilizados, porque eles não são usados na própria classe. Mas e os métodos/propriedades/propriedades públicas?
final class Book
{
public function getTitle(): string
{
// ...
}
- public function getSubtitle(): string
- {
- // ...
- }
}Como podemos detectar elemento público não utilizado?
É exatamente isso que este pacote faz.
Essa técnica é muito útil para projetos privados e para detectar acidentalmente o modificador public que deve ser alterado para private conforme chamado apenas localmente.
composer require tomasvotruba/unused-public --devO pacote está disponível para a versão Php 7.2+.
Com o instalador de extensão do Phpstan, tudo está pronto para ser executado.
Habilite cada item por conta própria com configuração simples:
# phpstan.neon
parameters :
unused_public :
methods : true
properties : true
constants : trueVocê tem centenas de método público relatado? Você não tem tempo para verificar todos eles, mas quer lidar com eles gradualmente?
Defina a configuração máxima permitida por %:
# phpstan.neon
parameters :
unused_public :
methods : 2.5Isso significa que no máximo 2,5 % de todos os métodos públicos é permitido como não utilizado:
Deseja verificar chamadas de método somente local que não devem ser removidas, mas que sejam transformadas em private / protected ?
# phpstan.neon
parameters :
unused_public :
local_methods : true Alguns métodos são usados apenas em modelos de galho ou lâmina e podem ser relatados falsos positivamente como não utilizados.
{{ book. getTitle () }}Como podemos excluí -los? Adicione seus diretórios de modelo de galho ou lâmina na configuração para excluir nomes de métodos:
# phpstan.neon
parameters :
unused_public :
template_paths :
- templates Em alguns casos, as regras relatam falsos positivos:
Os fornecedores de código aberto projetam a API pública a ser usada por projetos. O elemento é relatado como não utilizado, mas na verdade foi projetado para ser usado público?
Marque a classe ou elemento com a anotação @api para ignorá -la:
final class Book
{
/**
* @api
*/
public function getName ()
{
return $ this -> name ;
}
}