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

2.
一种精简二进制代码的程序理解方法   总被引:3,自引:0,他引:3  
李卷孺  谷大武  陆海宁 《计算机应用》2008,28(10):2608-2612
精简二进制代码形式的软件是软件分析和程序理解需要处理的一类具有代表性的对象,基于高级语言源代码和调试符号信息的传统分析方法在处理此类软件时受到了极大限制。提出一种精简二进制形式软件的理解方法,首先将分析对象转变为运行期进程,引入实际运行中的进程信息;然后引入程序的行为特征,以程序表现出的外在行为和对外接口作为辅助信息,将此类外部特征映射到程序代码;最后基于切片思想和调试技术,获得程序切片并分析。这种方法为分析理解过程扩展了信息量,降低了复杂度,解决了分析此类软件时信息缺失和难以建立理解模型的问题。  相似文献   

3.
陈翔  于池  杨光  濮雪莲  崔展齐 《软件学报》2023,34(3):1310-1329
Bash是Linux默认的shell命令语言.它在Linux系统的开发和维护中起到重要作用.对不熟悉Bash语言的开发人员来说,理解Bash代码的目的和功能具有一定的挑战性.针对Bash代码注释自动生成问题提出了一种基于双重信息检索的方法 ExplainBash.该方法基于语义相似度和词法相似度进行双重检索,从而生成高质量代码注释.其中,语义相似度基于CodeBERT和BERT-whitening操作训练出代码语义表示,并基于欧式距离来实现;词法相似度基于代码词元构成的集合,并基于编辑距离来实现.以NL2Bash研究中共享的语料库为基础,进一步合并NLC2CMD竞赛共享的数据以构造高质量语料库.随后,选择了来自代码注释自动生成领域的9种基准方法,这些基准方法覆盖了基于信息检索的方法和基于深度学习的方法.实证研究和人本研究的结果验证了ExplainBash方法的有效性.然后设计了消融实验,对ExplainBash方法内设定(例如检索策略、BERT-whitening操作等)的合理性进行了分析.最后,基于所提方法开发出一个浏览器插件,以方便用户对Bash代码的理解.  相似文献   

4.
神经网络在软件工程中的应用极大程度上缓解了传统的人工提取代码特征的压力.已有的研究往往将代码简化为自然语言或者依赖专家的领域知识来提取代码特征,简化为自然语言的处理方法过于简单,容易造成信息丢失,而引入专家制定启发式规则的模型往往过于复杂,可拓展性以及普适性不强.鉴于以上问题,提出了一种基于卷积和循环神经网络的自动代码...  相似文献   

5.
代码搜索任务旨在通过分析用户需求,结合用户意图来找到满足其需求的软件构件。在加强软件复用性的同时,提高软件开发维护效率,降低成本。与传统的文档检索不同,程序特性往往隐含在标识符和代码结构中,理解程序功能是实现高效代码搜索的关键。从深度程序理解视角切入对代码搜索任务进行定义,并总结梳理近期代码搜索研究进展。针对当前代码搜索研究评估方法和数据集进行了整理。针对研究中存在的问题,对未来代码搜索研究进行展望,为后来研究者提供参考。  相似文献   

6.
针对克隆代码稳定性评价方法少且准确度低等问题,本文提出了一种以含bugs的代码文件修改频度为标准的评价克隆代码稳定性的方法。首先从软件版本管理系统中获取软件bug的修复日志并进行标准化处理;其次从bugs管理系统中获取软件bugs的详细描述信息,并利用bug的ID号和修复日志中的bug的ID号进行关联提取含bugs的代码文件;然后通过克隆检测工具检测获取软件系统中的克隆代码;并与含bugs的代码文件路径进行关联,提取出含bugs的克隆与非克隆代码;最后利用SVN diff工具统计含bugs的克隆代码和非克隆代码的修改频度,并对克隆代码的稳定性进行评估。对5款不同语言开发的软件系统进行实验,实验结果表明克隆代码修改频度较非克隆代码更少,且引起的bugs严重程度相对较低,同时表明此评估方法的可行性,为克隆代码的管理和维护提供依据。  相似文献   

