支持c++的Diff实用程序
Diff utility that is C++ aware
是否有一个免费的diff实用程序可以使用它们的ast而不是文本来比较两个c++文件?
我想的是:
- 将两个文件转换为AST
- 将AST还原为c++代码(这将缩进规范化)
- 在这两个之间做正常差
- 也尝试检测所做的简单重构(例如添加/删除/重命名成员)
[另一位答题者要求张贴商业工具的名称]
Semantic Designs的SmartDifferencer工具将解析c++,并基于ast计算差异;布局格式并不重要。解析器是一个完整的c++ 11解析器。它可以解析大多数源文件,而无需扩展大多数预处理器指令,只要它们是"结构化的";c++预处理器的使用通常不像C中那样滥用。
有其他语言版本的SmartDifferencer。
[披露:我是Semantic Designs的CTO]
对于你的问题,我可以想到两种解决方案:
-
讨论将作为一个组使用的编码风格并坚持它。您可能需要在团队成员不同的个人编码风格之间找到折衷方案。
-
如果你正在使用源代码管理,添加钩子,在提交时删除所有格式,并在签出时自定义代码格式。这需要一些工作,但允许团队成员使用自己的格式风格。当然,这并不能解决变量命名和其他非格式化代码样式元素的不同意见。
有像MOSS (http://theory.stanford.edu/~aiken/moss/)这样的工具可能会有所帮助。
你可以在做diff之前通过style传递代码来规范缩进/空格/格式化。这对重构没有任何帮助,但老实说,你需要一个完整的预处理/编译传递来正确地完成这一点。
http://astyle.sourceforge.net/相关文章:
- C++实用程序::转换在静态链接库中不起作用
- 通过实用程序 fn 将捕获的 lambda 传递给 C 样式回调 - 错误
- 当我尝试进行TPC-E测试时,实用程序抱怨"undefined reference"
- 在没有格式说明符的情况下在c++中使用类似printf的实用程序
- C++实用程序,用于将长开关语句转换为封装开关案例阶梯的简洁函数调用
- 创建文件函数是否可以打开仅在WinObj实用程序中的全局目录下列出的设备的句柄?
- C :实用程序名称空间中的正态分布
- 实用程序函数不会在 .h 文件中初始化并在 main 中定义.cpp
- 用于创建integral_constants的 aribtrary 元组的通用实用程序
- Qt 创建器中的实用程序::转换::to_string_t中的链接错误
- 硬币或CBC求解器性能:命令行实用程序与编译的C 程序
- 位置实用程序例程与使用类型相同的命名空间
- 对于C++ Vector3 实用程序类实现,数组是否比结构和类快?
- 如何设计一个配置实用程序来静态和动态链接工作
- OS X"堆"命令行实用程序如何收集其信息?
- readelf 实用程序用于 Visual Studio C++ ABI 和 VS 编译的对象
- 卡在C++编写我的差异实用程序
- (GSTREAMER)如何使Taglib和Core Audio实用程序类一起工作
- 在 C++ 中创建通用实用程序类
- 支持c++的Diff实用程序