当前位置:主页 > 科技论文 > 软件论文 >

一种基于图结构的Java代码存取方法

发布时间:2017-06-08 05:03

  本文关键词:一种基于图结构的Java代码存取方法,由笔耕文化传播整理发布。


【摘要】:随着互联网的普及与流行,以及“开放共享”观念的深入人心,越来越多的人愿意在互联网上分享他们的代码。目前,互联网上的开源代码量正以指数规模增长,如果这些代码能被很好地利用,软件工程的很多领域将会因此受益。然而,目前主流的代码库都是以文本方式存放代码,忽略了代码的内部结构,查找代码的方式也仅仅局限于关键字搜索,这不足以使用户充分理解这些代码。代码查询是帮助理解代码的一种有效方法。代码查询技术通常包括三个步骤:信息抽取、查询、以及结果显示。本文提出了一种新的代码存储方法,这种方法以图为基本结构,存储于图数据库Neo4j中,并适用于目前非常主流的Java语言程序。本文主要关注于代码查询的信息抽取步骤,同时本文也涉及部分与查询和结果显示相关的内容。本文方法保证了足够细的代码存储粒度,结合Neo4j提供的查询语言Cypher,用户可以方便地设计并实现查询算法。本文的主要贡献如下:本文设计了一种针对Java语言程序的基本存储模式。这个存储模式以语法树为基础;为类型、方法、变量引入全局唯一的键节点,解决了同名问题;合并冗余图节点,缩小了图数据的规模。同时,本文还提出了一种增量式的扩展存储模式的方法,并实现了几种常用的扩展:调用、范化实现、关联。本文提供了一系列原型工具来支持对Java代码的存储和查询。本文实现了代码存储插件。它支持自动化的Java代码向基本存储模式的转换。同时,这个工具还支持对基本存储模式的相关扩展。本文还实现了数据库查询及显示插件。查询插件的主要功能是提供Cypher语言的编辑环境。显示插件的主要功能是支持图形化的查询结果显示。本文对九个大规模开源Java工程进行了实验,并评估了Neo4j数据库的代码存储能力、以及代码转换为基本存储模式后需要的存储空间。本文还给出了几个实际查询的示例来说明本文工作的广泛应用场景,包括度量指标的计算、目标类型的查找、以及工程中的循环调用情况。
【关键词】:Neo4j 代码存储 代码查询 开源 Java
【学位授予单位】:南京大学
【学位级别】:硕士
【学位授予年份】:2016
【分类号】:TP312.2
【目录】:
  • 摘要4-6
  • Abstract6-14
  • 第一章 绪论14-20
  • 1.1 研究背景与动机14-15
  • 1.2 本文工作15-17
  • 1.3 论文结构安排17-20
  • 第二章 背景与相关工作20-32
  • 2.1 代码查询技术20-24
  • 2.1.1 信息抽取20-22
  • 2.1.2 查询22-24
  • 2.2 Neo4j数据库24-27
  • 2.2.1 图数据24-26
  • 2.2.2 Cypher26-27
  • 2.3 Eclipse插件与Eclipse JDT27-30
  • 2.3.1 Eclipse插件27-28
  • 2.3.2 Eclipse JDT28-30
  • 2.4 本章小节30-32
  • 第三章 基本存储模式与存储模式扩展32-46
  • 3.1 基本存储模式32-40
  • 3.1.1 语法树33-35
  • 3.1.2 键值的引入35-37
  • 3.1.3 图节点的合并37-40
  • 3.2 存储模式扩展40-45
  • 3.2.1 调用关系41-42
  • 3.2.2 范化实现关联42-45
  • 3.3 本章小节45-46
  • 第四章 Java代码存取方法的实现46-58
  • 4.1 语法树向基本存储模式的转换46-52
  • 4.1.1 语法树遍历框架46-47
  • 4.1.2 图节点存储47-50
  • 4.1.3 工程存储50-52
  • 4.2 查询语句实现的存储模式扩展52-54
  • 4.3 查询语言54-56
  • 4.4 本章小结56-58
  • 第五章 工具平台与实验评估58-70
  • 5.1 工具平台58-59
  • 5.2 工具演示59-62
  • 5.2.1 代码存储插件59-61
  • 5.2.2 代码查询和结果显示插件61-62
  • 5.3 实验评估62-69
  • 5.3.1 实验对象62-63
  • 5.3.2 Neo4j数据库的存储能力评估63-66
  • 5.3.3 存储空间消耗评估66-69
  • 5.4 本章总结69-70
  • 第六章 实例应用70-76
  • 6.1 度量指标计算70-72
  • 6.1.1 继承深度计算70-71
  • 6.1.2 直接子类数计算71-72
  • 6.2 实例2:所有只有static final属性的类或接口72-73
  • 6.3 实例3:循环调用73-75
  • 6.4 本章小节75-76
  • 第七章 总结与展望76-78
  • 7.1 总结76
  • 7.2 展望76-78
  • 参考文献78-84
  • 附录84-92
  • 攻读硕士学位期间的科研成果92-94
  • 致谢94-95

【相似文献】

中国期刊全文数据库 前10条

1 ;书摘[J];程序员;2002年03期

2 杨浪;张涛川;;代码复用中的方法研究与应用[J];电脑知识与技术;2009年12期

3 魏峰;李银锁;;C#调用非托管代码[J];电脑编程技巧与维护;2013年04期

4 简勇;;团队开发中的代码复用浅谈[J];常州信息职业技术学院学报;2007年01期

5 陈林博;江建慧;张丹青;;利用返回地址保护机制防御代码复用类攻击[J];计算机科学;2013年09期

6 郭颖;陈峰宏;周明辉;;大规模代码克隆的检测方法[J];计算机科学与探索;2014年04期

7 李天盟;刘凤芹;;TML语言简介[J];软件;2013年11期

8 张蓝博;张善从;陈蔚薇;;嵌入式系统中的代码动态链接模型[J];计算机工程与设计;2008年16期

9 李葆华,霍有亮;适用于面向对象范型的代码复用技术[J];西北大学学报(自然科学版);2000年01期

10 何淼;崔松健;;一种基于随机文件的C#与非托管C代码交互模式[J];信息化研究;2011年02期

中国博士学位论文全文数据库 前1条

1 陈平;代码复用攻击与防御技术研究[D];南京大学;2012年

中国硕士学位论文全文数据库 前7条

1 于浩;Android平台JNI代码单元测试方法研究[D];西南交通大学;2015年

2 庄轶;绕开细粒度地址随机化的实时代码复用攻击框架[D];南京大学;2014年

3 朱晓倩;一种基于图结构的Java代码存取方法[D];南京大学;2016年

4 刘超;基于动态二进制翻译框架的代码复用攻击检测与防御[D];湖南大学;2012年

5 李建忠;重复代码检测技术的研究[D];汕头大学;2005年

6 邱慧风;基于关系复用的代码构建自动化的研究[D];南昌大学;2012年

7 周波;用代码缓存复用技术提升Android即时编译器效率[D];复旦大学;2012年


  本文关键词:一种基于图结构的Java代码存取方法,,由笔耕文化传播整理发布。



本文编号:431411

资料下载
论文发表

本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/431411.html


Copyright(c)文论论文网All Rights Reserved | 网站地图 |

版权申明:资料由用户97749***提供,本站仅收录摘要或目录,作者需要删除请E-mail邮箱bigeng88@qq.com