[发明专利]一种将源代码存入图数据库的方法在审
申请号: | 201410720349.2 | 申请日: | 2014-12-01 |
公开(公告)号: | CN104391964A | 公开(公告)日: | 2015-03-04 |
发明(设计)人: | 张天;朱晓倩;李宣东 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 江苏银创律师事务所 32242 | 代理人: | 孙计良 |
地址: | 210000 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 源代码 存入 数据库 方法 | ||
技术领域
本发明涉及软件工程领域中的程序分析以及数据库的操作。
背景技术
近年来,随着互联网的普及,网络中的各种数据呈现出爆炸性的增长,这其中也包括了在互联网中共享的开源代码。Sourceforge,Google code等开源代码库给了人们大量可供参考的源代码。如何从海量的代码中找到自己需要的内容,对代码库中的代码进行分析,越来越成为一种重要的需求。然而,目前大部分开源代码库只支持关键字检索,而检索的结果常常需要进一步进行筛选以确认是否是自己想要的的代码,这样的代码查询显然是低效而繁琐的。
代码并不仅仅是简单的文本,代码是有结构的,每种代码语言都有各自的语法规则,而这些规则正体现了代码中各个元素之间的关系。如果能够充分利用这些结构信息,将大大提高代码查询的效率,而最直接的想法就是构造一个新型的代码库来存放这些信息。
所有这些结构信息都能够使用实体以及实体之间的关系来表示,目前描述关系的数据库主要是关系型数据库。然而,代码中元素种类众多,元素之间关系复杂,这意味着想要完整记录代码结构信息需要数十个表,加上表与表之间的依赖关系(外键等),加大了对信息进行理解和操作的难度。此外,关系型数据库使用的二维表结构在处理高并发、海量的数据读写方面效率低下,扩展性差。因此,关系型数据库不能很好地满足用户的需求。
NOSQL数据库,也即非关系数据库,是近年来飞速发展的一类数据库。图数据是非关系数据库的一种,擅于处理高度关联的数据,Neo4j是目前最流行的图数据库。Neo4j使用的基本数据结构是图,主要涉及两类对象:节点和关系。其中,节点表示实体,每个节点可以拥有若干个属性来刻画实体信息,例如:(姓名:张三)表示节点有一个属性叫“姓名”,而属性的值为“张三”;关系对应于图中的边,可使用三元组<起始节点,关系类型,终止节点>来表征关系。每个关系都必须有唯一的类型,起始、终止节点表明关系的方向,同时关系也可以有自己的属性。Neo4j还支持给节点添加标签来将节点划分为不同的类别。Neo4j通过遍历来访问图中的节点和关系,图遍历执行的速度是常数(每秒遍历百万个关系),跟图的规模大小无关,极大地提高了性能。Neo4j拥有自己的查询语言Cypher,它是一种声明式语言,易于理解和学习。
JDT实际上就是Eclipse中提供的用于支持Java开发的一个插件,它提供了用户在Eclipse平台下进行Java语言开发的IDE。利用JDT,软件开发人员就可以在Eclipse工具中自由的编辑,编译,执行和调试Java程序。此外,JDT还提供了访问源代码编译过程中的中间结构的相关API,这个中间结构就是软件开发人员所熟悉的抽象语法树(AST)。对AST的利用可以使得对Java语言的源代码分析变得更加方便。软件开发人员在进行代码分析工作时就不再需要从Java源代码开始,先要通过词法分析、语法分析等获取代码结构信息,而是可以直接利用JDT的相关API获取相应代码的AST,并对AST中的信息进行分析工作。JDT所提供的AST除了具有数据结构严整,访问便捷,内容详细这些传统的抽象语法树的特性之外,还提供了对绑定等语义信息的支持,为面向Java语言的源代码的分析研究工作提供了很大的便利。
发明内容
本发明所要解决的问题是将源代码存入图数据库。
为解决上述问题,本发明采用的方案如下:
一种将源代码存入图数据库的方法,包括如下步骤:
S1:通过对源代码的静态语义分析,将源代码中的声明、语句和表达式生成节点,根据声明、语句和表达式之间的包含关系构建节点之间的关系;
S2:将生成的节点和节点之间的关系存入图数据库。
如权利要求1所述的将源代码存入图数据库的方法,其特征在于,所述将源代码中的声明、语句和表达式生成的节点根据源代码语法树上的节点定义。
进一步,所述步骤S1还包括将源代码文件生成节点,并根据源代码文件和源代码之间的关系构建节点之间的关系。
进一步,所述步骤S1还包括将多个源代码文件所组成的包生成节点,并根据包与源代码文件之间的关系构建节点之间的关系。
进一步,所述源代码为java代码。
进一步,所述的图数据库为Neo4j数据库。
本发明的技术效果如下:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410720349.2/2.html,转载请声明来源钻瓜专利网。