c++ - 可识别 C++ 的 Diff 实用程序

标签 c++ g++ diff clang abstract-syntax-tree

是否有免费的 diff 实用程序可以使用 AST 而不是文本来比较两个 C++ 文件?

我的想法是这样的:

  • 将两个文件都转换成 AST
  • 将 AST 渲染为 C++ 代码(这使缩进规范化)
  • 在这两者之间做正常的差异
  • 还尝试检测已完成的简单重构(例如添加/删除/重命名成员)

最佳答案

[一位其他回答者要求张贴商业工具的名称。]

Semantic Designs 的 SmartDifferencer 工具将解析 C++,并根据 AST 计算差异;布局格式根本不重要。解析器是一个完整的 C++11 解析器。它可以解析大多数源文件而无需扩展大多数预处理器指令,只要它们是“结构化的”; C++ 预处理器的使用通常不像在 C 中那样滥用。

SmartDifferencer 有适用于其他语言的版本。

[披露:我是 Semantic Designs 的 CTO]

关于c++ - 可识别 C++ 的 Diff 实用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14244126/

相关文章:

c++ - 我可以像 Julia 中的 Rcpp 的 stop() 一样在 c 代码中抛出错误吗

C++ 字符串差异(la Python 的差异库)

svn - OSX 上的 meld(图形差异工具)有哪些替代方案

svn merge --dry-run 显示 svn 差异

c++ - 非类型模板参数、构造函数和推导指南

c++ - 我们可以超越对象切片吗?

c++ - typedef 结构和枚举,为什么?

C++11 初始化列表 + 函数指针让我头疼

c++ - 重新排序 gnu autotools 链接器标志

C++:从 MSVC 切换到 G++:全局变量