一种基于程序依赖图的代码聚类方法
2021-11-16刘志国王春晖
内蒙古师范大学学报(自然科学汉文版) 2021年6期
翟 晔, 刘志国, 王春晖
(1.内蒙古师范大学 计算机科学技术学院,内蒙古 呼和浩特 010022; 2.内蒙古师范大学 应用数学中心,内蒙古 呼和浩特 010022)
程序设计的学习一直是计算机科学及相关专业学习者面临的重大挑战,学生程序作业的批改和反馈需要花费教师大量的时间。随着MOOC教学方式在程序设计类课程的广泛应用,教师为每一位学生的程序作业给予及时反馈和答疑几乎已经成为不可能的事情。目前,现有的程序设计类辅助教学平台会根据测试用例检查程序的正确性,进而得到程序是否完全通过或部分通过测试的反馈。这些反馈信息对于学生调试程序和判断求解方法的正确性是非常有用的。然而,对于一些学生(特别是初学者),他们可能需要一些更细微的引导(如提供标准案例,或者找出错误)。
目前的代码分类方法主要基于代码相似性检测技术。代码相似度检测主要集中在两个方面:文本相似度检测和程序逻辑相似度检测。文本相似性将代码看成文本,一些学者采用TF-IDF建立文本特征[1-3],也有学者通过语义词权重法对文本进行分类和识别[4-5]。程序逻辑相似性[6]将代码转化为某种中间表示,然后量化相似性。一些研究者将代码表达成抽象语法树(AST)或检测程序依赖图(PDG),然后将动态文本匹配算法与后缀树算法相结合,对源文件中的相似代码进行编码[7]。有研究者将代码表示成函数调用图,从函数级别检测到源代码的相似性[8]。还有一些研究[9-10]根据内部操作指令的相似性确定了两个功能的相似性,并最终获得了两个应用程序的相似性。……
登录APP查看全文
