解析C++源代码并将标题内联方法移动到.cpp源文件的工具?

Dav*_*vid 11 c++ refactoring inline c++builder automated-refactoring

我们的应用程序的源代码是数十万行,数千个文件,并且在非常古老的地方 - 该应用程序最初是在1995年或1996年编写的.在过去的几年里,我的团队已经大大提高了源代码的质量,但是一个问题仍然是特别困扰我:许多类在其头文件中完全定义了许多方法.

在某些情况下,我对在头文件中内联声明的方法没有任何问题 - 一个struct的构造函数,一个简单的方法,其中内联可以使它更快(我们有一些像这样的数学函数),等等.但内联方法的自由使用没有明显原因是:

  • 很难找到方法的实现(特别是在类的树中搜索虚函数,只发现一个类在头中声明了它的版本......)
  • 可能会增加编译的代码大小
  • 可能会导致我们的链接器出现问题,这对于大型代码库而言众所周知的.公平地说,它在过去几年里变得更好,但它并不完美.

最后一个原因现在可能会给我们带来问题,这是通过代码库并将大多数定义移动到源文件的一个很好的理由.

我们的代码库非常庞大. 是否有可以为我们(大部分)做这个的自动化工具?

笔记:

  • 我们使用Embarcadero RAD Studio 2010.换句话说,C++的方言包括VCL和其他扩展等.
  • 一些标题是独立的,但大多数标题与相应的.cpp文件配对,就像通常那样.除了扩展名之外,文件名是相同的,即,如果在Xh中定义了方法,则可以将它们移动到X.cpp.这也意味着该工具不必处理整个项目的解析 - 它可能只是解析各个.cpp/.h文件对,忽略包含等,只要它能够可靠地识别定义了主体的方法在一个类声明中移动它.

Nat*_*one 6

您可以尝试使用Lazy C++.我没有使用它,但我相信它是一个命令行工具,可以满足您的需求.