CN111177312A - 一种语法和语义融合的开源代码搜索方法 - Google Patents

一种语法和语义融合的开源代码搜索方法 Download PDF

Info

Publication number
CN111177312A
CN111177312A CN201911259608.5A CN201911259608A CN111177312A CN 111177312 A CN111177312 A CN 111177312A CN 201911259608 A CN201911259608 A CN 201911259608A CN 111177312 A CN111177312 A CN 111177312A
Authority
CN
China
Prior art keywords
source code
semantic
source
syntax
grammatical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201911259608.5A
Other languages
English (en)
Inventor
丁春玲
陆超泽
曾国荪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tongji University
Original Assignee
Tongji University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tongji University filed Critical Tongji University
Priority to CN201911259608.5A priority Critical patent/CN111177312A/zh
Publication of CN111177312A publication Critical patent/CN111177312A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/3332Query translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3344Query execution using natural language analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/338Presentation of query results

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Machine Translation (AREA)

Abstract

本发明涉及一种语法和语义融合的开源代码搜索方法,包括以下步骤:步骤S1:提取并过滤用户的搜索请求,对搜索请求进行预处理,形成符合语法和语义规范格式相应语法要求和语义要求;步骤S2:获取源代码的语法结构信息,与步骤S1的语法要求进行匹配,筛选出与语法要求匹配的有效语法源代码;步骤S3:分析有效语法源代码的语义特征,与步骤S1的语义要求进行匹配,将达到设定阈值的源代码作为有效语义源代码;步骤S4:进行源代码关键字匹配,获得相应源代码及其可信度估值,当源代码搜索结果的个数达到设定阈值时,将对应源代码搜索结果按可信度估值排序并回显至用户。与现有技术相比,本发明具有代码匹配精度高、搜索结果可靠性强等优点。

Description

