首页 | 官方网站   微博 | 高级检索  
相似文献
 共查询到20条相似文献,搜索用时 62 毫秒
1.
刘石  李合  王啸吟  张路  谢冰 《计算机科学》2009,36(8):165-168
通过示例代码学习简单算法的实现和具体API的使用方式是程序开发人员在软件开发中进行软件复用的高效手段,也是使用代码搜索引擎的主要目的.代码搜索引擎从网页搜索技术发展而来,提供对网络上源代码资源的检索功能,能够有效定位与搜索内容相关的代码,为程序开发人员提供帮助.但现有的代码搜索引擎没有在搜索结果中区别API的实现代码与使用代码,搜索结果存在冗余,导致用户无法快速有效地找到提供有用信息的代码片段.为了使用户更好更快地找到代码搜索目标,阐述了应用语法与语义分析技术从区分API实现代码和使用代码、相似代码聚类、搜索结果摘要3个方面对代码搜索结果进行优化的方法,给出了一个代码搜索引擎的实现,并在实例研究中展示了该方法的有效性.  相似文献   

2.
现有的源代码搜索引擎大都是基于文本的搜索,没有利用代码在语法上的特性,因此在搜索准确性方面受到极大的限制.本文从语法结构角度,提出一种源代码的过滤方法,构造基于语法结构的代码过滤器,从而抽取对搜索有用的信息.通过该方法实现了一个基于语法结构的源代码搜索引擎.实验表明本文所建立的源代码搜索在搜索准确度、搜索结果展示的友好性方面都有改进.  相似文献   

3.
林泽琦  邹艳珍  赵俊峰  曹英魁  谢冰 《软件学报》2019,30(12):3714-3729
自然语言文本形式的文档是软件项目的重要组成部分.如何帮助开发者在大量文档中进行高效、准确的信息定位,是软件复用领域中的一个重要研究问题.提出了一种基于代码结构知识的软件文档语义搜索方法.该方法从软件项目的源代码中解析出代码结构图,并以此作为领域特定的知识来帮助机器理解自然语言文本的语义.这一语义信息与信息检索技术相结合,从而实现了对软件文档的语义检索.在StackOverflow问答文档数据集上的实验表明,与多种文本检索方法相比,该方法在平均准确率(mean average precision,简称MAP)上可以取得至少13.77%的提升.  相似文献   

4.
代码智能是自然语言处理领域的一个研究热点,而支持各种下游任务的代码表示学习是实现代码智能的第一步。理解自然语言和编程语言的语法和语义,是程序和自然语言的理解与生成任务的前提条件,这与两者的语义向量表征方法密切相关。基于此,首先介绍两类文本表示方法,其次引入代码表示的6种主流方法,最后分析ChatGPT与代码智能结合发展的前景。  相似文献   

5.
大规模开源代码社区为开发者提供了丰富的软件资产,但要理解和利用这些代码却十分耗时耗力。为寻求代码理解、分析和挖掘的语义支撑,本文针对源代码变量名进行了研究,提出了一种基于字段相似度与语义关联度的自动语义标注方法,并实现了相应的工具。该方法首先建立英文、中文、拼音语料库,并构建字段相似度模型生成多种候选标注方案,然后利用马尔科夫转移矩阵和语义网WordNet构建概率模型评选出最优的标注方案,从而实现源代码变量名的自动语义识别。该方法通过积累用户的标注采纳反馈,能够不断提高标注准确度。本文使用GitHub开源项目代码进行标注准确度实验,结果表明初次标注准确度达到68.1%,随着用户反馈增加逐步提升到73.3%。  相似文献   

6.
一般来说,在软件安全中最为重要的一个安全点就是源代码的安全,这也是软件安全最底层的关键内容之一.本篇论文主要研究的内容就是源代码在进行关键字搜索时存在的一些问题,并且针对这些问题提出了相应的解决对策,按照这些对策来进行操作的话,源代码的安全以及质量就能得到很好的提升.  相似文献   

7.
复用已有高质量源代码可提高软件开发效率及软件质量.当前,基于用户提供的输入/输出对的匹配判断是代码语义搜索的主要方法之一,但该方法难以刻画完整代码行为,且仅能处理单输入类型.提出一种针对多种形式类型匹配的代码语义搜索方法.首先将代码集内各个代码片段中数据对象个数及类型的加工过程转换为Petri网模型;其次根据用户查询中...  相似文献   

