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



我们继承了一个很大的C代码库,当我们在将其中的所有模块更新到一个新框架的过程中,我们创建了许多#ifdef FOO和#ifndef FOO,以便我们可以在旧框架的基础上并行运行新框架以进行测试。

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

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

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

我认为这是一个非常常见的重构任务,它需要大量的体力劳动(尽管对于一个工具来说很容易!),所以如果有人知道什么,请告诉我!

你试过linux的"unifdef"命令行工具吗?你需要稍微调整一下shell,让它递归地工作

Clang格式是最接近的。它会清理代码的间距和布局,这样你就不会从一大堆文本开始,但这就是它能为你做的一切,因为变量名、常量等都是从人类那里获得意义的;没有程序可以读懂你的思想。

最新更新