一种语法和语义融合的开源代码搜索方法
技术领域
本发明涉及计算机软件开发领域,尤其是涉及一种语法和语义融合的开源代码搜索方法。
背景技术
目前在进行软件编程过程中,对于大量可以进行复用的开源代码进行搜索的方法集中在两个方面:一是在基于源代码语法的搜索,通过定义函数、结构体、类、接口等一系列通配符,对不同语言的语法集进行抽象形成代码模式自动机,然后通过解释器进行匹配,以此进行源代码语法匹配搜索;二是在基于源代码语义的搜索,用语义网络为源代码文本关键字建立近义词索引,并构建“自然语言源码定位”技术对源代码中的变量名称进行语义猜测,以此进行语义匹配搜索。
现有的软件代码搜索中,目前的技术多数只对语法、语义的其中一个方面进行开源代码搜索,使得搜索返回一系列混杂不相关的结果,造成程序员选择困难,以往方案普遍存在搜索精准度不佳的问题,代码复用重用率低,不能帮助提高软件开发的效率。
发明内容
本发明的目的就是为了克服上述现有技术存在的搜索精准度不佳、代码复用率低的缺陷而提供一种语法和语义融合的开源代码搜索方法。
本发明的目的可以通过以下技术方案来实现:
一种语法和语义融合的开源代码搜索方法,包括以下步骤:
步骤S1:提取并过滤用户的搜索请求,对所述搜索请求进行预处理,形成符合语法和语义规范格式的语法要求和语义要求;
步骤S2:获取源代码库中源代码的语法结构信息,与步骤S1的语法要求进行匹配,筛选出与语法要求匹配的有效语法源代码;
步骤S3:分析所述有效语法源代码的语义特征,与步骤S1的语义要求进行匹配,将匹配度达到设定阈值的源代码作为有效语义源代码;
步骤S4:根据所述有效语法源代码和有效语义源代码,进行源代码关键字匹配,获得相应源代码及其可信度估值,当源代码搜索结果的个数达到设定阈值时,将对应源代码搜索结果按可信度估值排序并回显至用户。
所述语法要求没有限制时,所述源代码库中任意源代码均为有效语法源代码。
优选的,若不存在所述有效语法源代码,则不执行步骤S3-S4。
所述语义特征包括输入、输出变量特征。
所述语义要求包括输入、输出要求。
优选的,所述可信度估值排序的方法为按可信度估值的数值大小从高到低排序。
优选的,所述可信度估值的范围为0~1。
所述源代码的语法结构信息储存在源代码库的索引库中。
与现有技术相比,本发明具有以下有益效果:
1.本发明充分利用源代码本身的语法和语义信息,细化用户的搜索请求,使用户的搜索请求与代码库中的源代码进行精确匹配。
2.本发明在进行关键字匹配过程中基于有效语义源代码和有效语法源代码进行搜索,提高了关键字匹配的搜索精度。
3.本发明通过设计可信度估值来标定源代码与用户搜索请求的关键字匹配结果,为大量搜索结果排序提供了可靠的依据,方便用户选择适合的源代码。
附图说明
图1为本发明的流程示意图;
图2为本发明用户搜索请求录入界面的示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
如图1所示,一种语法和语义融合的开源代码搜索方法,包括以下步骤:
步骤S1:提取并过滤用户的搜索请求,对搜索请求进行预处理,形成符合语法和语义规范格式的语法要求和语义要求;
步骤S2:获取源代码库中源代码的语法结构信息,与步骤S1的语法要求进行匹配,筛选出与语法要求匹配的有效语法源代码;
步骤S3:分析有效语法源代码的语义特征,与步骤S1的语义要求进行匹配,将匹配度达到设定阈值的源代码作为有效语义源代码;
步骤S4:根据有效语法源代码和有效语义源代码,进行源代码关键字匹配,获得相应源代码及其可信度估值,可信度估值的范围为0~1,当源代码搜索结果的个数达到设定阈值时,将源代码搜索结果按可信度估值排序并回显至用户。
语法要求没有限制时,源代码库中任意源代码均为有效语法源代码。
若不存在有效语法源代码,则不执行步骤S3-S4。
语义特征包括输入、输出变量特征;语义要求包括输入、输出要求。
可信度估值排序的方法为按可信度估值的数值大小从高到低排序。
源代码的语法结构信息储存在源代码库的索引库中。
如图2所示,用户在搜索请求录入界面中,录入“bubblesort array”作为关键词信息;录入“l:(l:(c:()))”作为语法要求,“l:(l:(c:()))”代表源代码是双重循环结构,内层循环中包含一个分支结构;录入“int*data,int size;void void”作为“输入/输出”语义信息,意为“操作对象是长度为size的整型数组指针data,且输出为空”。源代码搜索结果的个数的设定阈值为10个,源代码搜索结果如表1所示:
表1源代码搜索结果表
Figure BDA0002311257110000031
由表1可知,本次源代码搜索结果与Search Code中的原始排名进行比较,筛选出更符合用户搜索请求的源代码排序在靠前的位置,在源代码搜索精度上有较大幅度的提高。
此外,需要说明的是,本说明书中所描述的具体实施例,所取名称可以不同,本说明书中所描述的以上内容仅仅是对本发明结构所做的举例说明。凡依据本发明构思的构造、特征及原理所做的等小变化或者简单变化,均包括于本发明的保护范围内。本发明所属技术领域的技术人员可以对所描述的具体实例做各种各样的修改或补充或采用类似的方法,只要不偏离本发明的结构或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。

Claims (8)

1.一种语法和语义融合的开源代码搜索方法,其特征在于,包括以下步骤:
步骤S1:提取并过滤用户的搜索请求,对所述搜索请求进行预处理,形成符合语法和语义规范格式的语法要求和语义要求;
步骤S2:获取源代码库中源代码的语法结构信息,与步骤S1的语法要求进行匹配,筛选出与语法要求匹配的有效语法源代码;
步骤S3:分析所述有效语法源代码的语义特征,与步骤S1的语义要求进行匹配,将匹配度达到设定阈值的源代码作为有效语义源代码;
步骤S4:根据所述有效语法源代码和有效语义源代码,进行源代码关键字匹配,获得相应源代码及其可信度估值,当源代码搜索结果的个数达到设定阈值时,将对应源代码搜索结果按可信度估值排序并回显至用户。
2.根据权利要求1所述的一种语法和语义融合的开源代码搜索方法,其特征在于,所述语法要求没有限制时,所述源代码库中任意源代码均为有效语法源代码。
3.根据权利要求1所述的一种语法和语义融合的开源代码搜索方法,其特征在于,若不存在所述有效语法源代码,则不执行步骤S3-S4。
4.根据权利要求1所述的一种语法和语义融合的开源代码搜索方法,其特征在于,所述语义特征包括输入、输出变量特征。
5.根据权利要求1所述的一种语法和语义融合的开源代码搜索方法,其特征在于,所述语义要求包括输入、输出要求。
6.根据权利要求1所述的一种语法和语义融合的开源代码搜索方法,其特征在于,所述可信度估值排序的方法为按可信度估值的数值大小从高到低排序。
7.根据权利要求1所述的一种语法和语义融合的开源代码搜索方法,其特征在于,所述可信度估值的范围为0~1。
8.根据权利要求1所述的一种语法和语义融合的开源代码搜索方法,其特征在于,所述源代码的语法结构信息储存在源代码库的索引库中。
CN201911259608.5A 2019-12-10 2019-12-10 一种语法和语义融合的开源代码搜索方法 Pending CN111177312A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911259608.5A CN111177312A (zh) 2019-12-10 2019-12-10 一种语法和语义融合的开源代码搜索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911259608.5A CN111177312A (zh) 2019-12-10 2019-12-10 一种语法和语义融合的开源代码搜索方法

