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

来源 :南京大学 | 被引量 : 0次 | 上传用户:woshixiaomihu
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着互联网的普及与流行,以及“开放共享”观念的深入人心,越来越多的人愿意在互联网上分享他们的代码。目前,互联网上的开源代码量正以指数规模增长,如果这些代码能被很好地利用,软件工程的很多领域将会因此受益。然而,目前主流的代码库都是以文本方式存放代码,忽略了代码的内部结构,查找代码的方式也仅仅局限于关键字搜索,这不足以使用户充分理解这些代码。代码查询是帮助理解代码的一种有效方法。代码查询技术通常包括三个步骤:信息抽取、查询、以及结果显示。本文提出了一种新的代码存储方法,这种方法以图为基本结构,存储于图数据库Neo4j中,并适用于目前非常主流的Java语言程序。本文主要关注于代码查询的信息抽取步骤,同时本文也涉及部分与查询和结果显示相关的内容。本文方法保证了足够细的代码存储粒度,结合Neo4j提供的查询语言Cypher,用户可以方便地设计并实现查询算法。本文的主要贡献如下:本文设计了一种针对Java语言程序的基本存储模式。这个存储模式以语法树为基础;为类型、方法、变量引入全局唯一的键节点,解决了同名问题;合并冗余图节点,缩小了图数据的规模。同时,本文还提出了一种增量式的扩展存储模式的方法,并实现了几种常用的扩展:调用、范化实现、关联。本文提供了一系列原型工具来支持对Java代码的存储和查询。本文实现了代码存储插件。它支持自动化的Java代码向基本存储模式的转换。同时,这个工具还支持对基本存储模式的相关扩展。本文还实现了数据库查询及显示插件。查询插件的主要功能是提供Cypher语言的编辑环境。显示插件的主要功能是支持图形化的查询结果显示。本文对九个大规模开源Java工程进行了实验,并评估了Neo4j数据库的代码存储能力、以及代码转换为基本存储模式后需要的存储空间。本文还给出了几个实际查询的示例来说明本文工作的广泛应用场景,包括度量指标的计算、目标类型的查找、以及工程中的循环调用情况。
其他文献
信息时代的到来对信息发布系统提出了新的要求,而传统技术下的信息发布系统却存在着效率代、兼容性差、扩展性差等缺点.CORBA(通用对象请求代理结构)规范作为新一代分布对象
随着信息技术的飞速发展,计算模式从自组织的大型处理机逐渐演变成按需处理的云计算。越来越多的大型公司开始为租户提供迁移服务和应用到公共云平台的机会,如亚马逊,微软,谷
该文首先概述了成本核算的基本方法,然后针对半导体厂的实际核算管理要求提出了一种新的综合成本核算算法,它以分步核算为基础,同时根据引进流程定额兼顾了品种和批次,考虑了
首先,该文从对网络QoS的定义开始,对QoS参数作了全面的论述.传统IP网络只提供一种QoS,就是"尽力而为"的数据服务.以往的应用在这个服务之上能够很好地工作也取得了巨大的成功
集群中的节点由于其硬件配置不同导致其性能不同,使得集群环境成为异构环境。然而,在以Hadoop为代表的MapReduce实现中并没有充分考虑到环境的异构性,致使节点的负载不能与其