8.
付善庆  李征  赵瑞莲  郭俊霞 《软件学报》2022,33(11):3930-3943
在软件工程领域,代码补全是集成开发环境(integrated development environment,IDE)中最有用的技术之一,提高了软件开发效率,成为了加速现代软件开发的重要技术.通过代码补全技术进行类名、方法名、关键字等预测,在一定程度上提高了代码规范,降低了编程人员的工作强度.近年来,人工智能技术的发展促进了代码补全技术的发展.总体来说,智能代码补全技术利用源代码训练深度学习网络,从语料库学习代码特征,根据待补全位置的上下文代码特征进行推荐和预测.现有的代码特征表征方式大多基于程序语法,没有反映出程序的语义信息.同时,目前使用到的网络结构在面对长代码序列时,解决长距离依赖问题的能力依旧不足.因此,提出了基于程序控制依赖关系和语法信息结合共同表征代码的方法,并将代码补全问题作为一个基于时间卷积网络(time convolution network,TCN)的抽象语法树(abstract grammar tree,AST)节点预测问题,使得网络模型可以更好地学习程序的语法和语义信息,并且可以捕获更长范围的依赖关系.实验结果表明,该方法比现有方法的准确率提高了约2.8%.  相似文献   

9.
为提高伙伴搜索系统的开放性和查准率,通过引入Web服务和本体技术,提出了一种基于语义服务的伙伴搜索模型。该模型使用OWL-S描述盟主企业的任务型服务和成员企业的资源型服务,介绍了语义相似度的计算方法以及一种基于语义相似度的任务型服务与资源型服务的匹配算法。针对伙伴搜索的实时动态性及盟主企业和成员企业双方利益最大化需求,介绍了双向搜索的搜索规则,提出了基于以上模型的虚拟企业伙伴的双向搜索机制。最后,对该方法进行了分析评价。  相似文献   

10.
基于语义与句法的Java类库检索方法与系统   总被引:1,自引:0,他引:1  
叶青青  江水 《计算机工程》2004,30(23):61-63,192
提出了一个支持系统化、大规模软件复用的基于语义与句法的可复用模块的检索方法,并介绍了基于此方法支持Jwa类库的实用检索系统。软件开发者既可以使用自然语言直接描述待开发软件的功能语义并用此查询类库中的相关模块,也可以通过对输入输出数据类型的描述对Java类库进行快速地查询,还可以同时使用两者的组合来提高可复用库模块查询的精度。  相似文献   

11.
李阵  钮俊  王奎  辛园园 《计算机应用》2018,38(3):812-817
对开源代码进行准确搜索是实现代码复用的前提。在基于关键字搜索的研究中,目前只关注匹配方法签名。结合源代码注释对方法功能的语义描述,提出结合代码注释的关键字搜索方法。通过生成源代码抽象语法树,从中识别方法签名与各类型注释等组合代码特征;将代码特征与查询语句分别用向量表示,并计算向量间的余弦相似度,然后制定针对搜索结果多特征权重分配的评分机制。根据评分对搜索结果进行排序,得到与查询语句相关的结果序列。实验结果表明,多个代码特征在不同权重影响下可以提升源代码搜索准确度。  相似文献   

12.
夏冰  庞建民  周鑫  单征 《计算机应用》2022,42(4):985-998
随着物联网和工业互联网的快速发展,网络空间安全的研究日益受到工业界和学术界的重视。由于源代码无法获取,二进制代码相似性搜索成为漏洞挖掘和恶意代码分析的关键核心技术。首先,从二进制代码相似性搜索基本概念出发,给出二进制代码相似性搜索系统框架;然后,围绕相似性技术系统介绍二进制代码语法相似性搜索、语义相似性搜索和语用相似性搜索的发展现状;其次,从二进制哈希、指令序列、图结构、基本块语义、特征学习、调试信息恢复和函数高级语义识别等角度总结比较现有解决方案;最后,展望二进制代码相似性搜索未来发展方向与前景。  相似文献   

13.
魏敏  张丽萍 《计算机应用研究》2021,38(11):3215-3221,3230
开源软件的成功推动了软件产业的蓬勃发展,大量代码资源为代码搜索创造了条件.如何通过代码搜索技术找到需求代码成为一个重要问题.为了更好地推进后续研究工作,首先对代码搜索相关概念及研究趋势进行介绍和说明;其次对使用不同技术的代码搜索研究工作进行综述,包括基于信息检索、查询和代码描述增强、程序特征分类以及深度学习等方面,并进一步总结归纳不同方法的优缺点;接下来针对代码搜索技术所应用的多个领域进行介绍,包括程序合成、代码推荐与补全和代码风格改善等方面;最后分析现阶段代码搜索面临的主要问题,为未来该方向的发展提供一定的参考与建议.  相似文献   