Publications (1)

Publication Number Publication Date
CN111177312A true CN111177312A (zh) 2020-05-19

Family

ID=70657265

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911259608.5A Pending CN111177312A (zh) 2019-12-10 2019-12-10 一种语法和语义融合的开源代码搜索方法

Country Status (1)

Country Link
CN (1) CN111177312A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11720346B2 (en) 2020-10-02 2023-08-08 International Business Machines Corporation Semantic code retrieval using graph matching

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063488A (zh) * 2010-12-29 2011-05-18 南京航空航天大学 一种基于语义的代码搜索方法
CN107992324A (zh) * 2017-12-22 2018-05-04 南京大学 一种基于约束求解的代码搜索方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063488A (zh) * 2010-12-29 2011-05-18 南京航空航天大学 一种基于语义的代码搜索方法
CN107992324A (zh) * 2017-12-22 2018-05-04 南京大学 一种基于约束求解的代码搜索方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
刘石;李合;王啸吟;张路;谢冰;: "基于语法与语义分析的代码搜索结果优化" *
顾逸圣等: "基于语法和语义结合的源代码精确搜索方法" *
马军岩;曾国荪;: "基于MapReduce的开源代码并行爬取方法研究与实现" *
黄丽韶;: "基于语法结构的源代码搜索的研究" *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11720346B2 (en) 2020-10-02 2023-08-08 International Business Machines Corporation Semantic code retrieval using graph matching

Similar Documents

Publication Publication Date Title
CN110399457B (zh) 一种智能问答方法和系统
US11442932B2 (en) Mapping natural language to queries using a query grammar
US11475209B2 (en) Device, system, and method for extracting named entities from sectioned documents
CN109697162B (zh) 一种基于开源代码库的软件缺陷自动检测方法
Abujabal et al. Never-ending learning for open-domain question answering over knowledge bases
CN110968699B (zh) 一种基于事理推荐的逻辑图谱构建及预警方法和装置
CN104657439B (zh) 用于自然语言精准检索的结构化查询语句生成系统及方法
CN104657440B (zh) 结构化查询语句生成系统及方法
US7426497B2 (en) Method and apparatus for analysis and decomposition of classifier data anomalies
US11521603B2 (en) Automatically generating conference minutes
KR101524889B1 (ko) 간접 화법 내에서의 시맨틱 관계의 식별
CN108304375A (zh) 一种信息识别方法及其设备、存储介质、终端
CN111046656B (zh) 文本处理方法、装置、电子设备及可读存储介质
CN109241080B (zh) 一种fql查询语言的构建使用方法及其系统
WO2016138773A1 (zh) 基于图的地址知识处理方法及装置
CN109522396B (zh) 一种面向国防科技领域的知识处理方法及系统
Lauriston Automatic recognition of complex terms: Problems and the TERMINO solution
CN112507089A (zh) 一种基于知识图谱的智能问答引擎及其实现方法
Francia et al. Towards conversational OLAP
Sun A natural language interface for querying graph databases
Bender et al. From database to treebank: On enhancing hypertext grammars with grammar engineering and treebank search
CN111177312A (zh) 一种语法和语义融合的开源代码搜索方法
CN111914533A (zh) 一种解析英语长句的方法及系统
CN111949781B (zh) 一种基于自然语句句法分析的智能交互方法及装置
CN113722421B (zh) 一种合同审计方法和系统,及计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination