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

2.
一般性计算机病毒代码分析和检测方法   总被引:1,自引:0,他引:1  
一般性计算机病毒代码依赖于系统特殊的API函数进行感染、传播和隐藏,并使用多种代码保护机制,给病毒代码的查杀带来较大的不便。通过长期的查杀实践,总结出了一般性计算机病毒代码的分析和检测方法。  相似文献   

3.
王青叶  万志远  李善平  夏鑫 《软件学报》2022,33(7):2581-2598
代码审查是一种由其他开发者而非代码作者本人评审代码的形式.在代码审查系统中,开发者通过提交代码变更来修复软件缺陷或添加软件特性.并非所有的代码变更都会被集成到代码库中,部分代码变更会被拒收.被拒收的代码变更有可能被恢复,并继续接受审查,提供代码贡献者改进代码变更的机会.然而,审查恢复过的代码变更需要花费更多的时间.收集了4个开源项目中的920 700条代码变更,采用主题分析方法识别出11类代码变更恢复的原因,并定量分析被恢复的代码变更的特征.主要发现包括:1)导致代码变更恢复的原因中,“提升改进”类型占比最大; 2)不同项目之间,代码变更被恢复的原因类别分布存在差异,但并不显著; 3)与从未恢复过的代码变更相比,恢复的代码变更接收率低10%,评论数量平均多1.9倍,审查所用时间平均多5.8倍; 4) 81%的恢复代码变更被接收, 19%的恢复代码变更被拒收.  相似文献   

4.
讨论了Web前端开发中存在的若干问题,针对提出的问题,提出了提升Web前端性能的方法.  相似文献   

5.
本文描述了软件代码审查的作用、代码审查内容、代码审查过程,并列举一些常见代码审查问题。  相似文献   

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

7.
代码复用是重要的软件复用方式之一,复用者需要理解软件代码实现的功能方能有效实施软件复用。基于主题建模技术的程序理解方法逐渐受到研究人员的重视,它能够帮助软件开发者和使用者更好地理解软件的功能。目前,基于主题建模技术的程序理解方法一般欠缺对挖掘出的Topic的语义分析,为此提出的基于代码静态分析和LDA技术的代码功能挖掘(Code Function Mining,CFM)方法可作为对这类方法的补充。CFM是一套以代码为研究对象的挖掘、筛选、组织和描述主题(Topic)的方法,该方法能够生成带描述的功能型Topic的层次结构,以供使用者更清晰和方便地浏览、学习软件的功能。功能型Topic的描述能够帮助复用者理解代码功能,其层次结构能够让复用者从不同抽象层次理解代码功能。CFM方法包括4个部分:挖掘Topic、筛选Topic、组织Topic、描述Topic。以CFM方法为基础,设计并实现了一个CFM工具。CFM工具能够分析用户提交的代码,通过Web页面向用户展示带描述的功能型Topic的层次结构。最后,对CFM方法中的几个关键算法进行实验分析,验证了CFM方法的有效性。  相似文献   

8.
神经网络在软件工程中的应用极大程度上缓解了传统的人工提取代码特征的压力。已有的研究往往将代码简化为自然语言或者依赖专家的领域知识来提取代码特征,简化为自然语言的处理方法过于简单,容易造成信息丢失,而引入专家制定启发式规则的模型往往过于复杂,可拓展性以及普适性不强。鉴于以上问题,提出了一种基于卷积和循环神经网络的自动代码特征提取模型,该模型借助代码的抽象语法树(AST)来提取代码特征。为了缓解因AST过于庞大而带来的梯度消失问题,对AST进行切割,转换成一个AST序列再作为模型的输入。该模型利用卷积网络提取代码中的结构信息,利用双向循环神经网络提取代码中的序列信息。整个流程不需要专家的领域知识来指导模型的训练,只需要将标注类别的代码作为模型的输入就可以让模型自动地学习如何提取代码特征。应用训练好的分类编码器,在相似代码搜索任务上进行测试,Top1、NDCG、MRR的值分别能达到0.560、0.679和0.638,对比当下前沿的用于代码特征提取的深度学习模型以及业界常用的代码相似检测工具有显著的优势。  相似文献   

9.
在当前的软件开发环境中,海量的低质量、无意义的代码知识为开发人员进行代码复用造成了阻碍,大大降低了软件开发效率。为了快速准确地为开发人员推荐高质量的代码知识,提出了基于SBERT(sentence-BERT)模型的代码片段推荐方法CSRSB(code snippets recommendation based on sentence-BERT)。该方法首先获取海量的高质量数据来构建代码语料库,并基于深度学习模型SBERT为代码片段对应的自然语言描述和用户输入的自然语言查询生成具有丰富语义的句向量,通过比较点积相似度来实现代码片段的推荐。使用命中率、平均倒数排名和平均准确率这三个常用推荐评估指标与现有相关研究中的方法进行对比来验证该方法的有效性。实验结果表明,CSRSB在有效提高代码片段推荐准确度的同时也能够做到快速推荐。  相似文献   

