在方法的输出上挂钩编译器/ Hook(C# - c ++)

时间:2011-03-02 17:14:17

标签: c# c++ compiler-construction hook compare

好好开始告诉你我该做什么。

我必须制作一个程序,以便学生可以从练习中上传一些C ++代码。这个上传的代码需要与该练习中的“最佳代码”进行比较。从这些比较中,如果学生上传了好的或坏的代码,服务器会给出一些反馈。 EG:练习是从1到10制作一个arraylist,所以学生可以上传他的代码。然后,服务器将其与其他一些代码进行比较并提供反馈。

这是easyer说完,因为它不能只是一个文件比较器,因为用户可以编码不同的变量。这就是我为什么要使用外部编译器来获取一些输出并将此输出与“最佳代码”的输出进行比较的原因。或者更详细的是在编译器中获取一个钩子,这样我就可以检查每个方法和每个变量。

或者其他任何想法我如何检查或比较? 或者已经存在一个程序?

非常感谢, 迈克尔

2 个答案:

答案 0 :(得分:0)

有些系统评估整个程序的输出(如ejudge,它被用作竞赛系统),在我看来,它更容易使用它们,因为在程序代码上指定条件本身并不是一项微不足道的任务(如果你的学生正在编写非平凡的课程)。 您可以使用ACSL等正式规范语言来设置输入和输出条件,并证明程序正常工作。

答案 1 :(得分:0)

通过测试针对某些自动化测试的行为来评估代码可能更实际,例如边界测试套件(如果您希望事情变得令人兴奋,甚至是突变测试),然后寻找奇怪的实现或有趣的体系结构查看代码度量,如函数数量,代码行数,编译大小等。

这种方法可扩展性更高,并且有很多免费工具,特别是对于c ++和java来说,很容易设置自动化测试系统。

比较代码以确定正确性不一定是正确的方法,具体取决于它是如何完成的,并且很难扩展。