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