基于NRefactory的冗余检测与缺陷研究

VIP免费
3.0 侯斌 2024-11-19 4 4 1.14MB 65 页 15积分
侵权投诉
NRefactory
摘 要
随着 IT 技术在各个行业的迅猛发展,各类软件已成为人们工作中不可或缺
的有效工具。随之而来,软件缺陷所导致的问题也越来越多,其中有些软件缺
陷导致的后果十分严重。然而长期以来,开发者对于软件中的冗余代码重视程
度不高,认为它们不会对程序造成太大的危害。但研究证明,冗余代码和软件
缺陷有很紧密的关系,通过寻找冗余代码,可以有效排除软件缺陷。
综合国内外研究,本文将冗余分为七类:类冗余、方法冗余、变量冗余、
传参冗余、幂等隐幂等代码冗余、死代码冗余和条件冗余,同时,分析了这七
类冗余和对应的软件缺陷。本文主要做了如下四个方面的工作 1)研究每种冗
余产生的原因,同时给出了每种冗余的代码示例,并根据示例中的代码特征对
余进一步类。2于上述研,使用第方库 NRefactory 分析 C#
成抽,给NRefactory 码检3计一
冗余与软件缺陷关联的检测器 OORC-DD (Object Oriented Redundant Code
Defects Detector)4)使用 OORC-DD 对两个项目进行冗余检测,实证本文提出的
冗余与软件缺陷的关联关系。
后,本文使OORC-DD 对项目中冗余代码行了人工阅,分析
证明:冗余和软件缺陷之间存在关联,通过检测冗余可以追踪软件缺陷;使用
OORC-DD 可以有效排除软件中隐藏的部分缺陷。因此,OORC-DD 对于提高软
件可靠性和排除软件缺陷有一定的指导意义。
关键字:软件缺陷,冗余代码,NRefactoryOORC-DD
ABSTRACT
With the rapid development of IT technology in various industries, various types
of software has become an effective tool in daily life.Concomitantly, software defects
caused more and more problems, which lead to some software defects with very
serious consequences. But for a long time, the developer for the redundant code in
software attention degree is not high because they do not cause too much damage to
the program. But the research proves that there’s very close relationship to redundant
codes and software defects.We can effectively eliminate software defects by finding
redundant code.
This paper synthesizes the domestic and foreign research, divides redundancy
into seven categories: redundant class, redundant method, redundant variable,
redundant parameter, redundant idempotent and hidden idempotent code, dead code
redundancy and condition redundancy. At the same time, the paper analyzes
the defects of the seven kinds of software redundancy and the corresponding. This
article has mainly done the following four aspects of work: 1) Studying the causes of
each redundancy, giving each redundant code examples and extracting redundant code
characteristics according to the classification of defects. 2) Analyzing the C# source
code by using third party library NRefactory based on the above research, generating
an abstract syntax tree and giving redundant code detection algorithms based on
NRefactory. 3) Developing OORC-DD (Object Oriented Redundant Code - Defects
Detector) to find out redundancy and software defect correlation. 4) Using OORC-DD
redundancy detection on the two projects, proving the correlation relationship
between redundancy and software defects in the paper.
Finally, this paper uses RC-Detector to artificial review for redundant code in
several projects, after analysis, we prove that: there is a correlation between
redundancy and software defect; through the detector can effectively find the part of
hidden bugs in the software system. Therefore, RC-Detector for improving software
reliability and troubleshoot software defects have certain guiding significance.
Keywords: Software defect, Redundant code, NRefactory, OORC-DD
目 录
中文摘要
ABSTRACT
第一章 绪论......................................................1
1.1 课题研究的目的及意义.......................................1
1.2 国内外研究现状.............................................2
1.2.1 国外研究现状..........................................2
1.2.2 国内研究现状..........................................2
1.3 本文研究的主要内容.........................................3
1.4 章节安排...................................................4
第二章 NRefacorty 技术介绍........................................5
2.1 NRefactory 简介.............................................5
2.1.1 使用 NRefactory 构造抽象语法树..........................6
2.1.2 使用 NRefactory 构造类型系统............................8
2.1.3 使用 NRefactory 进行语义分析............................9
第三章 冗余代码缺陷关联分类.....................................11
3.1 类冗余缺陷关联分类........................................11
3.2 方法冗余缺陷关联分类......................................12
3.3 变量冗余缺陷关联分类......................................14
3.4 传参冗余缺陷关联分类......................................16
3.5 幂等和隐幂等冗余缺陷关联分类..............................17
3.6 死代码冗余缺陷关联分类....................................19
3.7 条件冗余缺陷关联分类......................................21
第四章 OORC-DD 模块设计与实现.................................24
4.1 OORC-DD 模块设计........................................24
4.1.1 读入模块.............................................24
4.1.2 冗余检测模块.........................................28
4.1.3 处理展示模块.........................................29
4.1.4 冗余结果展示模块.....................................31
4.2 OORC-DD 数据库设计......................................32
第五章 冗余检测算法研究.........................................36
5.1 类冗余检测算法............................................36
5.2 方法冗余检测算法..........................................36
5.3 变量冗余检测算法..........................................39
5.4 传参冗余检测算法..........................................40
5.5 幂等和隐幂等冗余检测算法..................................41
5.6 死代码冗余检测算法........................................42
5.7 条件冗余检测算法..........................................46
第六章 实验结果与分析...........................................48
6.1 OORC-DD 的设计与实现....................................48
6.2 冗余检测与缺陷实证........................................49
6.3 冗余注入实验及分析........................................52
6.4 对检测出的坏味级冗余的分析................................53
3
第七章 总结与展望................................................54
参考文献:.......................................................55
4
第一章 绪论
第一章 绪论
1.1 课题研究的目的及意义
随着 IT 技术在各个行业的迅猛发展,各类软件已成为人们工作中不可或缺的
有效工具。随之而来,软件缺陷所导致的问题也越来越多,其中有些问题导致
后果分严,比如阿丽亚5火箭于代码重用导的发失败[1]Therac-
25 治疗由于代码缺陷导致的超标致死[2]2002 国国
与技术研究所的一项研究,软件缺陷给国每造成的失高595 亿
,而1/3 过软件检测的避免[3]
软件测对提高代码具有的意[4]。通常情下,件缺
和代码缺陷的优化由开发工来成,效率较低,而很大程度上
于开发人验,如果之验很有可会导致代码更加混乱
[5]
随着软件度的断增人工检测由于工作量大和思维
局限证其可靠性。因此,软件缺陷检测工具逐渐来,人们
识到,这些缺陷检测工具的使用便快且能高效帮助开发人
排 除 些缺陷。下面一些比较著名的软件缺陷检测工具,如
PMD[6] CheckStyle[7] FindBugs [8] PMD JavaJavaScript,
XML, XSL 源代码中在的用变量、重性代码、switch-case
CheckStyle 可以Java 开发员遵循编规范,如名约定、类设计、空白
码块等,同时可以检测如过长参数、过大类、过长数等代码缺陷;
FindBugs 可 以 检 class 件 和 JAR 文 件 , 将 字 节 码 与 缺 陷 式 ( bug
patterns)进行对比来发现代码缺陷[9]
总结后发现,这些工,然而这些检测器对代码冗余类型的缺
陷检测并不完善,除了变量冗余外,其余类型的冗余检测。
冗余代码未被使用的代码,从表,冗余代码的只影响了程
的可读性,对产生。但,软件中的每行代码为了
个目的而存在的,因此,冗余代码的出现本能暗示着件缺陷。因
为冗代码有可能是下原导致1.逻辑的考2.需求
的不断改3.开发维护这些问题的出现,严重软件的可靠性
因为BUG 有可出现在存在冗余的代码块中。
由上,冗余代码块在代码缺陷。通过冗可以追踪一
些比基本语法层次错误如算法设计问题、判断逻陷等,所以冗
的检很大程度上来可以软件的可靠性。一个可靠的、成软件不
多冗余代码的存在有一理的软件,开发人员逻辑混
会导致冗余代码的大量产生。
课题将寻找特定冗余与软件缺陷之间的存在关系,并根据这些关系,设计冗
余检测工具追的软件缺陷,而进一步软件量,增加软件的可靠
性。
1
理工大学硕士学位论文
1.2 国内外研究现状
,国内外代码缺陷的研究很大一部分着重于代码、代码坏味
对于软件开发中的冗余代码检测仅仅停留在简变量冗余,冗余之类,
有很入、很面的对冗余代码进行分类和致检测。
1.2.1 国外研究现状
国外Brenda S. Baker 1995 设计研发了 The Dup system 软件中
的冗余代码,采取文本分析法[10],原理为逐句的比所有源代码
,找出相似的重性代码。Verco Wise 1996 年采取了一种基于度量的方
[11]来寻找冗余代码,其主要原理将源代码分类定量后进行分析,进而找
Ira D.Baxter 1998 Clone Doctor
[12],其主要原将源代码析为抽象语法树,对语法树每个树进行比来检
测冗余代码。Krinke, J.2001 使用了基于语义的分析法[13],其主要原理是利
抽象的程序语义来对代码进行检LeiTao 04 年运用结合语义和语法的分析法
[14]C中的冗余进行了检测,本课题使用 NRefactory 结合语义和语法对 C#
中的冗余进行了检测。
在研究如测冗余的同时,国者也将冗余和代码缺陷、软件错误联系
在了Yichen Xie Dawson Engler 2003 中提出,余代块中
隐藏着代码错误和软件缺陷[15]们通过linux 源代码中的冗余代码分析
其中是否蕴了软件缺陷,最后用大量冗余和缺陷关联的数据证明了代码中冗
和缺陷存在然联系。因此高效检测冗余,冗余些软件缺陷的关
系十分有要,对于软件可靠性本有着很大的意义。
近年来,冗余的检除越来越受到重视,如文献[16-18]中提及
将冗余代码检各个如在软件专利方面,通过冗余的重
进行专利是[16];在 PHP 开发中,通过除死代码冗余的其中一种
分类)来提高网站定性 [17];在系统优化方面,通过除死代码来提高性[18]
等。人们越来越重视软件冗余,究其根本原因冗余后隐藏多的软件
值得我重视。这个趋势看,冗余检测在软件检测方面将不可或缺。
1.2.2 国内研究现状
哈尔工业研究冗余代码检测[19]上有出成果,但其代码只针C
其最究成RC-Finder 自动测工具可C言编程中
的以下六种情况行冗余代码检测。:幂等、冗明、代码、冗
条件分、隐幂等和冗余传参。的方法主要1)将源代码通过
析生TOKEN 流(2定的代码标准3行六冗余
检测。
由于哈尔滨工业大所研究的冗余代码检测础科课题的一部分,
源代获得,但者们的论文[20]们研究的方逻辑
余部分,情况,人为思维上的冗余。由此可,这六部分检测研究
有很大的间。
2009 年左右计算机学院沈刚罗军位学者提出了基于依赖
XML 测算[22]主要schema XML
模型,并基于此模型设计一种XAP 算法,其研究成果可有效发现 XML
中的依赖和冗余,并对算法的复杂性进行分析。
2
摘要:

基于NRefactory的冗余检测与缺陷研究摘要随着IT技术在各个行业的迅猛发展,各类软件已成为人们工作中不可或缺的有效工具。随之而来,软件缺陷所导致的问题也越来越多,其中有些软件缺陷导致的后果十分严重。然而长期以来,开发者对于软件中的冗余代码重视程度不高,认为它们不会对程序造成太大的危害。但研究证明,冗余代码和软件缺陷有很紧密的关系,通过寻找冗余代码,可以有效排除软件缺陷。综合国内外研究,本文将冗余分为七类:类冗余、方法冗余、变量冗余、传参冗余、幂等隐幂等代码冗余、死代码冗余和条件冗余,同时,分析了这七类冗余和对应的软件缺陷。本文主要做了如下四个方面的工作1)研究每种冗余产生的原因,同时给出...

展开>> 收起<<
基于NRefactory的冗余检测与缺陷研究.doc

共65页,预览7页

还剩页未读, 继续阅读

作者:侯斌 分类:高等教育资料 价格:15积分 属性:65 页 大小:1.14MB 格式:DOC 时间:2024-11-19

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 65
客服
关注