2010-03-23 39 views
12

Tengo un proyecto VS.NET 2008. ¿Es posible verificar las clases que no se usan en el proyecto? Con FXcop puedo encontrar las variables no utilizadas y el código no utilizado, pero no las clases no utilizadas.Buscar clases no utilizadas en un proyecto .net

+0

Tenga cuidado al eliminar clases. Todavía puede ser utilizado por código detrás de un preprocesador o utilizado por un proyecto que no está actualmente cargado. – Carra

Respuesta

8

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

Para elaborar un poco, NDepend propone escribir Code Rule over LINQ Query (CQLinq). Alrededor se proponen 200 default code rules, 3 de ellos está dedicado a código no utilizado/muertos detección

Básicamente tal regla para detectar método no utilizado, por ejemplo, se parece a:

// <Name>Dead Methods</Name> 
warnif count > 0 
from m in Application.Methods where !m.MethodsCallingMe.Any() 
select m 

NDepend rule to find unused methods (dead methods)

Pero esta regla es ingenuo y devolverá falsos positivos triviales. Hay muchas situaciones en las que un método nunca es llamado, sin embargo, no es utilizado (punto de entrada, constructor de la clase, finaliser ...) es por eso que las reglas predeterminadas 3 son más elaborados:

NDepend está integrado en Visual Studio, por lo tanto, estas reglas pueden ser checked/browsed/edited right inside the IDE. La herramienta también se puede integrar en su proceso de CI y puede compilar reports que mostrará 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 no solo detectan los tipos y métodos no utilizados, sino también los tipos y métodos utilizados solo por tipos y métodos muertos no utilizados (recursivo).

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

Además de utilizar estas 3 reglas, aconsejaría medir la cobertura del código mediante pruebas y esforzarse por tener una cobertura total. A menudo, verá que el código que no puede ser cubierto por las pruebas es en realidad 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.

3

Resharper (con solución para toda la comprobación de) que notifica automáticamente de las clases no utilizadas en su proyecto & solución

+0

No sé sobre la comprobación de toda la solución, gracias – Ivo

+0

Solo funciona desde> 4.5. – Carra

+1

¿hay alguna forma de ejecutar un "informe" para decirme qué clases de mi solución no están siendo utilizadas todas a la vez? – Alex

Cuestiones relacionadas