Sé cómo encontrar referencias no utilizadas de un solo archivo haciendo clic derecho en el archivo y seleccionando la opción "Buscar usos". ¿Hay alguna manera de ver u obtener la lista de todas las clases o archivos no utilizados en mi proyecto?
Sé cómo encontrar referencias no utilizadas de un solo archivo haciendo clic derecho en el archivo y seleccionando la opción "Buscar usos". ¿Hay alguna manera de ver u obtener la lista de todas las clases o archivos no utilizados en mi proyecto?
Respuestas:
Primero habilite "Analizar errores en la solución" (haga clic con el botón derecho en el icono Resharper en la barra de estado).
Luego haga clic derecho en el nodo de la solución y seleccione "Buscar problemas de código". En la ventana de la herramienta "Resultados de la inspección" puede agrupar por "Tipo de problema" y buscar "El tipo o miembro de tipo nunca se usa" para obtener todas las clases no utilizadas (y muchos más símbolos no utilizados).
Una segunda opción (después de habilitar "Analizar errores en la solución") es ir a cualquier clase no utilizada, presionar Alt + Intro, seleccionar "Opciones para 'Tipo o tipo miembro ...' inspección" | Encuentre todos los problemas de código de este tipo | Solución completa
La solución de @ulrichc suena perfecta y funciona bien para proyectos pequeños a medianos en los que no está utilizando ningún marco de inyección de dependencias como Castle o Ninject, pero ¿qué sucede si está utilizando el contenedor DI [Castle, por ejemplo] y tiene algo como lo siguiente:
public class IoC
{
private WindsorContainer _container;
private IoC()
{
_container = new WindsorContainer();
}
public static void RegisterFromAssembly(Assembly assembly, string classEndsWith, LifeTime lifeTime)
{
var lifestyle = ConvertLifeStyleType(lifeTime);
_container.Register(AllTypes.FromAssembly(assembly)
.Where(type => type.Name.EndsWith(classEndsWith))
.WithService.AllInterfaces()
.Configure(c => c.LifeStyle.Is(lifestyle))
.WithService.FirstInterface());
}
}
Como puede ver, RegisterFromAssembly revisa todos los tipos dentro del ensamblaje y ciegamente [según el parámetro de métodos] los agrega al contenedor en tiempo de ejecución.
Necesitará algo como el complemento Agente Mulder que proporciona navegación para los tipos registrados o resueltos dentro de sus contenedores. Esto nuevamente podría funcionar visualmente [posiblemente en el tiempo de diseño] pero no estaría realmente seguro a menos que cada vez que elimine la clase no utilizada ejecute todas las pruebas dentro de su aplicación [cada capa posible] para estar 80% seguro de que está seguro. Moraleja de la historia: una clase puede sonar no utilizada para Resharper, pero puede resucitar cuando usas la inyección de dependencia.