首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到18条相似文献,搜索用时 218 毫秒
1.
近年来,随着不同编程语言代码自动转换工具的出现,跨语言的代码抄袭检测问题受到了越来越多的关注.现有跨语言代码抄袭检测主要包括传统的基于中间特征的检测方法和近年来出现的基于机器学习的检测方法,后者在检测模型训练完成之后具有更好的检测速度,是当前跨语言代码抄袭检测的研究热点.然而,现有的基于机器学习的跨语言抄袭检测方法大多将代码作为文本来处理,未考虑代码的结构特征.结合代码基于抽象语法树的结构特征,本文提出了一个基于伪孪生神经网络框架的跨语言抄袭检测工具CLPDetector.该工具将训练数据中的源代码对转换成对应的抽象语法树,基于抽象语法树生成代码的向量表示,然后将结合BiLSTM、CNN和Attention的深度神经网络嵌入到伪孪生网络架构中训练抄袭检测模型,从而实现了跨语言代码抄袭的检测.为了提高检测精度,首先,在训练检测模型前,利用基于抽象语法树的skip-gram算法对词向量进行了预训练,并基于程序依赖图删除了训练数据集代码中的冗余代码.其次,在代码抄袭检测阶段,提出了一个基于属性计数的过滤器,用以排除不可能抄袭的代码对,提高检测效率.实验中基于一个开源的数据集,以Java代码和...  相似文献   

2.
为了检测程序设计类课程中出现的作业抄袭行为,提出了基于抽象语法树的抄袭检测方法.运用语法分析工具对代码进行语法分析生成抽象语法树(AST),通过计算生物学中序列匹配的算法进行程序相似度的计算.提取程序相似部分的AST特征,生成空间向量,聚类分析找出“抄袭团伙”.实验结果表明,该方法对抄袭行为具有较好的检测效果,并能比较准确地找到“抄袭团伙”.  相似文献   

3.
针对目前代码抄袭检测方面的研究大多是基于程序源码层面进行相似度比较,不需要对代码进行语法分析,由于忽略程序语法语义,对稍加结构修改的抄袭行为无法有效检测的现状,提出一种基于AST的代码抄袭检测方法.先将代码进行格式化预处理,再进行词法分析、语法分析,得到对应的AST;然后遍历AST生成代码序列,对代码序列进行相似度计算,从而得到代码的抄袭检测报告.实验结果表明,该方法能够有效检测出C程序代码的抄袭行为,并对C++、Java等多种程序代码的抄袭检测具有一定的通用性和可扩展性.  相似文献   

4.
软件在生命周期中一直在发生演化,对软件演化的分析可以揭示软件发展的一些基本规律。现有方法通常使用改变的代码行数作为软件演化的指标,但是这项指标不能反映软件架构的变化,也不能帮助理解软件演化的具体情况。使用抽象语法树匹配ATS(Abstract Syntax Tree)进行代码分析能够更清楚地了解软件中发生改变的具体内容。针对Java语言编写的软件,可以了解静态域的添加、删除和类型修改;类的添加、删除、类型修改和方法体修改。这些信息能更好地帮助理解软件演化。  相似文献   

5.
传统的基于Token的克隆检测方法利用代码字符串的序列化特性, 可以在大型代码仓中快速检测克隆. 但是与基于抽象语法树(AST)、程序依赖图(PDG)的方法相比, 由于缺少语法及语义信息, 针对文本有较大差异的克隆代码检测困难. 为此, 提出一种赋予语义信息的Token克隆检测方法. 首先, 分析抽象语法树, 使用AST路径抽象位于叶子节点的Token的语义信息; 然后, 在函数名和类型名角色的Token上建立低成本索引, 达到快速并有效地筛选候选克隆片段的目的. 最后, 使用赋予语义信息的Token判定代码块之间的相似性. 在公开的大规模数据集BigCloneBench实验结果表明, 该方法在文本相似度较低的Moderately Type-3和Weakly Type-3/Type-4类型克隆上显著优于主流方法, 包括NiCad、Deckard、CCAligner等, 同时在大型代码仓上需要更少的检测时间.  相似文献   

6.
文章对基于文本、Token和抽象语法树的同源性检测技术进行探讨,详细介绍了关于抽象语法树的同源性检测技术。同时,在对实际应用大量研究的基础上,文章着重介绍了源代码同源性检测系统的架构设计,以及引擎比对、比对结果分析和比对结果输出等主要功能模块,并对开发的系统进行了系统测试和分析,验证了算法的可行性。  相似文献   

