基于动态检测与静态分析的自动评分方法研究
2021-12-01胡建鹏
智能计算机与应用 2021年8期
薛 斌,胡建鹏
(上海工程技术大学 电子电气工程学院,上海 201620)
0 引言
C 语言是高校中工科专业的必修基础课程,也是国际上广为流行的高级程序设计语言。在C 语言程序设计课程中,考核学生知识掌握程度的重要手段之一就是对编程能力的考察,学生只有通过大量的上机代码实践,才能更好地理解C 语言程序的精髓。目前,高校普遍采用线上系统对C 语言编程题进行上机考试,但此类系统大多仅有通过与错误两种运行结果。只关注程序运行的结果,而忽视程序本身,这既不能合理地考察学生对知识的掌握程度,也不能让学生得到及时有效的反馈。为了对运行结果异常以及不能运行的学生程序进行评分,教师仍需要把学生编写的答案打印出来,进行人工评分,不仅效率低下,而且评分结果可能会受到阅卷老师的主观因素影响。
本文结合动态检测与静态分析策略,设计了一种新型的C 语言自动评分方法,并将该方法融合到线上实验系统中。首先,进行动态检测,利用KMP算法执行关键字匹配,若匹配相似度落入预期值区间,再将学生程序代码转换为可执行文件,通过预先设置的测试用例来驱动评分。若关键字匹配未通过、程序无法运行以及运行期间出现异常,则进行静态分析,对学生源程序代码和模板程序代码进行标准化,通过控制结构子树的匹配相似度来综合评分。
1 动态检测方案设计
基于动态检测的自动评分方法属于软件自动化测试方法[1],其核心的检测步骤如下:预先设置好测试用例作为输入数据;……
登录APP查看全文
