Determinar métodos e propriedades não utilizados
-
20-09-2019 - |
Pergunta
Eu tenho uma solução independente (nenhuma das DLLs é usada em qualquer outro projeto, então não se preocupe com métodos sendo usados em outro lugar).
Estou tentando descobrir uma maneira de determinar cada método/propriedade que não está em uso.
Portanto, não posso apenas olhar para métodos/propriedades privadas, preciso também verificar métodos e propriedades públicas.
Eu usei um programa no passado que fazia isso, mas apenas para Métodos/Propriedades Privadas (coisas que ele garante não foram usadas por outro projeto).Mesmo que eu conseguisse lembrar o que era, não atendia às minhas necessidades.
Examinei o nDepend, mas não tenho certeza se isso é algo padrão no aplicativo ou se precisarei escrever uma instrução CQL personalizada para ele.
Alguém conhece um aplicativo que faz isso, ou se o nDepend puder fazer isso, quão difícil seria fazer isso no nDepend?
Solução
O Resharper pode fornecer esse tipo de informação se você ativar análise ampla da solução.
Outras dicas
Sim - eu diria que o NDepend é a ferramenta preferida para esse tipo de análise de dependência.
Ele vem com muitas consultas CQL predefinidas para fazer exatamente esse tipo de coisa, e é muito simples escrever as suas próprias, com base nas existentes como modelos.
Na forma mais simples, uma consulta CQL para detectar métodos não utilizados pode ser assim:
SELECT
METHODS // Get me a list of methods
WHERE
MethodCa == 0 // Where their afferent coupling is zero, (afferent coupling being the number of other methods that call it)
Este é apenas um exemplo para mostrar a aparência do CQL.Uma consulta mais avançada para encontrar métodos não utilizados é fornecida com NDepend.
Ver Blog de Patrick Smacchia para mais informações.
No geral, outras ferramentas (FxCop e Resharper) também podem ajudar nisso, mas esse tipo de análise de dependência é a razão de ser do NDepend.
Code Analysis (FxCop) também pode localizar métodos e propriedades não utilizados.Ele irá gerar avisos no sentido de "nenhum chamador upstream usa isso, considere removê-lo"
Isso está integrado ao Visual Studio 2010 Ultimate.Eu uso-o.