7.
数据泥团是一种常见的代码味道,它将带来重复代码和维护难度增加等问题。针对大部分已有的代码味道自动检测工具无法检测数据泥团,且检测类型不全面等问题,提出一种基于抽象语法树的数据泥团自动检测方法。该方法在已有检测工具的基础上,增加了新的数据泥团类型,并加入了剔除冗余数据泥团和提取子数据泥团等步骤。通过对4个开源项目进行数据泥团实验,结果表明方法具有较高的精确率,与Stench Blossom、inFusion等工具的数据泥团自动检测功能相比,能够检测出一些其他工具无法检测的数据泥团。同时,该方法具有较好的性能,执行时间与系统规模成正比。  相似文献   

8.
代码注释可以帮助开发人员理解代码的功能和实现方法。代码注释生成模型可以自动识别代码中的关键信息,并生成相关注释,提高代码的可读性和可维护性。现有的代码注释生成模型通常只使用抽象语法树结构信息来表示代码,导致模型生成注释质量不高。提出一种融合多结构信息的代码注释生成模型,该模型在代码抽象语法树的基础上,增加了数据流图结构信息来表示代码。模型使用Transformer的编码器对抽象语法树序列进行编码,捕获代码全局信息。使用图神经网络对数据流图进行特征提取,提供变量之间的计算依赖关系等信息。然后使用跨模态注意力机制融合抽象语法树和数据流2种特征,经过Transformer的解码器生成相应的注释。实验结果表明,与6种主流模型相比,所提出的模型在Java和Python数据集上的BLEU、METEOR和ROUGE-L指标得分均有提高,生成的注释也具有良好的可读性。  相似文献   

9.
使用抽象语法树和静态分析的克隆代码自动重构方法   总被引:4,自引:0,他引:4  
单个软件系统中以及若干个相似系统之间的代码克隆给软件维护增加了很大困难.本文针对运用克隆侦测发现的相似代码片断,提出一种基于抽象语法树和静态分析的代码自动重构方法.该方法首先为克隆代码分别构造抽象语法树,然后运用语句差异度指标建立起语法树之间流程控制语句的对应关系.在此基础上,该方法根据控制流程和基本语句块两个层次上的差异性分析,最终通过代码可变点提取实现克隆代码的自动合并.针对Java代码开发了克隆代码重构支持工具原型,并分别针对JDK1.5和一个业务系统进行了自动重构实验.初步的结果表明,该方法能够准确、有效地辅助开发者实现克隆代码的自动重构.  相似文献   

10.
抽象语法树(abstract syntax tree,AST)作为程序一种重要的中间表示形式,在代码分析领域中有着广泛的应用。如何针对Java程序生成其抽象语法树是在进行代码静态分析前必不可少的工作。分析抽象语法树的构建算法,通过JavaCC解析工具完成对Java文件抽象语法树的构建,该方法可实现代码树状形式的可视化呈现。  相似文献   

11.
AADL构件到RTLinux平台C代码的转换方法研究*   总被引:1,自引:1,他引:0  
朱江  张茂林 《计算机应用研究》2011,28(12):4613-4615
为了提高嵌入式软件开发的自动化程度,代码自动生成是一种值得采用的有效方法.在研究体系结构分析与设计语言(AADL)和RTLinux(real-time Linux)平台C代码的特性的基础上,提出了AADL构件到RTLinux平台C代码的转换规则;然后用一个实例实现了代码自动生成,从而验证了转换规则的有效性.  相似文献   

12.
许健 《计算机应用研究》2021,38(8):2394-2400
针对传统漏洞检测分类需要定义人工特征以及相似度匹配算法不能检测非克隆漏洞、现有深度学习漏洞检测的方法特征维度过大以及只针对函数调用的问题,提出一种融合滑动窗口和哈希函数的深度学习方法,对源代码进行静态漏洞检测分类.首先抽取源代码的方法体,形成正负样本集,对样本集中的每个样本构建抽象语法树,根据语法树中的节点类型替换程序员自定义的变量名以及方法名,并以先序遍历的方式序列化抽象语法树;然后对抽象语法树节点中的节点信息进行分词,为每个词分配一个独立的节点编号;其次对树节点进行进一步的拆分,形成词序列,基于滑动窗口与哈希函数训练出相应的漏洞检测分类模型.最后,在SARD数据集中选取CWE190整数上溢和CWE191整数下溢两类漏洞进行实验,该模型在CWE190、CWE191中的分类准确率和召回率分别达到97.4%、94.2%和97.6%、95.1%.实验结果表明,提出方法能够检测到代码中的安全漏洞类型,并且在分类准确率和召回率上优于现有的方法.  相似文献   

