2012-02-22 12 views
7

Se han formulado variaciones de esta pregunta, pero no son específicas de GNU/Linux y C. Utilizo Komodo Edit como mi editor habitual, pero preferiría algo que se pueda utilizar desde CLI. No necesito soporte de C++; está bien si la herramienta solo puede manejar el plano C.Herramientas de refactorización de código para C, ¿se pueden usar en GNU/Linux? Se prefiere FOSS

Realmente aprecio cualquier dirección, ya que no pude encontrar nada. Espero que no me obliguen a 'rodar' algo yo mismo.

NOTA: Por favor, no mencionar vim; Sé que existe y cuáles son sus capacidades. A propósito, elijo evitar vim, por lo que uso Komodo (o nano en los servidores).

+0

¿Se opone a emacs también? –

+0

Sí, elegiría 'vim' sobre' emacs' ... pero los odio a los dos con pasión. Soy el único administrador de sistemas en el trabajo que dice "ninguno", cuando me preguntan cuál prefiero. Yo uso 'nano' en los servidores, y Komodo Edit en mi máquina local. Ha sido catártico, sin tocar 'vim' nuevamente. – TechZilla

+2

Refactorización de código para C? Coccinelle: http: //coccinelle.lip6.fr/ – ninjalj

Respuesta

4

No creo que una herramienta de refactorización de consola pura sería agradable de usar.
Uso Eclipse CDT en Linux para escribir y refactorizar C-Code.
Existe también Xrefactory para Emacs http://www.xref.sk/xrefactory/main.html

si no una herramienta de consola refactorización es o.k para usted también.

+0

... Odio Eclipse, soy un tipo Komodo. Dicho eso ... Tu eres el único que realmente intentó responder mi pregunta. Así que, aunque no sean una gran opción para mí, funcionan en Linux. – TechZilla

0

Podría considerar codificar un complemento GCC o una extensión MELT (MELT es un lenguaje específico de dominio para extender GCC) para sus necesidades.

Sin embargo, tal enfoque le llevaría algún tiempo, porque tendrá que entender algunos de los internos de GCC.

0

Sólo para Windows, dicho y no FOSS pero "cualquier dirección ..."

Nuestra DMS Software Reengineering Toolkit" con sus C Front End puede aplicar transformaciones a código fuente en C. DMS puede configurarse para realizar transformaciones personalizadas y confiables transformaciones, aunque la configuración no es tan fácil como escribir simplemente un comando como "refactor frazzle by doobaz".

Uno de los principales escollos sigue siendo el preprocesador. DMS puede transformar código que tiene directivas de preprocesador en lugares típicos (alrededor de instrucciones, expresiones, encabezados de bucles if/for/while, declaraciones, etc.) pero otros "condicionales no estructurados" le dan problemas. Puede ejecutar DMS expandiendo las directivas de preprocesador o, lo que es más importante, ampliando las que le dan problemas, pero a la mayoría de las personas no les gusta porque prefieren mantener sus directivas de preprocesador. Entonces no es perfecto.

[Otra respuesta sugirió Concinelle, que se ve bastante bien desde mi punto de vista. Hasta donde yo sé, no maneja en absoluto las directivas de preprocesador; Podría estar equivocado y podría manejar algunos casos como lo hace DMS, pero estoy seguro de que no puede manejar todos los casos].

No desea considerar enrollar el suyo. Crear una herramienta de transformación/refactorización es mucho más difícil de lo que supondría nunca haberlo probado. Necesita analizadores completos y precisos para el dialecto (C) de interés y simplemente es bastante difícil hacerlo bien. Necesita un preprocesador, tablas de símbolos, análisis de flujo, transformación, maquinaria de regeneración de código, ... esto requiere años de esfuerzo para construir y hacerlo bien. Confía en mí, he estado allí, hecho eso.

+0

Es bastante obvio desde el contexto de '... cualquier dirección ...', que me estaba refiriendo a cualquier dirección hacia mis requisitos establecidos. La pregunta nunca fue "ayúdame a encontrar * CUALQUIER * herramienta de refactorización". Además ... cuando dije 'rodar lo mío', estaba hablando de 'rodar' mi propia solución. Para solucionar el problema, posiblemente creando algunos scripts de shell, nunca consideraría crear un proyecto de refactorización completo. Simplemente no estoy en ese nivel, y lo sé desde hace mucho tiempo. – TechZilla

+0

@TechZilla: Cuando dices "cualquier dirección", lanzas una red muy amplia. Cuando escucho a alguien decir "rodar" (el suyo), lo interpreto como "dispuesto a construir algo" con un esfuerzo significativo; Respondí a esa interpretación. Supongo que otras personas también lo hacen. [FWIW, DMS parece funcionar bien en Wine on Linux, pero la mayoría de los usuarios de Linux parecen detestar esa solución.] –

Cuestiones relacionadas