2010-03-10 22 views
15

Estoy trabajando con una base de código heredada que contiene miles de líneas de código comentado. Sé que el codificador anterior tenía la intención de guardar todo su trabajo duro para la posteridad en lugar de simplemente borrarlo, pero nunca lo leeré y se interpone en el camino. Un ejemplo de problema es que cuando realizo búsquedas de texto para ciertos segmentos de código obtengo docenas de visitas "falsas" en el código comentado. AGAVE.Manera rápida y fácil de eliminar el código "muerto" (comentado)

¿Existe una forma rápida/fácil de detectar bloques grandes de código comentado? Un RegEx inteligente tal vez?

Estoy trabajando en VB.NET en este momento y el carácter de comentario es un solo apóstrofo.

+1

¿Hay algún comentario que quiera mantener? ¿Debería eliminarse el comentario solo si parece que contiene código, y no si contiene texto ordinario? –

+0

Ese es el problema. Hay algunos comentarios útiles, pero están en dos, tres o cuatro líneas superiores. El código inútil y comentado tiende a ejecutarse para docenas y cientos de líneas comentadas. –

+0

Creo que algunos regex inteligentes podrían encargarse de esto. Algo que encontrará 10 o más líneas contiguas que comienzan con un solo apóstrofo. Si la expresión regular selecciona el código comentado por mí, simplemente puedo presionar eliminar y pasar al siguiente bloque. –

Respuesta

13

Puede usar una búsqueda de expresiones regulares. Buscar

^.*'.*$ 

Para buscar una sola línea con un comentario. Probablemente desee encontrar al menos 3 líneas que comiencen con un comentario:

^.*'.*\n.*'.*\n.*'.*$ 

Mantenga el gato alejado de su teclado.

+1

¿No eliminaría esto finalmente todos los comentarios deseados también? ¿Cómo se distingue entre el código antiguo y los comentarios deseados? –

+5

Esto estaba destinado a buscar y seleccionar código comentado, presionar DEL es el trabajo del OP. –

+1

+1. Esto sería mucho más rápido y más controlado por el usuario que mi respuesta que implica una macro. –

0

Para eso son los sistemas de control de versiones.

me aseguraría de que estaba bajo el control de versiones (esperemos que no Visual Source Safe), mira eso, eliminar todo el código comentado, y comprobar de nuevo en.

También me desalentar la práctica de su equipo de desarrollo para el futuro.

+0

Estamos usando Subversion, así que no estoy preocupado por "perder" nada. Este código comenzó hace muchos años como, espere, VB3, antes de que los sistemas de control de versiones fueran la norma. Estoy retirando el crud manualmente pero requiere mucho trabajo y estoy buscando una forma más rápida. me gustaría seguir adelante y refactorizar el código "en vivo". –

+0

Suena como un problema de educación. Dígale a su equipo que no haga más esto, luego comience a trabajar arduamente para limpiar el desastre. – duffymo

4

Me temo que estoy de acuerdo con duffymo. No creo que encuentres una manera automática confiable de eliminar el código comentado. Estoy seguro de que si buscas lo suficiente, encontrarás uno, pero tu tiempo sería mejor invertido en tu trabajo.

He estado en esta situación en el pasado (con demasiada frecuencia) y lo que termino haciendo es eliminar el código comentado ya que trabajo en varios módulos.

Como ejemplo, abro la clase Persona para hacer un cambio y veo el código comentado que aún no se ha eliminado. Compruebo el código (usamos VSS), elimino el código incorrecto, lo reviso y, finalmente, lo reviso para hacer mi trabajo.

Toma tiempo antes de que todo desaparezca, pero creo que es un uso efectivo del tiempo para resolver el problema.

+1

"usamos VSS" - Lo siento mucho. Es el peor producto en el mercado, sin dudas.¿Por qué harías eso cuando hay alternativas más capaces disponibles que no cuestan nada? Pero gracias por el apoyo. – duffymo

+1

+1. También he estado en esa situación e hice lo mismo. Si un código comentario específico le molesta, elimínelo. Si existe en otro lugar, pero no le molesta en este momento, es una pérdida de tiempo eliminarlo. Sea pragmático y no pierda el tiempo ordenando el código que funciona y no necesita ser cambiado o leído. – MarkJ

+0

@duffymo: Estoy de acuerdo, pero está fuera de mi control. (He hecho sugerencias) Pero, es el estándar de la compañía y es una gran compañía. –

0

Sugeriría escribir o encontrar una macro para Visual Studio que ayude a eliminar comentarios.

algunos pseudo-lógica:

  • inicio a un número de línea, leer primer carácter. recuerda este número de línea.
  • si es el carácter de comentario de VB ', luego continúe
  • lea el primer carácter de la siguiente línea. si es un personaje de comentario, continúa.
  • al encontrar una línea que no es un carácter de comentario, analiza el número de líneas atravesadas.
  • si la cantidad de líneas atravesadas coincide con su umbral de n, luego bórrelas.
3
(^\s*//.*\n)^10 

encontrar 10 concurrentes comentadas líneas del estilo //.

comentada pruebas:

\s*//\s*\[Test\].*\n 
+0

Esto me ayudó a encontrar una carga de código comentado :) – Ronnie

+3

Por alguna razón, esto ya no funciona para mí, tengo que usar (^ \ s * //. * \ N) {10} – Ronnie

+0

@Ronnie: gracias por esto . Tuve que hacer lo que mencionaste en VS2010. También me llevó un poco darme cuenta de que esto fue enviado a la casilla de verificación "Encontrar/Reemplazar + usar expresión regular". Este es un consejo increíble! – MikeJ

1

Para cualquier persona C# que termine aquí, utilice la siguiente expresión regular para buscar líneas comentadas.

(^|[^/])//[^/] 
0

Sé que este es un hilo viejo, pero el truco que me ayuda no se ha mencionado.

I búsqueda de esta expresión regular:

(^ \ s *' = \ n.).^

encuentra comentada líneas que contienen un signo igual. Mi experiencia es que la mayoría de los bloques de código comentado contienen al menos una línea que tiene una asignación y que los signos iguales son bastante raros en los comentarios reales.

No automatizo el reemplazo, solo presiono F3 y si coincide con una sola línea, solo presiono la tecla enter para reemplazar el texto resaltado con una nueva línea. Si aterriza en una línea que es parte de un bloque de líneas comentadas, entonces simplemente selecciono manualmente, presiono enter y F3 nuevamente.

Cuestiones relacionadas