2009-03-05 43 views
6

Obtuve una aplicación C# con Visual Studio 2005. El código tiene unos 300 KLOC, que se ha abusado durante 3 años.Limpiar el código no deseado C#

Cuando estaba pasando por el código descubrí esa cantidad de funciones/métodos/propiedades no utilizados. No es posible limpiar el código manualmente (Requiere comprobar cada miembro y si no se encuentran referencias eliminarlo.)

Estoy buscando automatizar este proceso, por VS macro, que recorrerá cada miembro en el código, si lo hace no tiene ninguna referencia, debe eliminarla, si encuentra alguna referencia, verifica las referencias de su miembro llamante si el miembro llamante no tiene ninguna referencia, debería eliminar ambas y así sucesivamente.

Estoy seguro de que alguien lo hubiera descifrado antes.

+1

Afortunadamente, la aplicación no usa métodos de reflexión para llamar. – kenny

Respuesta

13

Resharper tiene una función de Código Limpio y da una muy buena indicación de qué métodos/clases no se están utilizando.

+0

No estoy seguro si es automático o no ... pero Resharper indica si un método tiene alguna referencia. –

4

Puede consultar su base de código con NDepend usando CQL para averiguar qué métodos y clases no se están utilizando.

+0

NDepend lo ayudará aún más a comprender la base de código al proporcionarle información sobre la mayoría de los tipos utilizados, dependencias entre tipos, dependencias directas e indirectas, complejidad medida de tipos y métodos, etc. – flq

0

1er uso re-sharper como otros han sugerido.

Resharper asume que los métodos públicos se utilizan en algún lugar por un ensamblado externo, incluso si no lo son, así que busque y reemplace "público" con "privado".

4

Tenga cuidado con el código que se invoca a través de la reflexión. Muchas herramientas de refactorización marcarán este código como no accesible cuando en realidad lo son.

Lo más seguro es ejecutar las pruebas de su unidad (¿ya las tiene?) Antes y después de la refactorización para asegurarse de que todo sigue funcionando.

0

He usado Gendarme (como FxCop) para determinar qué código no se ha llamado. AFAIK no se puede automatizar, pero al menos no es necesario ir línea por línea.

Cuestiones relacionadas