7.
现在软件规模越来越庞大和复杂,脆弱性形式也更趋向多样化,传统的脆弱性检测方法存在人工参与度高、对未知脆弱性检测能力弱的缺点,已无法满足对多样化脆弱性的检测要求.为了提高对未知脆弱性的检测效果,大量机器学习方法被应用到软件脆弱性检测领域.由于现有方法在代码表征过程中存在着较高的语法和语义信息的损失,导致误报率和漏报率较高.针对这一问题,提出了一种基于代码属性图和Bi-GRU的软件脆弱性检测方法.该方法通过从函数的代码属性图中提取出抽象语法树序列、控制流图序列作为函数表征的表征方式,减少代码表征过程中的信息的损失,并通过选取Bi-GRU来构建特征提取模型,提高对脆弱性代码的特征提取能力.实验结果表明,与以抽象语法树为表征方式的方法相比,该方法最大可提高35%的精确率和22%的召回率,可改善面向多个软件源代码混合的真实数据集的脆弱性检测效果,有效降低误报率和漏报率.  相似文献   

8.
黄袁  贾楠  周强  陈湘萍  熊英飞  罗笑南 《软件学报》2018,29(8):2226-2242
代码注释是辅助编程人员理解源代码的有效手段之一.高质量的注释决策不仅能覆盖软件系统中的核心代码片段,还能避免产生多余的代码注释.然而,在实际开发中,编程人员往往缺乏统一的注释规范,大部分的注释决策都取决于个人经验以及领域知识.对于新手程序员来说,注释决策显然成为了一项重要而艰巨的任务.为了减少编程人员投入过多的精力在注释决策上,文章从大量的代码注释实例中学习出一种通用的注释决策规范,并提出了一种新颖的CommentAdviser方法用以辅助编程人员在代码开发过程中做出恰当的注释决策.由于注释决策与代码本身的上下文信息密切相关,因此,从当前代码行的上下文代码中提取代码结构特征以及代码语义特征作为支持注释决策的主要依据.然后,利用机器学习算法判定当前代码行是否为可能的注释点.在GitHub中的10个大型开源软件的数据集上评估了我们提出的方法,实验结果以及用户调研表明代码注释决策支持方法CommentAdviser的可行性和有效性.  相似文献   

9.
提出一个基于抽象语法树(Abstract Syntax Tree, AST)生成代码向量解决代码分类以及聚类任务的深度学习模型,该模型结合了卷积以及循环神经网络能够同时对AST的结构和语义信息进行提取,在代码分类任务上,分类的准确率与该领域最优的模型效果十分接近,速度却是其1.55倍。聚类任务上Jaccard系数(Jaccard Coefficient)、FMI(Fowlkes and Mallows Index)指数、ACC准确率分别达到74.4%、75.2%和83.6%,对比当下前沿的深度学习模型占有优势。  相似文献   

10.
黎宣  王千祥  金芝 《软件学报》2017,28(6):1405-1417
如何有效地帮助程序员从目前的各种代码库中搜索与特定编程任务相关的代码,已成为软件工程重要的研究领域之一.本文提出了一种基于增强描述的代码搜索方法DERECS.该方法首先基于开源项目、问答系统等,构建一个代码-描述语料库,并分析代码及自然语言描述,提取方法调用和代码结构相关特征值,然后基于代码片段中的方法调用及代码片段的结构特征对代码进行描述增强,以减小被搜索的代码与自然语言查询语句之间的差异,扩大搜索的范围.本文使用真实自然语言查询语句作为测试基准,对DERECS进行验证.验证结果表明,DERECS的效果显著优于典型方法SNIFF和Krugle的查询结果.  相似文献   

