我只发现了废弃的项目、理论和功能列表。但我找不到可以比较两个 C++ 源文件并显示语义差异的工具。
当然,我不会比较两个不相关的文件,也不会比较在 10 年的开发和维护过程中积累的变化。但是,通常在代码审查中讨论的更改将更容易理解,如果与正确的含义一起呈现,而不是在字符/单词/行级别的文本更改
真正的“语义差异”是不可能的。Closer 将是一个工具,它比较两个源文件,以查看一个是如何通过对程序结构(变量、表达式、语句、方法)进行抽象编辑操作(删除、复制、移动、重命名)从另一个导出的。请参阅我们的Smart Differencer,了解一种适用于几种语言的工具,C++ 即将推出。
2013 年 3 月:支持 C++11 的 GCC/MS 方言。
linux内核开发人员使用的C语言有一个。虽然不适用于 C++
这是不可能的,一般来说。一个程序甚至无法判断另一个程序是否会终止(著名的停机问题)。对于更有限的程序(有限有界循环,可能还有其他约束),您可以做更多,但它是繁重的东西,并且语言必须是,不是 C++,而是一些不那么棘手的东西,一个有限的子集或更简单的语言。这可能就是为什么你发现什么都不是已经开始了。
是的,它被称为“为提交写评论”和“问题跟踪”。将其视为用于语义分析的元数据。