背景
我继承了一个遗留的60kloc g项目,我想重构一下,在整个项目中强制执行一致的命名约定.
题
是否有免费/开源静态分析工具,可以生成以下列表:
>全球符号
>班级名称
>成员方法(公共/受保护/私人,如果可能)
>成员变量
>静态方法
>本地符号(可能会忽略这些)
>我可能错过的任何其他符号,但可能会影响代码的读者
途径
我的目的是使用vim编辑生成的符号列表,然后使用Ruby脚本对符号进行非常粗略的搜索和替换/映射,这样至少命名约定是一致的.
这个过程有点难看,我希望初始编译失败,但如果我能拥有一组更易读的代码,我不介意通过手工修复问题.
大型C代码库的开发人员使用哪种工具来进行这种重构?
最佳答案 C的自动重构非常困难,部分与预处理器(宏和文件包含)有关,但主要与解析,名称查找和语义分析阶段的其余部分(模板实例化,常量表达式,重载)之间的相互依赖性有关.决议等等).在我所研究的非常大的C代码库中,自动重构根本就没有完成,并且由于固有的困难,重构工具的质量很差.
虽然clang虽然出现了,但它特别具有模块化的前端,因此你可以以更好的方式访问AST然后使用其他工具,there may be some better refactoring tools based on it – 但我不会屏住呼吸.
看看来自clang的AST转储,也许你可以在XML上编写一个脚本来为你提供一个转储,可能会形成一个手工重构的转折点.