基于语法结构的源代码搜索的研究.pdf

基于语法结构的源代码搜索的研究.pdf

ID:52354162

大小:798.02 KB

页数:5页

时间:2020-03-26

基于语法结构的源代码搜索的研究.pdf_第1页
基于语法结构的源代码搜索的研究.pdf_第2页
基于语法结构的源代码搜索的研究.pdf_第3页
基于语法结构的源代码搜索的研究.pdf_第4页
基于语法结构的源代码搜索的研究.pdf_第5页
资源描述:

《基于语法结构的源代码搜索的研究.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、l学术探讨蓉金项目2013年第5职基于语法结构的源代码搜索的研究黄丽韶(湖南科技学院,湖南永州425100)[摘要]现有的源代码搜索引擎大都是基于文本的搜索,没有利用代码在语法上的特性,因此在搜索准确性方面受到极大的限制。本文从语法结构角度,提出一种源代码的过滤方法,构造基于语法结构的代码过滤器,从而抽取对搜索有用的信息。通过该方法实现了一个基于语法结构的源代码搜索引擎。实验表明本文所建立的源代码搜索在搜索准确度、搜索结果展示的友好性方面都有改进。[关键词]源代码搜索;Lucene;抽象语法树;语法分析;代码爬虫;H

2、eritrix1.背景和意义在软件行业中,开源运动蓬勃发展,网络上出现了越来越多的开源代码。全球最大的开源软件开发平台和仓库SourceForge.net已经收集了448.706个开源项目。在搜索领域,大量的开源代码为源代码的搜索提供了原始的数据集。源代码搜索引擎自通用的搜索技术发展而来,它是从互联网上搜索源代码,对源代码进行组织和处理,最后将与用户检索相关的源代码展示给用户的系统。该系统的应用背景和意义主要有两个方面:一方面,由于软件复用有助于大大减少开发时间,改进质量,降低成本【-1,软件复用已经成为软件开发工作

3、的重要部分[2】。要实现软件复用,必须在浩瀚的代码库中找到复用代码,找到以后,程序员还要去查找相关的代码学习如何复用。大型的商业化源代码搜索引擎Koders.com[3]的统计数据显示:每天有超过30,000个开发者使用Koders.tom搜索超过1亿行的代码。另一方面,作为程序语言的学习者,当需要理解代码、学习代码的编写和使用时,经常找来已有的代码实例进行学习,这时,也会使用源代码搜索引擎查询相关的代码。综上所述,当程序员、计算机语言学习者要复用和学习代码时,就需要在网络上大量的开源软件中找到相关的源代码,而源代码

4、搜索引擎就可以实现查找相关代码的功能。2.国内外研究现状2.1商业型的源代码搜索引擎网站目前比较流行的源代码搜索引擎网站主要有GoogleCS[41,Koders.com[”,Krugle.com[51等,它们跟通用的搜索引擎一致,可以搜索到包含查询关键字的源文件[叼,是基于文本的搜索。我们通过分析现有流行的源代码搜索引擎网站的功能、原理、界面特点、查询方式、返回的摘要内容与形式等,将用户在使用这些搜索引擎的时候存在的主要问题总结如下:作者简介:黄丽韶,女,湖南永州人,硕士,助教。研究方向:软件工程。基金项目:湖南科

5、技学院科学研究项目,项目编号:12XKYTB004。一30一第一,这些源代码搜索跟通用的搜索引擎一样,是基于文本的搜索,由此引起的搜索缺馅包括:首先,不能区分方法的实现代码与方法的调用代码。比如,假定用户要查找名为substring的方法定义,在GoogleCS中输入“substring”,首页显示了10个结果,有7个相关的方法定义,3个相关的方法调用。其次,当用户在搜索某个类、某个包的时候,并不会将用户输入的关键字看作是一个类或者一个包,而是将包含该类名或者包名的所有源代码返回给用户,这样返回的结果的数量是非常大的

6、。用户要在大量的结果中找到关键字所表达的类名或者包名所在的代码是非常耗时的。比如,假定用户要查找名为ElementFilter的类,在Koders.tom中输入“ElementFilter”,返回的结果中包含82个相关的类的定义,70个相关的方法定义。这70个方法的定义就不是我们的目标代码。实际上,Koders.tom没有实现相似代码的检测、聚类,所以返回的类的定义中包含大量的克隆代码。最后,注释里面包含搜索关键字的源代码也会返回给用户。注释是描述性的文字,它很可能跟搜索的目标毫无关系。比如,假定用户要查找merge

7、sort的方法定义,在Koders.tom中输入关键字“mergesort”,注释中包含该关键字的结果也会返回给用户。我们打开返回的第二个结果MergeState.iava文件,查看具体的代码内容,发现仅有注释中的一处有“mergesort”这个关键字,而此处的mergesort只是一个描述性的词,与“mergesoa”本身没有关系。所以,源代码搜索引擎不同于通用的搜索引擎,不能按照文本进行索引、搜索,要考虑到用户在进行源代码搜索时表达的搜索目标,应在源代码语法语义上进行搜索。第二,搜索界面一定程度上能够帮助用户表达

8、搜索的目标,但流行的这些源代码搜索引擎的搜索界面比较单一,没有提供一定的输入模式。比如,当用户想要查找某个包中的某个类,或者查找某个类中的某个方法时,用户无法在这些搜索界面表达这样的预期目标。第三,通过读取结果摘要来判定源文件是否是自己需要的目标代码相比逐个地打开链接查看源代码进行判定要节省大量的时间。但这些源代码搜索引擎返回的结果摘要主要是关

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。