写在前面的话
写给我自己看的,有的地方有的人可能看不懂吧,学到的东西的快速记忆而已。
基本概念总结
1.代码克隆和代码剽窃的区别
a. 代码克隆(code clone)代码克隆主要指的是一个程序内(intra-app)某段代码被重复用了几次这种。 你可以设想一种应用scenario, 就是一个人写代码的本事很拙劣了,有些事情可能写个函数,然后重复调用几次就可以的,但是他大哥偏偏写了重复的几大段。这个就叫做代码克隆
b. 代码剽窃(plagiarism) 一般指的是两个程序之间(inter-app)相似代码的检测。一般就是一货抄袭了别人的代码,然后我们要把这货绳之于法,就是这个样子。
CFG
CFG 的每一个节点就是一个基本块(basic block),一个基本块就是包含一堆顺序语句的东东了啦。
构建CFG的关键
一个CFG就是一个方法或者说函数的图。
PDG
PDG的每一个节点都是一条语句