¿Existe alguna herramienta de análisis de código estático de código abierto que pueda ayudar a encontrar el código inalcanzable/no utilizado en los programas de C#?Herramienta de código abierto para encontrar el código de C# inalcanzable/no utilizado
Respuesta
FxCop, que está integrado en ediciones superiores de Visual Studio, advertirá sobre los miembros privados o internos no utilizados. Haga clic derecho en su proyecto y elija Ejecutar análisis de código. Junto con los "segmentos de código inalcanzables" identificados por el compilador como han señalado otros, esto debería capturar el código restante no utilizado.
(Nota FxCop se no advierten de los miembros del público o protegido no utilizados, ya que estos podrían ser parte de una API para su uso por personas externas. Además, FxCop no está disponible en todas las ediciones de Visual Studio aunque las versiones más antiguas son disponible para descargar).
FxCop está disponible por separado de VS, aunque de forma gratuita, por lo que yo sé (sé que está disponible por separado, es la parte libre de la que no estoy seguro). –
Sí, por separado y gratis. – Cheeso
Lo mejor que puedo sugerir es una herramienta de cobertura de código utilizada en el ejecutable principal en lugar de un ensamblaje de prueba, luego coloque la aplicación a través de sus pasos ... Un análisis estático de código sería NP difícil de hacer en un poco más esotérico casos.
Es mucho peor que NP-HARD. Un análisis estático exacto de la cobertura del código es prácticamente * por definición * el problema de detención. Claramente, la pregunta "¿alguna vez se ejecuta esta línea de código?" Es equivalente a "¿este programa se detiene alguna vez?" (Simplemente reemplace cada parada en el programa con un ciclo infinito, y la línea en cuestión con un alto, y luego ejecute su detector de detención.) El problema de detención no es NP-HARD; es indecible. –
@Eric: Dejé de mencionar The Halting Problem, porque aunque sonaba correcto para mí, no estaba muy seguro de que fuera aplicable en este caso. –
Aunque no es una herramienta de código abierto, puede usar R# (Resharper). es un complemento de estudio visual que puede mostrarle un código inalcanzable y puede eliminarlo automáticamente (mediante la limpieza del sistema).
No es código abierto ** **, ¿o sí? –
¿Es al menos gratis (de pago) o tiene que comprarlo? – hasen
No es gratis, pero puede usar su versión beta de forma gratuita (al menos por ahora): las compilaciones nocturnas están disponibles en: http://www.jetbrains.net/confluence/display/ReSharper/ReSharper+5.0+Nightly+Builds –
Puede utilizar la herramienta de cobertura de código, que está disponible en Visual Studio 2005/2008 Team Suite.
La herramienta NDepend puede ayudar a encontrar el código no utilizado en una base de código .NET. Sin embargo, esta herramienta no es de código abierto. Descargo de responsabilidad: soy uno de los desarrolladores de esta herramienta.
NDepen 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:
- Potentially dead Types (de ahí detectar clase no utilizada, estructura, interfaz, delegado ...)
- Potentially dead Methods (de ahí detectar método no utilizado , Héctor, propiedad de captador/definidor ...)
- Potentially dead Fields
NDepend está integrado en Visual Studio, por lo que 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 de arriba 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.
- 1. Herramienta para encontrar el código VHDL comentado
- 2. Herramienta de informe PHP de código abierto
- 3. ¿Hay alguna herramienta de línea de comando de código abierto para refactorizar el código de Java?
- 4. herramienta de diagramación ER de código abierto para mysql
- 5. herramienta para explicar el código C
- 6. Una herramienta de código abierto para Glassfish Performance Monitoring
- 7. ¿Es C de código abierto?
- 8. código abierto RTOS enlaces de código
- 9. Código analizador de código abierto para el marcado Mediawiki
- 10. ¿Herramienta de código abierto para visualizar las dependencias de archivo de cabecera C/C++?
- 11. Buen código fuente abierto para C++
- 12. Herramienta para visualizar el flujo de código (C/C++)
- 13. ¿Cuál es su herramienta de depuración de código abierto favorita?
- 14. ¿Alternativa de código abierto para Mathworks Polyspace?
- 15. ¿Proyecto de código abierto para el desarrollador de C++?
- 16. Buscar el código no utilizado
- 17. de código abierto herramienta de gestión de metadatos
- 18. Pequeña biblioteca Unicode de código abierto para C/C++
- 19. Herramienta de migración de datos de código abierto
- 20. Herramienta de fusión para el código de C#
- 21. ¿Cómo encontrar colaboradores para proyectos de código abierto?
- 22. Buena herramienta de creación de informes de código abierto/marco para WPF (C#)
- 23. Cómo encontrar código no utilizado/muerto en proyectos web (90% de código en javascript)
- 24. ¿Código de código abierto para presentar la forma de onda?
- 25. ¿Hay alguna herramienta para reformatear el código de C#?
- 26. ¿Hay alguna herramienta gratuita capaz de eliminar el código no utilizado de un ensamblado CLI?
- 27. OCR de código abierto para chino
- 28. Perfiladores de código abierto recomendados
- 29. C# código abierto analizador NMEA
- 30. GitHub para Windows: ¿es de código abierto?
Er, Visual Studio da advertencias sobre el código inalcanzable o no utilizado ... – Joren
Solo los segmentos de funciones no utilizados, y eso es manejado por el compilador, no VS. Tengo la sensación de que OP está hablando de funciones completamente no utilizadas/no llamadas, que no son manejadas por el compilador. –
@ ApoY2k inalcanzable sí. Digamos que declaras un método pero nunca lo llamas, eso no es compatible con AFAIK. – ParmesanCodice