我们的应用程序的源代码是数十万行,数千个文件,在很旧的地方 – 该应用程序是在1995年或1996年首次写的.在过去几年中,我的团队大大提高了源代码的质量,但是一个问题依然存在,特别是我的错误:很多类在它们的头文件中都有很多方法被完全定义.
在某些情况下,我在一个标题中声明为inline的方法没有问题 – 一个结构体的构造函数,一个简单的方法,其中内联可测量地使它更快(我们有一些这样的数学函数)等等.但是内联方法的自由使用没有明显原因是:
>凌乱
>很难找到一个方法的实现(特别是通过一个虚拟函数的类的树进行搜索,只有找到一个类,它的版本在标题中声明…)
>可能增加编译代码大小
>可能导致我们的连接器的问题,这是notoriously flaky for large codebases.在公平的情况下,它在过去几年已经好多了,但并不完美.
最后一个原因可能是对我们造成问题,这是通过代码库并将大多数定义移动到源文件的好理由.
我们的代码库是巨大的有没有一个自动化工具可以做(大部分)这个为我们?
笔记:
>我们使用Embarcadero RAD Studio 2010.换句话说,C的方言包括VCL and other extensions等.
>几个标题是独立的,但大多数标头与对应的.cpp文件配对,就像通常情况一样.除了扩展名之外,文件名是相同的,即如果在X.h中定义了方法,它们可以被移动到X.cpp.这也意味着该工具不需要处理解析整个项目 – 它可能只是解析单个.cpp / .h文件对,忽略包含等,只要它可以可靠地识别一个定义了一个主体的方法在一个类的声明和移动它.
解决方法
你可以试试
Lazy C++.我没有使用它,但我相信这是一个命令行工具来做你想要的.