【发布时间】:2021-03-28 15:23:01
【问题描述】:
我有两个版本的源代码,其中包含一长串(大约 500 条)代码更改(遗憾的是没有可用的代码历史记录)。我想分割出任何对特定变量 XYZ 产生影响或可能产生影响的变化。最终目标是能够运行代码的结果并将其与所有代码更新进行比较,其中部分更新不影响 XYZ,并且没有任何更新。
有没有一种方法可以运行,例如,一种代码分析来识别哪些代码行会影响特定变量或代码行,然后自动分割出这些更改并创建补丁?我想在我目前拥有的两个版本之间进行一种中间提交。
代码是用C编写的, 我正在使用 git 来跟踪我自己的历史, 代码在 Visual Studio 2019 中编译。
【问题讨论】:
-
假设您的代码有版本 A(旧)和版本 B(新)。在版本 B 中搜索不在 A 中的变量 xyz 的每一个出现并使用它,这不是解决这个问题的直接方法,“愚蠢”的方法吗?
-
@josepchappa,不仅仅是变量本身,它的所有函数和相关变量都会影响其值。
-
这个过程的第一步是一样的,不是吗?这是为了识别所有出现的变量 xyz。然后确定使用哪种操作变量 xyz 并针对每种情况进行处理。比如说你有
int xyz = 5,然后在代码的某个地方你有xyz = someFunc(),在其他地方你有int somevar = xyz + 123。如果某些函数和相关变量可以影响 xyz,那么它肯定会在代码中的某处被调用。直接访问或作为函数参数间接访问或用于其他一些操作。无论哪种方式,您都需要通过其名称调用 xyz。
标签: c git analysis code-analysis