PQ-Grams 是一种有效评估树结构/内容相似性的方法,用于可以抽象为嵌套(标签、儿童)对的树结构。鉴于此前提,单个 PQ-Gram 是前 P 个祖先标签(包括当前节点)和下一个 Q 子标签。PQ-Gram 配置文件是一棵树中所有 PQ-Gram 的集合,包括填充每个子集的左侧和右侧的“填充器”节点,以及祖先树的顶部。 然后可以将这些 PQ-Gram 与 NLP 中的 n-Gram 或 shingles 类似地使用,通过集合并集和集合差异度量来评估树之间的相似性。最初的用法是执行类似集合差分的操作来计算近似的树编辑距离
2022-06-12 14:05:24 10KB 算法 rust
本文提出了一种基于树和基于令牌的方法相结合的高速,高精度代码克隆检测方法。 重复的程序代码(称为代码克隆)的存在是降低软件质量和可维护性的主要因素之一。 如果一个代码片段包含错误(错误),并且将它们复制并修改到其他位置,则必须更正所有错误。 但是在大型复杂软件中查找所有代码克隆并不容易。 对于代码克隆检测已经做了很多研究工作。 代码克隆检测主要有两种方法。 一种是基于令牌的方法,另一种是基于树的方法。 基于令牌的方法速度快,所需资源更少。 但是,它无法检测所有类型的代码克隆。 基于树的方法可以检测所有类型的代码克隆,但速度慢且需要大量计算资源。 本文提出了这两种方法的组合,以提高检测代码克隆的效率和准确性。 首先,将通过基于令牌的快速而轻量级的方法来提取一些代码克隆的候选对象。 然后,将使用可找到各种代码克隆的基于树的方法来更精确地检查选定的候选对象。 开发了原型系统。 该系统接受源代码并在第一步中对其进行标记化。 然后将基于令牌的方法应用于此令牌序列以查找代码克隆的候选对象。 在提取了几个候选者之后,选定的源代码将转换为抽象语法树(AST),以应用基于树的方法。 一些示例源代码用于评
1