11.
Huang  Yuan  Jia  Nan  Zhou  Hao-Jie  Chen  Xiang-Ping  Zheng  Zi-Bin  Tang  Ming-Dong 《计算机科学技术学报》2020,35(6):1258-1277
Journal of Computer Science and Technology - Commit messages are important complementary information used in understanding code changes. To address message scarcity, some work is proposed for...  相似文献   

12.
程序理解通过对程序进行分析、抽象、推理从而获取程序中相关信息,在软件开发、维护、迁移等过程中起重要作用,因而得到学术界和工业界的广泛关注.传统程序理解很大程度上依赖开发人员的经验,但随着软件规模及其复杂度不断增大,完全依赖开发人员的先验知识提取程序特征既耗时耗力,又很难充分挖掘出程序中隐含特征.深度学习是一种数据驱动的端到端的方法,它根据已有数据构建深度神经网络对数据中隐含的特征进行挖掘,已经在众多领域中获得成功应用.将深度学习技术运用于程序理解中,根据具体任务以及大量数据自动地学习程序数据中蕴含的特征,可以充分地挖掘出程序中隐含的知识,提高程序理解的效率.对基于深度学习的程序理解研究工作进行综述,首先对程序所包含的性质进行分析,然后介绍主流的程序理解模型,包括基于序列、结构以及执行过程的程序理解模型.随后展示基于深度学习的程序理解在程序分析中的应用,主要针对代码补全、代码注释生成、代码检索等任务.最后,分析并总结程序理解研究所面临的挑战.  相似文献   

13.
机器阅读理解是自然语言处理领域一项得到广泛关注与研究的任务。该文针对中文机器阅读理解数据集DuReader,分析其数据集的特点及难点,设计了一种基于循环神经网络和自注意力机制的抽取式模型Mixed Model。通过设计段落融合等策略,该文提出的模型在DuReader测试集上达到了54.2的Rouge-L得分和49.14的Bleu-4得分。  相似文献   

14.
机器阅读理解是自然语言处理中的一项重要而富有挑战性的任务.近年来,以BERT为代表的大规模预训练语言模型在此领域取得了显著的成功.但是,受限于序列模型的结构和规模,基于BERT的阅读理解模型在长距离和全局语义构建的能力有着显著缺陷,影响了其在阅读理解任务上的表现.针对这一问题,该文提出一种融合了序列和图结构的机器阅读理...  相似文献   

15.
霍欢  王忠萌 《中文信息学报》2018,32(12):132-142
对于面向真实场景的中文机器阅读,理解文本所呈现的复杂信息至关重要。针对多篇章的连续答案片段型中文机器阅读任务,该文提出一种基于深度层次特征的模型,来提取细节、片段、全文三个层次的深度特征,从而多角度把握篇章包含的信息。在该模型中,词语经过词向量表示后,经过循环(recurrent)层编码后得到细节特征,并经过若干卷积(convolution)层和高速公路(highway)层等构造片段特征,同时对候选篇章进行全文特征的提取来进行整体的考察。最后,通过这些特征来确定答案所在篇章以及该篇章内的答案片段所在位置。在2018机器阅读理解技术竞赛中,单模型取得57.55的Rouge-L分数和50.87的Bleu-4分数,实验取得较好效果。  相似文献   

16.
王潮  徐卫伟  周明辉 《软件学报》2024,35(2):513-531
代码注释作为辅助软件开发群体协作的关键机制,被开发者所广泛使用以提升开发效率.然而,由于代码注释并不直接影响软件运行,使其常被开发者忽视,导致出现代码注释质量问题,进而影响开发效率.代码注释中存在的质量问题会影响开发者理解相关代码,甚至可能产生误解从而引入代码缺陷,因此这一问题受到研究者的广泛关注.采用系统文献调研,对近年来国内外学者在代码注释质量问题上的研究工作进行系统的分析.从代码注释质量的评价维度、度量指标以及提升策略这3个方面总结研究现状,并提出当前研究所存在的不足、挑战及建议.  相似文献   

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

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