10.
李路鹿  张峰  李国繁 《软件》2020,(2):62-65
代码混淆技术是一种语义保留的代码变换技术,是衡量代码相似度检测方法的重要指标之一。本文主要对现有的代码混淆手段的研究现状和发展进行了综述。首先阐述了代码混淆的相关定义,然后介绍了现有的几种代码混淆手段,对代码混淆手段进行了系统的分类,分别介绍了每种代码混淆手段。最后对代码混淆手段进行了总结与评价。  相似文献   

11.
以相似理论为指导,基于相似系统的观点对不同数控系统指令之间的相似性、相似元、相似度等进行多层次的分析和研究。根据相似元的划分原则,定义各级相似元,量化其特征值和属性值。建立计算数控指令相似度的数学模型,并对数控指令的确定性相似和模糊性相似给出确切定义。拟定数控程序格式的描述方法和数控代码的编码方式,构建了一种通用的数控代码转换系统模型。  相似文献   

12.
针对已有克隆代码检测工具只输出克隆组形式的检测结果,而无法分析克隆代码对软件质量的影响问题,提出危害软件质量的关键克隆代码的识别方法。首先,定义了克隆代码的统一表示形式,使之可以分析各种克隆检测工具的检测结果;接下来,解析源程序和克隆检测结果,识别标识符命名不一致性潜在缺陷;然后,定义了克隆关联图,在此基础上检测跨越多个实现不同功能的文件、危害软件可维护性的克隆代码;最后,对检测结果进行可视化统计分析。本文的克隆代码分析工具被应用于分析开源代码httpd,检测出了1组标识符命名不一致的克隆代码和44组危害软件可维护性的关键克隆类,实验结果表明,本文方法可以有效辅助软件开发和维护人员分析、维护克隆代码。  相似文献   

13.
李志星  余跃  王涛  蔡孟栾  王怀民 《软件学报》2023,34(9):4056-4068
人工智能(artificial intelligence, AI)的飞速发展得益于开源社区的开放协同,大量的开发者通过提交PR(pull-request)为AI开源软件做贡献.然而,外部贡献者所提交的PR质量参差不齐,开源项目管理团队需要对PR进行代码审查,并要求贡献者根据审查意见对PR进行修订. PR的修订过程对AI开源软件的质量有着重要的影响,因此对该过程进行更加全面、深入的实证研究很有必要.首先,从TensorFlow开源软件社区中收集一组PR的修订历史,通过对PR的代码提交信息以及审查评论进行定性分析,归纳总结PR修订类型的分类体系.其次,根据此分类体系人工标注一组修订数据集,并基于此数据集定量分析不同修订类型的频率分布、次序分布以及关联关系.研究结果表明:TensorFlow开源社区中的PR存在3大类共11种不同类型的修订,其中完善类修订出现的频率最高;此外,相比于其他类修订和完善类修订,修正类修订更常发生在PR的早期更新中;与结构相关的修订更有可能与其他类型的修订同现或邻现,配置修订以及变基修订有较大概率会接连出现.实证研究结果可帮助AI开源实践者和研究者更好地理解PR的修...  相似文献   

14.
本文介绍了运用VBA/VB对Auto CAD进行二次开发时代码之间相互转换的方法,以实现VB与VBA的开发者之间共享代码资源的目的。  相似文献   

15.
对代码可读性进行定量、准确的评估是有效保障软件质量、降低沟通成本以及维护成本、提高软件开发和演化效率的重要途径.然而,现有的针对代码可读性评估的研究方案大多是基于特征工程的,受到源代码表征方式、技术手段等多方面因素影响,其评估准确率并不高.为此,文中采用深度学习作为主要技术手段,提出了一种基于多维度特征和混合神经网络的代码可读性评估方法,通过整合并运用各种单一神经网络的优势,从字符级、词条级等不同维度挖掘源代码中蕴含的结构信息和语义信息,最终实现对代码可读性的量化评估.实验表明,该方法能够获得高达84.6%的评估准确率,比单独使用卷积神经网络提升了9.2%,比单独使用循环神经网络模型提升了6.5%,并且其表现优于现有的5个可读性模型,验证了所提出的多维度特征和混合神经网络的有效性.  相似文献   

