我只发现了一些废弃的项目、理论和特性列表,但我没有找到一个可以比较两个C++源文件并显示语义差异的工具。
当然,我不会比较两个无关的文件,或者在10年的开发和维护过程中积累的更改。但是,如果将更改与适当的含义一起呈现,而不是以字符/单词/行级别的文本更改方式呈现,那么通常在代码审查中讨论的更改将更容易被理解。
Linux内核开发人员使用的是C语言的检查工具,但不适用于C++。
一般情况下是不可能的。一个程序甚至无法判断另一个程序是否会终止(著名的停机问题)。对于更有限制的程序(有限循环等),你可以做更多的事情,但这是重量级的东西,语言必须是不那么棘手的东西,是一个有限的子集或者一个更简单的语言。这可能就是为什么你找不到已经开始的东西的原因。
git merge
处理合并时与简单提交一样干净、简单,具有完整的历史记录和来自源代码库的提交。通过良好的提交注释(以及评审者使用 --signoff),跟踪特定问题的历史记录相当容易。与问题/缺陷跟踪器的集成会很不错,但只需使用几个 Perl 脚本即可添加,应该不难。 - greyfade