检测Python源文件之间的相似性
pyastsim的Python项目详细描述
皮亚斯特西姆
计算一批源文件之间的相似性。在
安装
可以使用pip安装程序:
pip3 install pyastsim
使用
^{pr2}$示例
显示使用默认设置检查一组文件的相似性:
pyastsim *.py
将自定义阈值设置为或多或少敏感(默认阈值为80%相似性):
pyastsim --threshold 90 *.py
报告类似文件时显示完全差异:
pyastsim --show-diff *.py
在执行比较之前,请从AST中删除除一个以外的所有函数:
pyastsim --function my_func *.py
语言支持
- Python(使用内部AST进行比较)
- C/C++(使用GCC组件输出比较)
差额计算
通过首先将每个提供的文件转换为抽象语法树(AST)来计算差异。然后对AST进行规范化以删除注释、docstring和标准化标识符名称。然后我们将AST转换回Python源代码,并计算每对源文件之间的Damerau–Levenshtein距离。我们将这个数字除以被比较文件中unicode代码点的平均数,从而进一步规范化这个数字。这给了我们文件之间大致的相似性百分比。总结一下:
- 转换为AST
- 删除注释和docstring
- 规范化标识符
- 转换回源
- 计算Damerau–Levenshtein距离
- 将编辑距离转换为百分比
- 项目
标签: