您好,  [请登录]   [免费注册]

浏览记录

   
查看大图

代码复制检测软件研发

  • 商品编号:asp.net792
  • 货  号:asp.net792
  • 品  牌:jgyc
  • 开发语言: asp.net
  • 数据库: mssql
  • 编程工具/运行环境: Visual Studio
  • 市场价: ¥300.00
  • 销售价: ¥200.00
  • 节省: ¥100.00

需要这份设计请联系QQ303563675:点击这里给我发消息

app hook

1.研究基本内容:

   本次研究在前人已有的基础上,主要做以下几方面工作:

   1)通过深入研究现在已有的代码重复性检测算法,深入了解代码抄袭检测的难点和要点。其中代码相似度阈值选取直接影响检测精度——阈值过大易导致遗漏抄袭,或者仅需要通过简单修改即可躲过检测;阈值过小易导致误判,加大人工作业量。同时,程序规模对阈值的确定也有着较为重要影响,例如在1000行代码中,有400行为相同代码,那么可以认为抄袭嫌疑较大,但相似度仅为0.4。因此,如何提高检测准确率和运行效率是重要解决问题;

   2)深入研究XML语言,为实际开发打下基础;

   3)确定整个检测算法基本工作原理:将C代码中的语句属性存储为具有结构性的XML文本的标记字符串,针对文本每行不同的标记调用不同的相似值计算函数以计算XML文本行的相似值,最后根据各行相似值计算程序相似度。同时,通过各个文本的标记属性与字符串匹配算法相结合,提高系统运行效率。

2.拟解决主要问题:

   1)确定整个算法设计流程,大致为:C代码转换为XML文本;关键结构识别;以关键结构为基础分别计算每个XML文本行的相似值;根据各个文本行相似值计算程序对相似度。

   2)选择合适的相似度计算算法:由于XML文本的结构特征,需要将关键结构分类以按行计算相似值。C程序的关键结构主要分为以下几类:变量定义、指针、结构体、宏定义、函数调用、函数声明、循环结构、条件结构。不同的关键结构应对应相应的相似度计算函数。以循环结构为例:循环结构抄袭行为可以大致列为以下几点:(1)for-whiledo-while之间的互相替换;(2)for循环语句中的第一表达式放到for循环之前;(3)for循环语句中的第三表达式放至for循环语句体的最后;(4)重命名循环体判断标示符;(5)循环语句体代码块重排序;(6)增加注释(7)语句等价替换,如i++换为ii+1等;(8)循环语句体中增加冗余结构。针对循环结构应有对应计算函数,不同于其他结构体。

   3)C代码转换XML文本:利用XML语言的结构性较强,把C语言程序中关键结构转化为对应的XML文本,以此文本作为抄袭检测的计算输入。转换主要通过以下三个步骤:代码格式化;关键结构的正则匹配;XML文本构建。在XML文本构建过程中,要保证能够提取出已发生抄袭的关键结构,例如:变量类型,函数类型,函数名,变量个数等。在XML文本中将C程序中的关键结构以不同XML元素标记,例如用function_call代表程序调用函数节点等,以此调用相对应的函数计算相似值。

   4)相似度阈值确定:由于代码复杂程度和规模不同,阈值确定极为关键,特别对于初学C语言程序设计的学生,以下问题都可能导致学生间作业出现一定的相似性:学生在相同老师教学下有着相似的编程风格;完成作业时参考同一本教材或参考书等。所以阈值选定应由测试代码的编写者编程熟练度、代码规模、代码复杂难易度多方面决定。

三、研究步骤、方法及措施:

1.研究步骤

(1)需求分析

本次研究的C语言代码抄袭检测系统,除了可以直接拷贝两份程序代码进行单独比较外,也可以录入一系列的TXT文件,进行两两之间的比较,方便快捷。同时,由于考虑到以辅助教学为主,还支持教师自行改变相似度阈值,以便更加灵活的根据不同难度、规模的程序进行调节。

在输入上,不仅支持单独输入两份进行对比,还支持对一系列的文件间进行两两对比。

在精度上,由于先将C语言转化成更加结构化的XML文本,同时通过不同的结构特征进行分行,分别计算相似度,再计算程序对的相似度,使其精度大大提高,减少了误判、漏判的可能性。

在时效上,应优化逻辑设计,减少冗余代码,使系统运行效率高,反映速度快。

程序应健壮性好,具有良好的容错机制,运行不容易崩溃。

(2)设计概要

    程序主要分为以下几个模块:输入,程序关键结构提取,C程序转XML文本,XML文本行相似值计算,程序对相似度计算,相似度输出。

    输入数据时可选择文本输入和批量文件输入,同时可以选择是否改变相似度判断阈值还是使用默认阈值。然后进入C程序转换XML文本模块,对输入的文本或文件进行数据预处理,预处理主要应包括:将包含多语句的代码行转化为每行一句;对循环结构和选择结构语句不包含成对括号且仅包含一句语句的,添加成对括号;删除代码中注释语句;删除代码中冗余空白字符并将制表符转为单空格。通过这种代码格式化标准化C代码,即能检测出通过简单拷贝和修改注释等简单抄袭手段,也能大大提高转化XML文本的有效性,减少遗漏率。随后在转换为XML文本后对关键结构进行特殊标记。然后进行计算模块,对各个关键行带入各自相似值计算函数,并最后得出程序对的相似度并与设定阈值比较。最后通过输出模块显示出直观结果。

(3)平台选择

    选择用C#来编写本软件,C#是微软公司结合C/C++JAVA等语言特点设计的一种心得程序设计语言,可以快速地编写各种基于Microsoft.NET平台的应用程序。


如果您对本商品有什么问题,请提问咨询!

发表咨询

标题:
*咨询内容:
联系方式: (可以是电话、email、qq等)
*验证码:   看不清楚?换个图片
如果您对本商品有什么评价或经验,欢迎分享!

发表评论

标题:
*评论内容:
联系方式: (可以是电话、email、qq等).
*验证码:   看不清楚?换个图片