Hay una herramienta para encontrar los funciones (muertos, código obsoleto) en C# app?[cerrado]

StackOverflow https://stackoverflow.com/questions/65585

  •  09-06-2019
  •  | 
  •  

Pregunta

Quiero eliminar foo() si foo() no se llama desde cualquier lugar.

¿Fue útil?

Solución

El Gendarme detectará los métodos privados con ningún aguas arriba de las personas que llaman.Está disponible la plataforma de la cruz, y la última versión se encarga de "AvoidUncalledPrivateCodeRule".

FxCop detectará público/protegido métodos sin aguas arriba de las personas que llaman.Sin embargo, FxCop no detecta todos los métodos sin aguas arriba de los llamadores, como está destinado a comprobar en el caso de que su código es parte de una Biblioteca, de manera que el público y sus miembros se quedan fuera. Usted puede utilizar NDepend hacer una búsqueda por miembros del sector público con ninguna aguas arriba de los llamadores, que detallo aquí, en esta otra respuesta de StackOverflow.

(edición:añade información sobre el Gendarme que realmente hace lo que el interrogador le preguntó)

Otros consejos

NDepend también presentará un informe sobre las posibilidades de código no utilizado.

Tenga en cuenta que Resharper (y probablemente de otras herramientas similares, así como no destacar sin usar métodos de si los métodos son marcados public.No hay forma que un análisis estático del código de la herramienta será capaz de comprobar si los métodos de la asamblea son utilizados por otras asambleas fuera de su solución.Así que el primer paso en el deshierbe sin usar métodos para reducir su visibilidad a private o internal.

Sí, la MZ-Tools complemento tiene una revisión de código muerto característica.

Resharper hace esto, y no sólo con los métodos.También lo hace con el uso de instrucciones, variables, etcétera.

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

NDepend se propone escribir Regla de código de más de Consulta de LINQ (CQLinq).Alrededor de 200 código predeterminado de reglas se propone, 3 de ellos está dedicado a no utilizados/código muerto la detección de:

NDepend está integrado en Visual Studio, por lo tanto, estas reglas pueden ser revisar/navegado/editar a la derecha dentro de la IDE.La herramienta también puede ser integrado en su proceso de integración continua y se puede construir informes que mostrará las normas violadas y el culpable de elementos de código.

Si hace clic en estos 3 enlaces hacia el código fuente de estas reglas, usted verá que los relativos a los tipos y métodos son un poco complejas.Esto es debido a que detectar no sólo sin utilizar tipos y métodos, sino también los tipos y los métodos utilizados sólo por no utilizados muertos tipos y métodos (recursivo).

Este es análisis estático, de ahí el prefijo Potencialmente en la regla de los nombres.Si un elemento de código se utiliza sólo a través de la reflexión, estas reglas podría considerar como no utilizados que no es el caso.

Además de la utilización de estas 3 reglas, te aconsejo la medición de la cobertura de código por medio de pruebas y que se esfuerza por tener una cobertura total.A menudo, usted verá que el código que no puede ser cubierto por las pruebas, es en realidad no utilizados/muertos código que se puede desechar.Esto es especialmente útil en algoritmos complejos, donde no está claro si una rama de código es accesible o no.

Bueno, si VS no hacer esto de forma nativa, un método sencillo es hacer clic derecho sobre el método y seleccione "buscar todas las referencias" .Si sólo hay 1 referencia (donde se declara) lo más probable es que no se usa en ninguna otra parte.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top