14.
数据挖掘技术可以从大量的数据中发现某些有价值的知识.而将软件源码作为一种特殊的数据,在其上应用数据挖掘技术进行源码层次上的信息挖掘,已成为一个新颖而重要的课题.将对软件源码上的数据挖掘技术从各领域的应用、数据挖掘方法以及当前发展水平等主要方面展开介绍,并详细剖析当前此领域的制约因素,提出未来此领域的发展方向.  相似文献   

15.
软件静态漏洞检测依据分析对象主要分为二进制漏洞检测和源代码漏洞检测。由于源代码含有更为丰富的语义信息而备受代码审查人员的青睐。针对现有的源代码漏洞检测研究工作,从基于代码相似性的漏洞检测、基于符号执行的漏洞检测、基于规则的漏洞检测以及基于机器学习的漏洞检测4个方面进行了总结,并以基于源代码相似性的漏洞检测系统和面向源代码的软件漏洞智能检测系统两个具体方案为例详细介绍了漏洞检测过程。  相似文献   

16.
17.
源码漏洞检测作为重要的研究课题,其传统方法在面对规模庞大、脆弱性多样化的代码时,存在人工参与度高、未知漏洞检测能力弱等诸多问题。针对以上问题,基于开放源代码的语法语义信息,提出了改进差分进化算法的源码漏洞检测模型冷启动优化方法。运用源码切片技术、启发式优化算法及神经网络模型,解决了漏洞检测模型在启动之初超参数无法准确选定的问题。对于实验中样本信息冗余和正负样本鲜明特征混和的情况,提出了正负样本鲜明特征交叉剔除的思想以减小模型的漏报率及误报率。实验表明,该方法可以有效加速模型的收敛,使得模型在10个epoch内达到稳定,在提升源码漏洞检测模型准确率的同时其收敛速度比其他模型提升了2~3倍。在后续改进实验中,源码漏洞检测模型在所有类型漏洞的准确率上均提高了1~3个百分点,充分证明了改进措施的有效性。该方法的优化策略和改进措施同样适用于其他神经网络分类模型,可以为漏洞检测领域探索新方法和新模型提供思路。  相似文献   

18.
白盒测试中源代码变更管理方法的研究与实现   总被引:2,自引:0,他引:2       下载免费PDF全文
在大型软件白盒测试项目中,源代码的频繁变化给测试工作增加了很大难度,对源代码进行管理和控制是对白盒测试过程管理的一个重要补充。在已有的软件测试过程管理模型基础上,认真分析研究版本控制和管理的相关技术现状,提出了变更管理的改进方法,对于软件模块的比较采用了抽象的方法简化为目录树,而在文件比较中基于源代码静态分析工具,把文件比较的粒度分解到方法一级,进行了方法内部比较算法的研究,设计实现了源代码版本管理子系统。  相似文献   

19.
Thesaurus‐based, code‐related, and software‐specific query expansion techniques are the main contributions in free‐form query search. However, these techniques still could not put the most relevant query result in the first position because they lack the ability to infer the expansion words that represent the user needs based on a given query. In this paper, we discover that code changes can imply what users want and propose a novel query expansion technique with code changes (QECC). It exploits (changes, contexts) pairs from changed methods. On the basis of statistical learning from pairs, it can infer code changes for a given query. In this way, it expands a query with code changes and recommends the query results that meet actual needs perfectly. In addition, we implement InstaRec to perform QECC and evaluate it with 195 039 change commits from GitHub and our code tracker. The results show that QECC can improve the precision of 3 code search algorithms (ie, IR, Portfolio, and VF) by up to 52% to 62% and outperform the state‐of‐the‐art query expansion techniques (ie, query expansion based on crowd knowledge and CodeHow) by 13% to 16% when the top 1 result is inspected.  相似文献   

20.
This paper presents SPOON , a library for the analysis and transformation of Java source code. SPOON enables Java developers to write a large range of domain‐specific analyses and transformations in an easy and concise manner. SPOON analyses and transformations are written in plain Java. With SPOON , developers do not need to dive into parsing, to hack a compiler infrastructure, or to master a new formalism. Copyright © 2015 John Wiley & Sons, Ltd.  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司    京ICP备09084417号-23

京公网安备 11010802026262号