Provavelmente, a melhor e mais fácil maneira de conseguir o que você procura é usar a ferramenta de análise de código incorporada com o Visual Studio para encontrar e levá-lo diretamente ao código morto e aos membros não utilizados.
Para esse efeito, criei um novo arquivo de conjunto de regras de análise de código (Via Arquivo-> Novo-> Arquivo , certificando -me de que Geral no painel esquerdo foi selecionado e rolando para baixo para encontrar o Conjunto de Regras de Análise de Código , dando a ele um nome de arquivo e, em seguida, procurando e selecionando as regras abaixo). Veja abaixo o conteúdo do arquivo do conjunto de regras que você pode copiar e cole em um novo arquivo com a extensão .ruleset a ser usada.
Dado um arquivo de conjunto de regras, é possível clicar com o botão direito do mouse em um arquivo de projeto no painel Gerenciador de Soluções e selecionar Propriedades . Nas janelas de propriedades do projeto, clique na guia Análise de Código no painel esquerdo e clique em Abrir para procurar o local do arquivo .ruleset. Se você acessar as propriedades de um arquivo de solução (em oposição a um arquivo de projeto), poderá definir o arquivo de análise de código para cada projeto na solução em um único local (em Configurações de Análise de Código e usando o menu suspenso para selecionar NOTA: Você deve ter navegado anteriormente até o arquivo do conjunto de regras para que ele apareça no menu suspenso nesta janela de propriedades).
Em seguida, basta executar a análise de código nos projetos / solução (Via Analisar-> Executar análise de código na solução -OR- Alt + F11 ) e ela retornará como avisos, quaisquer métodos não referenciados ou membros não utilizados encontrados. Ele até encontrará métodos referenciados por um método, que não possui referências em nenhum outro lugar.
No entanto, tenha cuidado, pois uma das maneiras pelas quais a análise de código para código morto pode orientá-lo errado é se a referência está "oculta", apenas chamando o método por meio de delegados e, é claro, de reflexão.
As regras para detectar código morto, especificamente, são:
- Métodos particulares que não são chamados de nenhum outro código (CA1811)
- Variáveis locais não usadas (CA1804)
- Campos particulares não utilizados (CA1823)
- Parâmetros não utilizados (CA1801)
- Classes internas que não são instanciadas por nenhum outro código (CA1812).
- Código inoperante no comutador limitado OR bit a bit (C6259)
Abaixo está o conteúdo do arquivo .ruleset que pode ser obtido seguindo as etapas acima, para sua conveniência. Você pode simplesmente copiar o XML abaixo, colá-lo no bloco de notas ++, salvar em algum lugar com a extensão .ruleset , procurar e usar conforme explicado acima:
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Dead Code Rules" Description=" " ToolsVersion="12.0">
<Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
<Rule Id="CA1801" Action="Warning" />
<Rule Id="CA1804" Action="Warning" />
<Rule Id="CA1811" Action="Warning" />
<Rule Id="CA1812" Action="Warning" />
<Rule Id="CA1823" Action="Warning" />
</Rules>
<Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
<Rule Id="C6259" Action="Warning" />
</Rules>
</RuleSet>