13.
陈丰  余芸 《电子技术应用》2013,39(4):137-140
研究了常见的SQL注入检测和源代码静态分析扫描的原理,提出Java源代码SQL注入检测算法,该算法通过对Java源代码词法分析和语法分析、建立抽象语法树、定义规则、遍历语法树和跟踪等,检测Java源代码中可能的SQL注入路径,测试结果表明,算法检测效果良好,识别率高。  相似文献   

14.
分布对象中间件中的异步机制代码生成研究   总被引:5,自引:0,他引:5  
随着分布对象中间件CORBA应用领域的扩展,许多应用需要在CORBA中提供异步机制。传统的CORBA不提供异步激活机制。笔者在对象中间件CORBA领域率先实现了异步Polling机制。论文研究与在分布对象中间件CORBA中实现异步Polling机制相关的代码生成机制。提出了基于修改抽象语法树的异步代码生成算法,实现结果表明该算法可以满足模型的要求。  相似文献   

15.
在分析现有程序代码抄袭检测系统的特点及局限性的基础上,提出一种综合文本分析、结构度量和属性计数技术的混合式程序抄袭检测方法。应用文档指纹技术和Winnowing算法计算程序的文本相似度;将程序代码表示成动态控制结构树(Dynamic Control Structure tree,DCS),运用Winnowing算法计算DCS树相似度,从而得到结构相似度;收集并统计程序中的每个变量信息,应用变量相似度算法分析变量信息节点获取变量相似度;分别赋予文本相似度、结构相似度和变量相似度一个权值,计算得到总体的代码相似度。实验结果表明,所提出的方法能够有效检测出各种抄袭行为。针对不同的抄袭门槛值,使用该方法的检测结果准确度和查全率高于JPLAG系统。特别对于结构简单的程序组,此方法和JPLAG系统检测结果的平均准确度分别为82.5%和69.5%,说明所提的方法更加有效。  相似文献   

16.
针对基于PHP语言开发的Web应用系统,提出了一种基于图遍历算法的服务端请求伪造漏洞检测和利用方法。通过构建抽象语法树,获取每个文件的数据流信息,进而利用数据流中的传递依赖关系构造全局的代码属性图,使用图遍历算法对生成的代码属性图进行污点分析,得到污点变量的代码传递依赖路径图,最后使用约束求解的方法对路径图中的经过函数信息进行漏洞检测并生成可利用的攻击向量。实验结果表明,这种检测方式相较于传统的静态审计方法能够很好地发现服务端请求伪造漏洞,并能够自动化生成可绕过的攻击向量。  相似文献   

17.
刘有耀  杨鹏程 《计算机应用》2016,36(9):2422-2426
针对当前大量遗产代码无法重复利用的问题,设计一种新的编译工具将C的串行代码转换为基于MPI+OpenMP的混合并行编程代码,降低了并行编程的开发成本。首先,通过对JavaCC的优化,实现一种可以解析C语言的词法和语法分析器,进行源代码分析并生成抽象语法树;其次,根据语法树对源代码进行控制依赖性和数据依赖性分析,产生可并行化的语句块分区;再次,按照提出的并行代码生成方法得到目标代码;最后,基于Visual Studio 2010构建目标代码仿真验证环境。实验结果表明,该工具可以较为理想地实现串行代码自动并行化,与手工编写的代码在加速比上的误差为8.2%~18.4%。  相似文献   

18.
为了实现代码缺陷与代码味道的自动探测与优化, 提升优化与重构的效率, 设计并开发了一套名为SCORT的源代码优化与重构工具。SCORT将源代码解析为抽象语法树, 再探测其中存在的代码缺陷和代码味道, 最后对缺陷和味道进行自动优化和重构。在SCORT中已经实现了对15种常见代码缺陷和六种常见代码味道的检测以及自动优化与重构, 提供了多种代码味道的自动重构算法, 且具有良好的可扩展性。通过对三个待测项目的探测和优化实验结果表明, 对于常见代码缺陷的探测和优化, SCORT的精确率、召回率和准确率均可达100%; 对于部分常见的代码味道, SCORT尚需进一步完善。SCORT有助于开发人员提高代码质量, 减少源代码中存在的缺陷和味道。  相似文献   

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

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