一、在线评测系统中可识别的代码结果:
Accepted 代码通过测试Compile error 代码无法编译Time Limit Exceeded 程序运行超出时间限制Memory Limit Exceeded 程序运行超出空间限制Wrong Answer 程序运行正常,但结果显示错误Runtime Error 程序运行时崩溃Output Limit Exceeded 程序输出达到被允许的上限二、代码自动修复:
情景:代码运行成功但结果错误
目的:
在线评测系统可自动定位用户代码的错误位置计算出对应的错误修复方案提示错误位置或提供修复方案启发性或智能化地为用户提供反馈信息三、代码自动修复技术的子任务:
对错误进行分类对代码的错误进行定位对代码错误进行修复四、代码修复:
(一)思路
用正确的代码做参考(正确代码有多个,假设时错误可能多样化,但正确的代码思路往往较为接近,对于一份错误代码,总能找到与之类似的正确代码,并以此正确代码为模版对错误进行修复)代码语法层面的精细分析(在第一点的基础上,由于不同人的代码有一定差距,修复时需要进行语法层面的精细分析,如统一变量名)(二)方法
将错误代码与其他人提交的所有正确代码进行语法分析,确定相似程度选出与之最相似的正确代码为模板,将两份代码变量名的使用进行统一对两份代码的差异,从抽象语法树的层面分析要做的修改对与错误无关的代码修改进行删除。最后得到对修改错误必要的修复方案,即做很小的改动可以将其修复。
