sharp ¿Hay alguna herramienta para encontrar funciones sin referencias(código obsoleto muerto) en una aplicación C#?




summary c sharp (6)

NDepend también informará sobre el código potencialmente no utilizado.

Quiero eliminar foo () si no se llama a foo () desde ningún lugar.


Sí, el complemento MZ-Tools tiene una función de revisión del código inactivo.


Tenga en cuenta que Resharper (y probablemente otras herramientas similares también) no resaltará los métodos no utilizados si los métodos están marcados como public . No hay forma de que una herramienta de análisis de código estático pueda verificar si los métodos de su ensamblaje son utilizados por otros ensambles fuera de su solución. Por lo tanto, el primer paso para eliminar los métodos no utilizados es reducir su visibilidad a private o internal .


La herramienta NDepend puede ayudar a encontrar el código no utilizado en una base de código .NET. Descargo de responsabilidad: soy uno de los desarrolladores de esta herramienta.

NDepend propone escribir Code Rule sobre LINQ Query (CQLinq) . Se proponen alrededor de 200 reglas de código predeterminadas , 3 de las cuales están dedicadas a la detección de código inactivo / no utilizado :

NDepend está integrado en Visual Studio, por lo tanto, estas reglas se pueden verificar / examinar / editar directamente dentro del IDE . La herramienta también puede integrarse en su proceso de CI y puede generar informes que mostrarán las reglas violadas y los elementos del código culpable.

Si hace clic en estos 3 enlaces hacia el código fuente de estas reglas, verá que las relativas a los tipos y métodos son un poco complejas. Esto se debe a que detectan no solo los tipos y métodos no utilizados, sino también los tipos y métodos utilizados solo por métodos y tipos muertos no utilizados (recursivo).

Este es un análisis estático , de ahí el prefijo Potencialmente en los nombres de las reglas. Si un elemento de código se usa solo a través de la reflexión, estas reglas podrían considerarlo como no utilizado, que no es el caso.

Además de usar estas 3 reglas, recomendaría medir la cobertura del código mediante pruebas y esforzarme por tener una cobertura completa. A menudo, verá que el código que no puede ser cubierto por las pruebas, en realidad es código no utilizado / muerto que puede descartarse de manera segura. Esto es especialmente útil en algoritmos complejos donde no está claro si una rama de código es alcanzable o no.


Bueno, si VS no hace esto de forma nativa, un método simple es hacer clic derecho en el método y seleccionar "buscar todas las referencias". Si solo hay 1 referencia (donde se declara), lo más probable es que no se use en ningún otro lado.


Resharper hace esto, y no solo con métodos. También lo hace con el uso de declaraciones, variables, etcétera.





code-analysis