toh*_*ava 7 c++ diff g++ clang abstract-syntax-tree
是否有一个免费的diff实用程序可以使用它们的AST而不是文本来比较两个C++文件?
我想到的是: - 将两个文件转换为AST - 将AST渲染为C++代码(这标准化缩进) - 在这两者之间做正常的差异 - 同时尝试检测已完成的简单重构(添加/删除/重命名)成员例如)
[其他回答者之一要求发布商业工具的名称。]
Semantic Designs 的 SmartDifferencer 工具将解析 C++,并根据 AST 计算差异;布局格式根本不重要。该解析器是一个完整的 C++11 解析器。它可以解析大多数源文件,而无需扩展大多数预处理器指令,只要它们是“结构化的”;C++ 预处理器的使用通常不像 C 中那样滥用。
SmartDifferencer 有适用于其他语言的版本。
[披露:我是 Semantic Designs 的 CTO]
您可以在进行差异之前通过 AStyle 传递代码来规范缩进/间距/格式。这对重构没有任何作用,但老实说,您需要完整的预处理/编译过程才能正确执行此操作(AFAICS)。
http://astyle.sourceforge.net/