是否有一个自动化工具来重构/删除大型C代码库中的某些条件?

时间:2014-07-11 09:33:38

标签: c refactoring preprocessor

我们有一个我们继承的大型C代码库,当我们正在将其中的所有模块更新到一个新框架时,我们创建了很多#ifdef FOO和#ifndef FOO以便我们可以为了测试目的,运行与旧框架并行的新框架。

现在我们已经没有测试阶段并完成了我们的第一个版本,我们希望正式删除所有遗留代码(当定义FOO时)。

我知道C预处理器的输出,在这种情况下没有用,因为我不希望扩展所有宏并包含所有头文件,所以请不要回复建议我们使用它。

我们想要的是一个工具,可以获取目录和所有子目录,并处理其中的所有文本文件,以删除所有#if #else定义FOO的情况,同样保留FOO未定义的情况,删除整个#if /#else语句。

我认为这是一个非常常见的重构任务,并且它需要大量的手工劳动(虽然很容易使用工具!),所以如果有人知道某事,请告诉我!

2 个答案:

答案 0 :(得分:3)

你试过linux“unifdef”命令行工具吗?你必须用shell调整一下才能递归工作

答案 1 :(得分:0)

Clang格式与您将获得的格式非常接近。它会清理代码的间距和布局,所以你不是从一大块文本开始,但这就是它可以为你做的一切,因为变量名,常量等都是从人类中获得它们的意义;没有程序可以读懂你的想法。