首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到16条相似文献,搜索用时 78 毫秒
1.
消除GCC抽象语法树文本中冗余信息的算法研究   总被引:1,自引:0,他引:1  
由GCC编译器对C语言源程序进行语法分析产生的抽象语法树文本存在大量的冗余信息,如果直接对其进行解析,则会产生解析效率低、产生的抽象语法树会占用大量的存储空间的问题.针对此问题,在深入研究(GDC抽象语法树文本结构和解析过程的基础上,提出了一种高效消除冗余的算法,通过实验证明了算法的正确性和适用性,并提出了GCC抽象语法树解析的数学定义.  相似文献   

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

4.
代码克隆检测是提高软件开发效率、软件质量和可靠性的重要手段。基于抽象语法树(abstract syntax tree,AST)的单语言克隆检测已经取得了较为显著的效果,但跨语言代码的AST节点存在同义词、近义词且手工标注数据集成本高等问题,限制了现有克隆检测方法的有效性和实用性。针对上述问题,提出一种基于对比学习的树卷积神经网络(contrastive tree convolutional neural network,CTCNN)的跨语言代码克隆检测方法。该方法首先将不同编程语言的代码解析为AST,并对AST的节点类型和节点值作同义词转换处理,以降低不同编程语言AST之间的差异;同时,采用对比学习扩充负样本并对模型进行训练,使得在小样本数据集下能够最小化克隆对之间的距离,最大化非克隆对之间的距离。最后在公开数据集上进行了评测,精确度达到95.26%、召回率为99.98%、F1为97.56%。结果表明,相较于现有的最好的CLCDSA和C4方法,该模型的检测精度分别提高了43.92%和3.73%,其F1值分别提升了29.84%和6.29%,证明了所提模型是一种有效的跨语言代码克隆检测方法。  相似文献   

5.
冗余代码普遍存在于商业和开源软件中,它的存在可能会增加内存占用,影响代码可维护性,增加维护成本。快速类型分析算法是当前Java冗余代码检测中常用的静态分析方法,该算法在虚方法分析方面还存在一些不足。XTA是一种调用图构造算法,在处理虚方法的调用方面具有较高的精度和效率。文中提出了一种基于XTA调用图构建算法的方法来检测Java代码中的冗余代码,在一个名为“RCD”(Redundant Code Detection)的工具原型中实现了这种方法,并通过构建知识图谱辅助人工审查,以提高人工审查的效率以及冗余代码检测的可信度。通过在4个开源Java应用程序上的实验对RCD与其他3个冗余代码检测工具进行了比较。实验结果表明,RCD在检测冗余代码的准确性方面相比其他工具提高了1%~30%,同时在检测冗余虚方法的完整性方面提升了4%左右。  相似文献   

6.
朱辉  沈明星  李善平 《计算机工程》2010,36(10):173-175
研究Web应用中的代码注入漏洞,总结分析该类漏洞的特征,修正并扩展其定义,把漏洞的产生原因归纳为2类编码错误。提出一套通过识别2类编码错误发现Web应用中代码注入漏洞的测试方法。实验结果证明,该方法可减少测试工作量,能全面有效地测试Web应用中的代码注入漏洞和潜在的风险点。  相似文献   

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

8.
易长安 《数字社区&智能家居》2009,5(8):6229-6230,6237
重复代码是程序中最常见的“坏味道”,也是导致软件维护费用高昂的原因之一。关于重复代码的重构技术已经研究了很多年了.该文主要对重复代码检测技术的国内外研究现状进行分析和比较、指出了它们的优缺点,并在此基础上展望了其以后的发展趋势。  相似文献   

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

10.
针对基于语言模型的代码补全方法忽略源代码中结构信息和命名信息而导致补全准确率偏低的问题,提出一种基于多任务学习的代码补全方法(multi-task learning code completion, MTLCC)。MTLCC对源代码数据集进行数据清洗和预处理,通过抽象语法树(abstract syntax tree, AST)提取源代码中的结构信息和命名信息;构建基于Transformer的多任务学习网络,采用软参数共享学习方式分别对源代码的节点类型预测、节点值预测和语句预测进行训练;利用集束搜索对模型推理结果进行后期处理生成代码补全建议列表。实验结果表明,与Pointer network、LSTM+TransformerXL和CodeGPT中最好的模型相比,MTLCC在节点类型预测和节点值预测任务中的准确率分别提升了2.5%和1.7%、MRR分别提升了3.7%和2.4%,在语句预测任务中的ROUGE-L分数(L@4)提升了0.055。  相似文献   

11.
在软件开发的过程中,开发人员通过复制粘贴式的开发方式或者模块化的开发方式来完成需求是十分常见的,这两种开发方式可以提高开发效率,但同时会导致软件系统中出现大量的相同代码或者相似代码,大量的相似代码会给软件维护等方面带来很大的困难,这也是最常见的重构对象。源代码相似性度量是指利用一定的检测方法分析程序源代码间的相似程度。该技术被应用于代码抄袭检测、代码克隆检测、软件知识产权保护、代码复用等多个领域。为了提高代码相似性度量的准确性,提出了一种基于多特征值的源代码相似性检测技术。构建了源代码注释、型构、代码文本语句与结构中特征提取的方法,并给出了源代码相似度检测的度量模型。通过与权威的代码相似检测系统Moss进行对比实验,结果表明该方法可以更准确地检测出相似代码。  相似文献   

12.
重复代码是程序中最常见的"坏味道",也是导致软件维护费用高昂的原因之一。关于重复代码的重构技术已经研究了很多年了,该文主要对重复代码检测技术的国内外研究现状进行分析和比较、指出了它们的优缺点,并在此基础上展望了其以后的发展趋势。  相似文献   

13.
在软件同源性检测方法中,基于抽象语法树的比对方法能够有效地检测出基于代码全文拷贝、修改变量名、调整代码顺序等的抄袭手段,被广泛用于抄袭检测工具中。但基于抽象语法树的比对方法对于修改变量类型和添加无意义变量的抄袭手段束手无策。针对这种情况,提出了一种基于抽象语法树的改进思想,该思想通过剪去语法树中影响判断的叶子节点的手段来还原检测原文抄袭,能够达到有效检测修改变量类型和添加无意义变量等抄袭的目的。  相似文献   

14.
防御代码注入式攻击的字面值污染方法   总被引:1,自引:0,他引:1  
当前几乎所有的Web应用程序都面临着诸如跨站脚本(XSS)和SQL注入等代码注入式攻击的威胁,这种威胁源自于程序对用户输入缺乏验证和过滤,导致恶意输入可作为数据库查询或页面中的脚本而执行,从而破坏网站的数据完整性,泄露用户隐私.为了增强应用程序对此类攻击的抵抗性,提出一种针对Web程序的字面值污染方法,该方法能够对代码注入式攻击给予高效的防御且十分易于部署.此方案通过强化服务器端脚本配合可自定义的安全过滤策略,达到对此类攻击的完全免疫.尽管需要对Web应用程序进行插桩等修改,但该过程是完全自动化和正确的,在处理大规模的程序时具有很强的实用价值.通过实现该技术的原型系统PHPHard对若干PHP应用程序的初步实验,可以发现该方法能够移除恶意脚本,成功阻止跨站脚本的攻击.与传统方法相比,它在精确度和有效性上具有优势,且仅引入了很小的开销.  相似文献   

15.
克隆代码又被称为重复代码,是一种代码坏味,针对传统的保持语法结构不变的过程提取方法提取克隆代码时存在的对某些克隆代码无法直接提取的问题,提出一种新的语义保持的克隆代码无定型过程提取方法,该方法结合程序依赖图和抽象语法树对程序进行语义分析,取消了传统的保持语法结构不变的过程提取算法对语句结构一致性的约束,保留了语义一致性约束,从而解决了传统方法不易处理的连续但不能直接提取的克隆代码提取问题,降低了对未标记语句提升的需求,并且不需要对跳转语句进行特殊处理.实验结果表明该方法可以提取传统的保持语法结构不变的过程提取方法不能提取的克隆代码,提高了克隆代码过程提取的准确性和适用性.  相似文献   

16.
针对现有基于静态分析的JavaScript代码推荐技术准确度低且响应速度较慢的问题,提出一种基于动态分析的JavaScript代码提示方法,并设计基于Eclipse插件的代码推荐工具。采用事先建模的方法保存模拟运行环境,并且对上下文对象建立特征索引。同时在用户代码抽象语法树的基础上进行代码分块,按程序分块顺序对用户代码进行模拟执行,利用对象之间的相似度在用户运行时修正运行变量,并对模拟执行时产生的异常进行处理,实现针对用户代码的动态分析JavaScript代码提示。实验结果表明,与现有使用静态分析方法的JavaScript代码推荐技术相比,该方法具有更高的可推荐性和更快的响应速度。  相似文献   

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

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