C的代码重构工具,可以在GNU / Linux上使用吗? FOSS更可取

时间:2012-02-22 19:01:54

标签: c linux refactoring gnu

已经问过这个问题的变化,但不是特定于GNU / Linux和C.我使用Komodo Edit作为我常用的编辑器,但我实际上更喜欢可以从CLI使用的东西。 我不需要C ++支持;如果该工具只能处理普通的C,那就好了。

我真的很感激任何方向,因为我找不到任何东西。 我希望自己不会被迫“滚动”一些东西。

注意:请不要提及vim;我知道它存在,它的功能是什么。我故意选择避免vim,这就是我使用Komodo(或服务器上的nano)的原因。

3 个答案:

答案 0 :(得分:4)

我认为纯粹的控制台重构工具不会很好用。
我在linux上使用Eclipse CDT来编写和重构C-Code。
 Emacs http://www.xref.sk/xrefactory/main.html

也存在Xrefactory

如果非控制台重构工具也是o.k。

答案 1 :(得分:0)

您可以考虑编写GCC插件或MELT扩展名(MELT是扩展GCC的特定领域语言)以满足您的需求。

然而,这种方法需要一些时间,因为你需要了解一些GCC内部。

答案 2 :(得分:0)

仅适用于Windows,而不是FOSS,但您说“任何方向......”

我们的DMS Software Reengineering Toolkit"及其C Front End可以将转换应用于C源代码。 DMS可以配置为执行自定义的,复杂的可靠转换,尽管配置并不像只输入“重构欺骗由doobaz”这样的命令一样容易。

其中一个主要障碍仍然是预处理器。 DMS可以转换在典型位置具有预处理程序指令的代码(围绕语句,表达式,if / for / while循环头,声明等),但其他“非结构化条件”会给它带来麻烦。您可以通过扩展预处理程序指令来运行DMS,或者更加重要的是,扩展那些给它带来麻烦的指令,但大多数人不喜欢这样,因为他们更喜欢保留它们的预处理程序指令。所以它并不完美。

[另一个答案建议Concinelle,从我的角度看起来相当不错。据我所知,它根本不处理预处理程序指令;我可能是错的,它可能会像DMS那样处理某些情况,但我确信它无法处理所有情况]。

你不想考虑自己动手。构建转换/重构工具比你从未尝试过的想象困难得多。你需要完整,准确的(C)方言解析器,这是很难做到的。你需要一个预处理器,符号表,流程分析,转换,代码再生机制......这些东西需要多年的努力来构建和正确。相信我,去过那里,做到了。