【摘 要】
:
在软件开发任务中,由于软件系统部分功能经常表现出重复性与复杂性,因此开发人员为了降低工作量往往通过对现有代码进行拷贝、粘贴以及少量改写等操作来构建新的软件系统。这会造成代码库中具有大量文本相似或者功能相似的代码片段,一般称为代码克隆。代码克隆虽然大大地提高了软件开发者的工作效率,但是同时会为软件系统引入未知的安全漏洞,增加软件后期维护的成本,并导致难以预测的后果。为了解决上述问题,一般使用代码克隆
论文部分内容阅读
在软件开发任务中,由于软件系统部分功能经常表现出重复性与复杂性,因此开发人员为了降低工作量往往通过对现有代码进行拷贝、粘贴以及少量改写等操作来构建新的软件系统。这会造成代码库中具有大量文本相似或者功能相似的代码片段,一般称为代码克隆。代码克隆虽然大大地提高了软件开发者的工作效率,但是同时会为软件系统引入未知的安全漏洞,增加软件后期维护的成本,并导致难以预测的后果。为了解决上述问题,一般使用代码克隆检测技术来更好的协助软件开发人员对代码进行维护。代码克隆检测的目标就是根据用户选择的目标代码片段,使用检测工具从代码库中识别出与目标代码片段具备文本或功能相似性的代码片段。因此代码克隆检测技术在软件工程领域(如软件演化、软件重用)中具有重要的应用价值。传统的代码克隆检测技术更多地关注代码在文本和语法层面的相似性,而较少关注代码的语义相似性,这其中很重要的一部分原因是语义相似度的检测难度较高。经过调查发现,传统的克隆检测模型对语义相似的候选代码片段缺乏检测能力。为了解决这个问题,本文提出了一种基于事件嵌入的代码克隆检测方法,该方法的主要优势在于能够对代码的动态执行语义进行分析与建模。本文的核心观点是“程序可以看做一系列相互依赖且连续发生的事件”,基于此观点本文使用事件嵌入的方法对程序语句的执行特征和所有语句之间的数据依赖信息进行建模。通过这种方法,可以将程序语义信息嵌入到一个向量中,并使用该向量检测语义相似的代码。本文的贡献在于:1、利用“事件”及“事件依赖”从源代码文件中提取代码的动态语义信息;2、利用“事件嵌入”这一核心手段对程序的动态语义进行建模,同时,为EDAM模型开发完整工具链来计算代码的语义相似度。为了验证EDAM模型的性能,本文在OJClone数据集上验证模型的检测能力。实验结果表明,EDAM模型在代码克隆检测方面的F1评价指标相较对比模型提升了12.01%。该结果也证明了EDAM模型能够有效地学习到代码的语义信息,使得EDAM模型生成的代码嵌入向量在高维空间具有良好的语义表达能力。
其他文献
烟草是世界上主要种植的非粮食经济农作物之一,烟草的烟叶品质直接与经济价值相关。而烟草在生长到一定阶段后将从营养生长转向生殖生长,不利于烟叶品质相关干物质的积累,所以待烟草长至成熟期时会对烟草进行打顶(去除顶端优势)管理来控制烟株的生殖生长。打顶在影响烟叶品质和产量的过程中,会引起烟草产生一系列的响应。前期研究发现打顶后NtZAT12-like(LOC107803862)基因表达发生了明显改变,为了
婴幼儿脑部疾病的种类与发生率持年递增,其中孤独症谱系障碍(ASD)与急性胆红素脑病(ABE)是婴幼儿阶段两类极具代表性的脑部疾病。在ASD诊断领域,由于其复杂的临床表现和不确定的发病机制,目前在临床实践中基于行为特征和磁共振成像(MRI)的诊断十分困难。此外,在ABE诊断领域,由于无法直接检测婴儿大脑内胆红素的实际含量,早期也难以发现具有急性脑损伤风险的新生儿。而在基于MRI的ABE人工诊断领域,
地黄(Rehmannia glutinosa L.)是玄参科多年生草本植物,其根部具有重要的药用价值,是我国著名的“四大怀药”之一。然而,地黄种植长期受限于连作障碍问题,连作障碍导致地黄块根无法正常膨大甚至腐烂绝收,严重影响地黄的产量和品质。因此,解决地黄连作障碍问题对地黄栽培生产的可持续发展具有重要意义。本课题组前期通过转录组测序,得到一条响应连作障碍的长链非编码RNA(Long noncodi
土壤微生物(细菌和真菌)作为森林生态系统的主要分解者,直接或间接地参与土壤物质循环、能量流动和信息传递,在维持土壤生态系统功能和服务中发挥着重要作用。探明土壤微生物的分布机制及驱动因素,进而揭示土壤微生物群落构建的基本生态过程及植物-微生物互作的微生态机制,对未来维持森林生态系统的稳定和健康、开发森林土壤微生物资源及促进森林可持续发展具有重要意义。然而,目前我们对于温带落叶阔叶林不同生境下,土壤微
大豆(Glycine max)是世界上重要的作物之一,为人类提供了大量的蛋白质和食用油,其用途十分的广泛。随着测序技术的发展,越来越多的植物基因组被破译,这些基因组数据往往被存放在专业的数据库中供科研人员使用,这些数据库在植物基因功能研究和分子设计育种中发挥了重要的作用。近年来我国栽培大豆黄金级参考基因组中黄13和其他大豆高质量基因组图谱陆续被发表,然而这些数据并没有被很好地收集在专业的数据库中。
随着“互联网+”时代的来临,各领域、行业开始朝着信息化发展,在当前的网络数据交易中,知识和数字财产、软件程序、歌曲、图片与房地产等各种类型的资产在互联网节点间以数据的方式进行交换。但是,现有的第三方参与价值交换会造成单点故障,带来严重的威胁和风险;更重要的是,成本太高。区块链能够很好的解决以上问题,区块链以自动化、安全和方便的方式进行数字化和转移,不仅用于交换加密货币,还用于交换其他类型的资产,更
花青素是一类天然的水溶性色素,广泛存在于植物的各个部位。对于植物来说,花青素不仅可以吸引昆虫授粉,帮助传播种子及繁殖,还能提高植物的抗逆性,帮助植物抵御多种逆境胁迫。对于人类来说,花青素具有丰富的营养价值和保健功能,花青素可以抗氧化、抗辐射、抗肿瘤、防晒伤、保护视力、提高记忆力等。因此,对非生物胁迫条件下开展花青素合成调控的研究对于培育高抗逆性作物以及高花青素含量的经济植物具有重要的实践意义。尽管
短时交通流预测作为智能交通系统(ITS)的主要部分,已成为近年来科学研究的热门话题。有效的预测有助于提升智能交通系统的性能从而减轻城市的交通压力,对于智慧城市的建设也有着重要意义。目前的交通流预测研究主要基于路段的历史时间序列数据,而很少将包含大量与交通流相关的数据进行综合分析。使用单一数据的模型无法从多个数据中学习跨数据源的相互依赖关系,在利用数据的丰富性方面远远不足。其次,大量针对交通流预测研
城市交通拥堵造成了严重的资源浪费、环境污染等问题,与国家生态文明建设的政策相悖,亟待解决。解决交通拥堵的方法除了耗费大量资源去重新规划整改路网,最有效且易实现的方法就是对车辆进行更好的路径规划。路径规划算法的发展由来已久,传统的静态路径规划算法不能灵活应对复杂多变的城市交通环境,一些动态算法(例如动态A*算法、RRT算法等)也存在延时性和算法效率低等问题。近些年深度强化学习方法在很多领域取得了成绩
随着信息技术的迅猛发展,人类社会已然步入大数据时代,庞杂的数据在带给人们更多知识和机遇的同时也造成了信息过载的问题。所以如何快速有效从庞杂的数据中获得有用的信息变得尤为重要。而推荐系统则在某种程度上解决了这个难题。但是现有推荐算法在利用用户历史行为数据学习用户偏好的时候往往假定用户兴趣是静态的,因此难以反映用户兴趣随时间的动态变化。本文考虑到用户历史交互数据中的时序依赖关系,使用序列推荐建模的方式