16.
刘耀  童昕  陈一风 《计算机应用》2023,(6):1768-1778
算法平台作为自动机器学习的实现方式近年来受到广泛关注,然而这些平台的业务流程均需要人工搭建,且这些平台存在模型调用不灵活以及无法针对特定业务定制化的自动算法构建的问题。针对这些问题,提出了一种面向业务需求的算法路径自组配模型。首先,基于图卷积网络(GCN)与word2vec表示对代码的序列特征与结构特征同时建模;然后,进一步通过聚类模型发现算法集合中的功能,并基于得到的功能子集为子集间算法组件的路径发现作准备;最后,基于先验知识训练得到关系发现模型与排序模型,挖掘候选代码组件的自组织路径,从而实现算法代码自组配。使用所提评价指标进行对比分析,所提模型的最好结果为0.8,而Okapi BM25+word2vec基线模型的最好结果为0.21。所提模型在一定程度上解决了传统代码表示方法中代码结构与语义信息缺失的问题,并为精细化算法流程自组织和算法管道自动构建的研究奠定了基础。  相似文献   

17.
为克服阅读理解源代码的困难,根据现有的软件开发辅助工具的特点,对源代码导读和管理工具进行了深入的分析和研究.针对业界大量使用的Java语言,设计并实现了一个旨在以Java源代码导读为主、并具代码抽取等分析管理功能的交互式软件开发辅助工具Javigator.作为Eclipse的插件,能帮助开发人员快速地阅读理解Java源程序,并支撑对关注代码的快速测试及代码重用.Javigator使用灵活方便,可明显降低开发中理解及管理源代码的难度,提高开发的效率.  相似文献   

18.
杨博  张能  李善平  夏鑫 《软件学报》2020,31(5):1435-1453
代码补全(code completion)是自动化软件开发的重要功能之一,是大多数现代集成开发环境和源代码编辑器的重要组件.代码补全提供即时类名、方法名和关键字等预测,辅助开发人员编写程序,直观提高软件开发效率.近年来,开源软件社区中源代码和数据规模不断扩大,人工智能技术取得卓越进展,这对自动化软件开发技术产生了极大促进作用.智能代码补全(intelligent code completion)根据源代码建立语言模型,从语料库学习已有代码特征,根据待补全位置的上下文代码特征在语料库中检索最相似的匹配项进行推荐和预测.相对于传统代码补全,智能代码补全凭借其高准确率、多补全形式、可学习迭代的特性成为软件工程领域的热门方向之一.研究者们在智能代码补全方面进行了一系列研究,根据这些方法如何表征和利用源代码信息的不同方式,可以将它们分为基于编程语言表征和基于统计语言表征两个研究方向,其中,基于编程语言表征又分为标识符序列、抽象语法树、控制/数据流图3个类别,基于统计语言表征又分为N-gram模型、神经网络模型两个类别.从代码表征的角度入手,对近年来代码补全方法研究进展进行梳理和总结,主要内容包括:(1)根据代码表征方式阐述并归类了现有的智能代码补全方法;(2)总结了代码补全的一般过程和模型评估中的模型验证方法与性能评估指标;(3)归纳了智能代码补全的主要挑战;(4)展望了智能代码补全的未来发展方向.  相似文献   

19.
对代码进行分析研究具有很多的应用场景,例如代码抄袭检测、软件漏洞搜索等。随着人工智能的发展,神经网络技术被广泛应用于代码分析和研究。然而,现有的方法要么简单地将代码视为普通的自然语言处理,要么使用太过复杂的规则对代码进行采样,前者的处理方式容易造成代码关键信息的丢失,而后者会造成算法过于复杂,模型的训练需要花费较长的时间。Alon等提出了一种名为Code2vec的算法,该算法采用了一种简单且有效的代码表示方法,相比之前的代码分析方法有着显著的优势,但Code2vec算法仍存在一些局限性。因此,在其基础上提出了一种基于神经网络的代码嵌入方法,该方法的主要思想是将代码函数表示为代码的嵌入向量。首先将一个代码函数分解为一系列抽象语法树路径,然后通过神经网络去学习如何表示每一条路径,最后将所有路径聚合成一个嵌入向量来表示当前的代码函数。文中实现了一个基于该方法的原型系统,实验结果表明,相比Code2vec,所提算法的结构更加简单、训练速度更快。  相似文献   

20.
代码搜索引擎(code search engines,CSE)产生和互联网上日益增加的开源代码工程,使得软件开发人员在软件开发的过程中可以大量的重用已有的源代码。然而大部分开发人员使用CSEs只是简单完成相关代码搜索。该文给出了一种通用的范型挖掘过程模型,能够充分利用CSEs,通过挖掘源代码范型保证重用代码的质量,并详细的说明了该范型挖掘过程模型在三个方面辅助软件质量改进。  相似文献   

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

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