2011-04-11 7 views
18

¿Alguien ha encontrado una herramienta para informar sobre el código comentado en una aplicación .NET? Estoy hablando de patrones como:¿Hay alguna herramienta que pueda informar sobre el código .NET comentado?

//var foo = "This is dead"; 

Y

/* 
var foo = "This is dead"; 
*/ 

Esto no se encontrará por herramientas como FxCop ReSharper o que se ven para el código sin referencias. Existen implicaciones obvias para distinguir el código comentado del texto comentado, pero no parece una tarea demasiado grande.

¿Existe alguna herramienta existente que pueda recoger esto? Incluso si solo se tratara de informes de ocurrencias por archivo en lugar de integración IDE completa.

Edit 1: También he logged this as a StyleCop feature request. Parece una buena opción para la herramienta.

Editar 2: Sí, hay una buena razón por la que me gustaría hacer esto y se relaciona con la calidad del código. Ver mi comentario a continuación.

+1

Por curiosidad, ¿por qué importa esto? ¿Cuál es el final del juego? – jcolebrand

+1

¡Buena pregunta! Lo estoy viendo como una métrica de calidad de código. A veces me encontraré con una aplicación (es decir, construida por un proveedor según sus propios estándares) con cantidades importantes de código muerto y me gustaría una forma de cuantificarla. Similar a los informes de herramientas como NDependen de métodos largos y demasiados parámetros. Si bien nunca se compila y ejecuta, desde una perspectiva de mantenimiento y elegancia del código, no es bonita. Es mal olor de código en el mejor de los casos. –

+0

Gotcha. Creo que la mejor manera de hacerlo es encontrar todos los bloques de comentarios y las líneas de código comentadas, abstraerlos en sus propios archivos, por así decirlo, y luego ver cuál de ellos parece código para el compilador. Imagino que debería poder determinar que una línea no encajaba y luego eliminar esa línea tal como está. El problema es que puede haber un segmento como este: '// si usamos 'x = y.Get (z);' aquí tenemos que lidiar con ... 'que puede o no cumplir con sus pautas de código olor. Esos no se pueden analizar automáticamente. – jcolebrand

Respuesta

5

Puede obtener una respuesta aproximada utilizando una expresión regular que reconoce los comentarios, que finaliza con ";" o "}".

Para un esquema más preciso, ver esta respuesta: Tool to find commented out VHDL code

0

StyleCop cogerá el primer patrón. Sugiere que use //// como un comentario para el código para que ignore la regla.

+0

Sí, hay un montón de otros patrones de comentarios sintácticamente correctos a los que no hice referencia. El truco es identificar el texto comentado frente al código comentado que StyleCop no hará (todavía). –

0

Al ver como mencionas NDepende, también puede decirte Porcentaje comentado http://www.ndepend.com/Metrics.aspx#PercentageComment. Esto se define para aplicaciones, ensamblajes, espacios de nombres, tipos y métodos.

+0

Sí, pero no puede decirle cuando un comentario no es un comentario! Con esto quiero decir que no puede identificar el código que simplemente ha sido excluido de la compilación/ejecución en oposición a los comentarios de naturaleza instructiva o descriptiva. –

1

He hecho este camino por la misma razón. Más o menos lo hice sugirió Ira Baxter (aunque me centré en variable_type variable = value y busqué específicamente líneas que constaban de 0 o más espacios en blanco al principio seguidos de // seguidos por código (y para manejar/* * /, escribí un preprocesador que lo convirtió en //. Modifiqué la regla exp para reducir los falsos positivos y también hice una inspección manual solo para estar seguro; afortunadamente, hubo muy pocos casos en los que el comentario estaba haciendo pseudocódigo como cosas como Drachenstern sugiere arriba; YMMV. Me encantaría encontrar una herramienta que podría hacer esto, pero algunos falsos positivos de pseudocódigos válidos pero posiblemente demasiado detallados van a ser realmente para descartar, especialmente si están usando técnicas de programación alfabetizadas para hacer que el código sea "legible" como pseudo código.

(También hice esto para el código VB6; por un lado, la falta de; ha hecho más difícil corregir un "eas y "reg exp, por otro lado el código usaba menos clases por lo que era más fácil hacer coincidir los tipos de variables que tienden a no estar en pseudocódigo)

Otra opción que miré pero no tuve disponible fue para ver los registros de control de revisión para las líneas que fueron código en la versión X y luego // misma línea en la versión Y ... esto de los cursos supone que A) están usando el control de revisión B) usted puede verlo, y C) no escribió el código y lo comentó en la misma revisión. (Y se pone un poco más complicado si usan/* */comments

1

Hay otra opción para esto, Sonar. En realidad es una aplicación centrada en Java, pero hay un plugin que puede manejar el código C#.Actualmente se puede informar sobre: ​​

  1. errores StyleCop
  2. errores
  3. FxCop
  4. errores Gendarme
  5. código duplicado
  6. código comentado
  7. resultados de la prueba Unidad
  8. cobertura de código (usando NCover , OpenCover)

Tarda bastante tiempo para escanear principalmente debido a las comprobaciones de duplicación (AFAIK utiliza la coincidencia de texto en lugar de los árboles de sintaxis C#) y si utiliza la base de datos derby predeterminada interna puede fallar en bases de código grandes. Sin embargo, es muy útil para las métricas basadas en códigos que obtienes y tiene funciones de instantáneas que te permiten ver cómo han cambiado las cosas y (con suerte) han mejorado con el tiempo.

Cuestiones relacionadas