2011-11-29 10 views
8

Tenemos un proyecto de sitio web ASP.NET de más de 10 años de antigüedad, con muchas páginas y controles de usuarios no utilizados/heredados.Identificación de clases/controles/páginas no utilizados

¿Existe alguna herramienta que pueda ayudar en el proceso de identificación de estos elementos de la solución, por lo que podríamos refactorizarlos?

Sé que el problema es complicado porque no se hace referencia a todos los tipos como tipos que un compilador/herramienta podría reconocer. p.ej. objetos instanciados por reflexión se instancian usando una cadena que representa el nombre de la clase. Además, las páginas asp.net generalmente no se referencian como tipos, sino como cadenas de identificador de página en marcado.

todavía parece como si alguien hubiera creado una herramienta que se encarga de estos casos y crea una lista de candidatos sin usar clases/pages/usuario controla

+1

¿qué pasa con el uso de resharper? Encontrará métodos no utilizados en la página .cs también ... –

+0

Resharper es bueno para encontrar métodos no utilizados, pero no para identificar páginas y controles que no se utilizan. –

Respuesta

2

Usted puede utilizar esta expresión regular para encontrar los controles registrados no utilizados

<%@\s*Register\s+TagPrefix\s*=\s*"(?<tagprefix>[^"]+)"\s+TagName\s*=\s*"(?<tagname>[^"]+)"\s+Src\s*=\s*"[^"]+"\s*%>(?!.*?\k<tagprefix>:\k<tagname>\s+) 

Solía ​​powergrep para ejecutar esta expresión regular. La casilla "Dot coincide con la nueva línea" debe estar habilitada para funcionar correctamente.

+0

Parece interesante. ¿Puedes describir lo que hace? –

+0

Claro. La primera parte busca la plantilla de registro de controles <% @ Register TagPrefix = "Myprefix" TagName = "Mytag" Src = "~/mypath.ascx"%> y recopila tagprefix tagname en los grupos nombrados ** (? blabla>) * *. La segunda parte de regex usa lookahead negativo ** (?! blabla) ** Para que podamos leer esta expresión regular como: encuentre todos los controles de registro que no se usen más adelante en el texto. Nuestro proyecto también tiene más de 10 años :) – vicneanschi

+0

Utilicé SublimeText para ejecutar esto. Tuve que agregar una bandera en línea al comienzo de la expresión regular para alinear líneas nuevas con puntos: '(? S)'. Consulte http://stackoverflow.com/questions/11992596/regex-in-sublime-text-match-any-character-including-newlines –

2

ReSharper es una herramienta de refactorización que podría ayudar a identificar nubes de clases no utilizadas y métodos. También puede eliminarlos de forma segura. Le permite eliminar un método o clase y ajustar todos sus usos. Ver: Safe delete

También tiene soporte apropiado de ASP.NET. Ve: ASP.NET support

+0

Gracias: ya usamos Resharper, pero no creo que pueda identificar páginas y controles de usuario no utilizados. –

+0

¿Ha probado la funcionalidad [find usages] (http://www.jetbrains.com/resharper/webhelp/Navigation_and_Search__Finding_Usages.html). Estoy seguro de que puede usarlo para encontrar al menos controles de usuario no utilizados. –

+0

sí - esto está bien para espacios de nombres individuales, y métodos, tipos de forma manual caso por caso, pero estoy esperando encontrar una herramienta que pueda generar un informe de solución amplia –

Cuestiones relacionadas