kfm*_*e04 5 c++ refactoring c++11
背景
我继承了一个遗留的 60kloc g++ 项目,我想重构它以在整个项目中强制执行一致的命名约定。
题
是否有免费/开源静态分析工具可以生成以下列表:
方法
我的意图是使用 vim 来编辑生成的符号列表,然后使用 Ruby 脚本对符号进行非常粗略的搜索和替换/映射,以便至少,命名约定是一致的。
这个过程有点难看,我预计初始编译会失败,但如果我可以有一组更具可读性的代码,我不介意手动解决问题。
大型 C++ 代码库的开发人员使用什么样的工具来进行这种重构?
C++ 的自动重构非常困难,部分与预处理器(宏和文件包含)有关,但主要与解析、名称查找和语义分析阶段的其余部分(模板实例化、常量表达式、重载)之间的相互依赖性有关分辨率等)。在我工作过的非常大的C++代码库上,根本没有完成自动重构,并且由于固有的难度,重构工具的质量很差。
不过,自从 clang 出现以来,它特别具有模块化前端,因此您可以比其他工具更好地访问 AST,因此可能会有一些基于它的更好的重构工具- 但我不会屏住呼吸。
看一下 clang 的 AST 转储,也许您可以在 XML 上编写一个脚本来为您提供一个转储,该转储可能构成手动重构它的起点。