期刊文献+
共找到42篇文章
< 1 2 3 >
每页显示 20 50 100
DeepCom-GCN:融入控制流结构信息的代码注释生成模型
1
作者 钟茂生 刘会珠 +1 位作者 匡江玲 严婷 《江西师范大学学报(自然科学版)》 北大核心 2025年第1期27-36,共10页
代码注释生成是指给定一个代码片段,通过模型自动生成一段关于代码片段功能的概括性自然语言描述.不同于自然语言,程序语言具有复杂语法和强结构性.部分研究工作只利用了源代码的序列信息或抽象语法树信息,未能充分利用源代码的逻辑结... 代码注释生成是指给定一个代码片段,通过模型自动生成一段关于代码片段功能的概括性自然语言描述.不同于自然语言,程序语言具有复杂语法和强结构性.部分研究工作只利用了源代码的序列信息或抽象语法树信息,未能充分利用源代码的逻辑结构信息.针对这一问题,该文提出一种融入程序控制流结构信息的代码注释生成方法,将源代码序列和结构信息作为单独的输入进行处理,允许模型学习代码的语义和结构.在2个公开数据集上进行验证,实验结果表明:和其他基线方法相比,DeepCom-GCN在BLEU-4、METEOR和ROUGE-L指标上的性能分别提升了2.79%、1.67%和1.21%,验证了该方法的有效性. 展开更多
关键词 代码注释生成 抽象语法树 控制流图 图卷积神经网络 软件工程 程序理解 自然语言处理
在线阅读 下载PDF
基于CNN和自注意力神经网络的代码补全方法
2
作者 陈伟 何成万 +2 位作者 余秋惠 贺正源 罗蝶 《计算机工程与设计》 北大核心 2025年第10期2919-2926,共8页
由于基于抽象语法树的代码补全模型在提取代码序列细粒度的局部特征方面能力较差,并且难以应用于实际开发场景,提出一种基于卷积神经网络(convolutional neural network,CNN)和自注意力神经网络Transformer的代码补全方法。采用基于代... 由于基于抽象语法树的代码补全模型在提取代码序列细粒度的局部特征方面能力较差,并且难以应用于实际开发场景,提出一种基于卷积神经网络(convolutional neural network,CNN)和自注意力神经网络Transformer的代码补全方法。采用基于代码轻量级语法信息的预处理方法,并提出将CNN与Transformer网络以参数有效的方式结合,对代码序列的全局和局部依赖关系进行全面性建模。模型采用多任务学习机制(multi-task learning,MTL)共享代码token值和类型信息,提取代码序列中的语法和语义特征完成代码token级补全任务。实验结果表明,所提出的代码补全方法在ETH 150K Python数据集上准确率达到74.85%,显著优于基线方法。 展开更多
关键词 代码补全 多任务学习 Transformer 卷积神经网络 抽象语法树 轻量级语法 深度学习
在线阅读 下载PDF
基于AST的MATLAB到Python转换器
3
作者 郭瑞 徐文浩 +2 位作者 谢鹏志 杨威 宋友 《计算机工程与科学》 北大核心 2025年第6期1041-1049,共9页
MATLAB语言被广泛应用于工业领域产品研发的各个环节,但是在实际工程应用场景中,需要将其建立的机理模型脱离MATLAB运行环境,与实际的工程系统集成应用,故需要一种将MATLAB建立的模型快速工程化的工具。为此,提出一种MATLAB到Python转换... MATLAB语言被广泛应用于工业领域产品研发的各个环节,但是在实际工程应用场景中,需要将其建立的机理模型脱离MATLAB运行环境,与实际的工程系统集成应用,故需要一种将MATLAB建立的模型快速工程化的工具。为此,提出一种MATLAB到Python转换器M2P,该转换器基于抽象语法树AST,将源代码转换到AST结构,对该结构进行分析并利用替换规则生成结果代码,最终实现MATLAB到Python的代码等价转换。对比代码转换实验的结果表明,所提转换器与现有的其他MATLAB到Python转换转换器相比具有更高的转换性能。 展开更多
关键词 代码转换 MATLAB-to-Python 抽象语法树
在线阅读 下载PDF
基于动态语义反馈的JavaScript引擎模糊测试方法研究
4
作者 刘博强 陈泽茂 《信息安全研究》 北大核心 2025年第11期1031-1039,共9页
JavaScript在服务器、嵌入式设备等开发场景中广泛应用,JavaScript引擎作为其编译和执行器,其中的安全漏洞极易引发大范围安全事件,因此针对JavaScript引擎的模糊测试成为研究热点.现有JavaScript引擎模糊测试技术生成的测试用例存在有... JavaScript在服务器、嵌入式设备等开发场景中广泛应用,JavaScript引擎作为其编译和执行器,其中的安全漏洞极易引发大范围安全事件,因此针对JavaScript引擎的模糊测试成为研究热点.现有JavaScript引擎模糊测试技术生成的测试用例存在有效率低、多样性不足等问题.针对这些问题,提出一种基于动态语义反馈的模糊测试方法,通过运行时语义信息的动态收集、分析和反馈机制辅助测试用例生成,提高测试用例的有效率.在此基础上,采用表达式替换和函数创建等用例变异策略,提高测试用例的语法探索能力.实现了JavaScript引擎模糊测试原型系统DSFfuzz,在JerryScript引擎的模糊测试对比实验中,DSFfuzz相较于3个先进工作测试用例有效率平均提升了11.81%,且触发的独特崩溃最多,发现了15个独特崩溃,证明了该方法的有效性. 展开更多
关键词 JAVASCRIPT引擎 模糊测试 抽象语法树 代码块组装 动态语义反馈
在线阅读 下载PDF
一种CMA数值预报模式代码质量检测方法与实现
5
作者 李佳静 杨泽 +3 位作者 王彬 刘易凡 董泽信 孟涛 《应用气象学报》 北大核心 2025年第2期155-163,共9页
中国气象局(CMA)数值预报的统筹研发对支撑平台的能力建设提出了更高要求,其中一个重要方面就是对数值预报模式代码的质量检测能力。目前缺乏有效针对数值预报模式代码的质量检测方法和工具,尤其对于性能缺陷和大规模代码的检测不能满... 中国气象局(CMA)数值预报的统筹研发对支撑平台的能力建设提出了更高要求,其中一个重要方面就是对数值预报模式代码的质量检测能力。目前缺乏有效针对数值预报模式代码的质量检测方法和工具,尤其对于性能缺陷和大规模代码的检测不能满足需要。为解决上述问题,该文针对子程序定义、数组操作和I/O操作等常见编程规则设计检测方法。该方法采用程序代码解析、抽象语法树匹配和流敏感的静态程序检测等关键技术,其中对分支和循环语句的分析方法有效避免了路径爆炸问题。基于该方法的检测工具在数值预报科创平台V1.0代码协同开发栏目提供使用,并应用于CMA区域数值模式的国省统筹研发。 展开更多
关键词 数值预报模式代码 代码质量 抽象语法树匹配 流敏感程序分析 有穷状态机
在线阅读 下载PDF
Bug localization based on syntactical and semantic information of source code
6
作者 YAN Xuefeng CHENG Shasha GUO Liqin 《Journal of Systems Engineering and Electronics》 SCIE EI CSCD 2023年第1期236-246,共11页
The existing software bug localization models treat the source file as natural language, which leads to the loss of syntactical and structure information of the source file. A bug localization model based on syntactic... The existing software bug localization models treat the source file as natural language, which leads to the loss of syntactical and structure information of the source file. A bug localization model based on syntactical and semantic information of source code is proposed. Firstly, abstract syntax tree(AST) is divided based on node category to obtain statement sequence. The statement tree is encoded into vectors to capture lexical and syntactical knowledge at the statement level.Secondly, the source code is transformed into vector representation by the sequence naturalness of the statement. Therefore,the problem of gradient vanishing and explosion caused by a large AST size is obviated when using AST to the represent source code. Finally, the correlation between bug reports and source files are comprehensively analyzed from three aspects of syntax, semantics and text to locate the buggy code. Experiments show that compared with other standard models, the proposed model improves the performance of bug localization, and it has good advantages in mean reciprocal rank(MRR), mean average precision(MAP) and Top N Rank. 展开更多
关键词 bug report abstract syntax tree code representation software bug localization
在线阅读 下载PDF
Identification of refactoring opportunities for source code based on class association relationships
7
作者 LIU Wei YANG Na +2 位作者 HUANG Xin-di HU Wei HU Zhi-gang 《Journal of Central South University》 SCIE EI CAS CSCD 2020年第12期3768-3778,共11页
In order to deal with the complex association relationships between classes in an object-oriented software system,a novel approach for identifying refactoring opportunities is proposed.The approach can be used to dete... In order to deal with the complex association relationships between classes in an object-oriented software system,a novel approach for identifying refactoring opportunities is proposed.The approach can be used to detect complex and duplicated many-to-many association relationships in source code,and to provide guidance for further refactoring.In the approach,source code is first transformed to an abstract syntax tree from which all data members of each class are extracted,then each class is characterized in connection with a set of association classes saving its data members.Next,classes in common associations are obtained by comparing different association classes sets in integrated analysis.Finally,on condition of pre-defined thresholds,all class sets in candidate for refactoring and their common association classes are saved and exported.This approach is tested on 4 projects.The results show that the precision is over 96%when the threshold is 3,and 100%when the threshold is 4.Meanwhile,this approach has good execution efficiency as the execution time taken for a project with more than 500 classes is less than 4 s,which also indicates that it can be applied to projects of different scales to identify their refactoring opportunities effectively. 展开更多
关键词 identification of refactoring opportunities abstract syntax tree class association relationships common association classes source code
在线阅读 下载PDF
ECMAScript解释器的中间代码生成技术研究 被引量:1
8
作者 王宜春 李蜀瑜 +1 位作者 曹清 吴健 《计算机工程与应用》 CSCD 北大核心 2003年第18期135-136,171,共3页
论文详细介绍了在ECMAScript解释器中,中间代码生成部分的设计和实现方法。同时也简要介绍了解释器的整体结构。
关键词 ecmascript 中间代码 抽象语法树
在线阅读 下载PDF
基于对比学习的跨语言代码克隆检测方法 被引量:2
9
作者 吕泉润 谢春丽 +1 位作者 万泽轩 魏家劲 《计算机应用研究》 CSCD 北大核心 2024年第7期2147-2152,共6页
代码克隆检测是提高软件开发效率、软件质量和可靠性的重要手段。基于抽象语法树(abstract syntax tree,AST)的单语言克隆检测已经取得了较为显著的效果,但跨语言代码的AST节点存在同义词、近义词且手工标注数据集成本高等问题,限制了... 代码克隆检测是提高软件开发效率、软件质量和可靠性的重要手段。基于抽象语法树(abstract syntax tree,AST)的单语言克隆检测已经取得了较为显著的效果,但跨语言代码的AST节点存在同义词、近义词且手工标注数据集成本高等问题,限制了现有克隆检测方法的有效性和实用性。针对上述问题,提出一种基于对比学习的树卷积神经网络(contrastive tree convolutional neuraln etwork,CTCNN)的跨语言代码克隆检测方法。该方法首先将不同编程语言的代码解析为AST,并对AST的节点类型和节点值作同义词转换处理,以降低不同编程语言AST之间的差异;同时,采用对比学习扩充负样本并对模型进行训练,使得在小样本数据集下能够最小化克隆对之间的距离,最大化非克隆对之间的距离。最后在公开数据集上进行了评测,精确度达到95.26%、召回率为99.98%、F_(1)为97.56%。结果表明,相较于现有的最好的CLCDSA和C4方法,该模型的检测精度分别提高了432%和3.73%,其F_(1)值分别提升了29.84%和6.29%,证明了所提模型是一种有效的跨语言代码克隆检测方法。 展开更多
关键词 跨语言 代码克隆 对比学习 抽象语法树
在线阅读 下载PDF
基于依赖增强的分层抽象语法树的代码克隆检测 被引量:2
10
作者 万泽轩 谢春丽 +1 位作者 吕泉润 梁瑶 《计算机应用》 CSCD 北大核心 2024年第4期1259-1268,共10页
在软件工程领域,基于语义相似的代码克隆检测方法可以降低软件维护的成本并预防系统漏洞,抽象语法树(AST)作为典型的代码抽象表征形式,已成功应用于多种程序语言的代码克隆检测任务,然而现有工作主要利用原始AST提取代码的语义,没有深... 在软件工程领域,基于语义相似的代码克隆检测方法可以降低软件维护的成本并预防系统漏洞,抽象语法树(AST)作为典型的代码抽象表征形式,已成功应用于多种程序语言的代码克隆检测任务,然而现有工作主要利用原始AST提取代码的语义,没有深入挖掘AST中的深层语义和结构信息。针对上述问题,提出一种基于依赖增强的分层抽象语法树(DEHAST)的代码克隆检测方法。首先,对AST进行分层处理,将AST划分得到不同的语义层次;其次,为AST的不同层次添加相应的依赖增强边构建DEHAST,将简单的AST变成具有更丰富程序语义的异构图;最后,使用图匹配网络(GMN)模型检测异构图的相似性,实现代码克隆检测。在BigCloneBench和Google Code Jam两个数据集上的实验结果显示,DEHAST能够检测100%的Type-1和Type-2代码克隆、99%的Type-3代码克隆和97%的Type-4代码克隆;与基于树的方法ASTNN(AST-based Neural Network)相比,F1分数均提高了4个百分点,验证了DEHAST可以较好地完成代码语义克隆检测。 展开更多
关键词 代码克隆检测 语义克隆 抽象语法树 深度学习 图匹配网络
在线阅读 下载PDF
基于CB-Attention的JavaScript恶意混淆代码检测方法
11
作者 徐鑫 张志宁 +2 位作者 吕云山 李立 郑玉杰 《计算机工程与设计》 北大核心 2024年第8期2298-2305,共8页
当今JavaScript代码混淆方法日益多样,现有检测方法在对混淆代检测时会出现漏报和误报的情况,为解决该问题,提出一种基于CB-Attention的JavaScript恶意代码检测方法。由SDPCNN模型和BiLSTM+Attention模型构成,SDPCNN对短距离间的语义特... 当今JavaScript代码混淆方法日益多样,现有检测方法在对混淆代检测时会出现漏报和误报的情况,为解决该问题,提出一种基于CB-Attention的JavaScript恶意代码检测方法。由SDPCNN模型和BiLSTM+Attention模型构成,SDPCNN对短距离间的语义特征信息进行提取,BiLSTM+Attention获取JavaScript代码中长距离间的语义信息特征。为验证所提方法的有效性,将该方法与其它方法进行对比,对比结果表明,该方法具有较好的检测效果,F1-Score可达98.78%。 展开更多
关键词 JavaScript恶意代码 混淆代码 检测模型 增强深度金字塔卷积神经网络 注意力网络 双向长短时记忆网络 长距离特征信息 抽象语法树
在线阅读 下载PDF
一种重构二进制代码中类型抽象的方法 被引量:8
12
作者 马金鑫 李舟军 +2 位作者 忽朝俭 张俊贤 郭涛 《计算机研究与发展》 EI CSCD 北大核心 2013年第11期2418-2428,共11页
重构二进制代码中的类型信息对逆向工程、漏洞分析及恶意代码检测等方面具有重大的意义,由于类型信息在编译过程中被移除,且二进制代码中的低级抽象难以理解,因此类型重构一直被认为是恢复高级抽象遇到的困难问题之一,现有的大多工具对... 重构二进制代码中的类型信息对逆向工程、漏洞分析及恶意代码检测等方面具有重大的意义,由于类型信息在编译过程中被移除,且二进制代码中的低级抽象难以理解,因此类型重构一直被认为是恢复高级抽象遇到的困难问题之一,现有的大多工具对类型重构的准确度不够高.提出一种保守的类型重构方法,针对类型重构引入一种简单的中间语言,基于这种中间语言构造寄存器抽象语法树,并使用寄存器抽象语法树部分解决了基址指针别名问题,可有效收集基本类型和结构体类型的类型约束信息.提出一种判断二进制代码中的循环结构及识别循环变量的方法,可有效收集数组类型的约束信息,并据此生成类型约束,然后通过处理类型约束来重构最终的类型.使用CoreUtils中的15个程序作为测试用例,将该方法与IDA Pro进行对比实验.实验结果表明提出的方法不仅可以高效地重构数据类型,而且在结构体类型重构方面可恢复比IDA Pro多达5倍的数据.对这些数据的人工验证与分析表明,使用该方法重构的类型准确率高. 展开更多
关键词 类型重构 寄存器抽象语法树 中间语言 循环变量 别名分析
在线阅读 下载PDF
使用抽象语法树和静态分析的克隆代码自动重构方法 被引量:14
13
作者 于冬琦 彭鑫 赵文耘 《小型微型计算机系统》 CSCD 北大核心 2009年第9期1752-1760,共9页
单个软件系统中以及若干个相似系统之间的代码克隆给软件维护增加了很大困难.本文针对运用克隆侦测发现的相似代码片断,提出一种基于抽象语法树和静态分析的代码自动重构方法.该方法首先为克隆代码分别构造抽象语法树,然后运用语句差异... 单个软件系统中以及若干个相似系统之间的代码克隆给软件维护增加了很大困难.本文针对运用克隆侦测发现的相似代码片断,提出一种基于抽象语法树和静态分析的代码自动重构方法.该方法首先为克隆代码分别构造抽象语法树,然后运用语句差异度指标建立起语法树之间流程控制语句的对应关系.在此基础上,该方法根据控制流程和基本语句块两个层次上的差异性分析,最终通过代码可变点提取实现克隆代码的自动合并.针对Java代码开发了克隆代码重构支持工具原型,并分别针对JDK1.5和一个业务系统进行了自动重构实验.初步的结果表明,该方法能够准确、有效地辅助开发者实现克隆代码的自动重构. 展开更多
关键词 可变点提取 代码克隆 抽象语法树 再工程 逆向工程
在线阅读 下载PDF
代码缺陷与代码味道的自动探测与优化研究 被引量:5
14
作者 刘伟 刘宏韬 胡志刚 《计算机应用研究》 CSCD 北大核心 2014年第1期170-176,共7页
为了实现代码缺陷与代码味道的自动探测与优化,提升优化与重构的效率,设计并开发了一套名为SCORT的源代码优化与重构工具。SCORT将源代码解析为抽象语法树,再探测其中存在的代码缺陷和代码味道,最后对缺陷和味道进行自动优化和重构。在S... 为了实现代码缺陷与代码味道的自动探测与优化,提升优化与重构的效率,设计并开发了一套名为SCORT的源代码优化与重构工具。SCORT将源代码解析为抽象语法树,再探测其中存在的代码缺陷和代码味道,最后对缺陷和味道进行自动优化和重构。在SCORT中已经实现了对15种常见代码缺陷和六种常见代码味道的检测以及自动优化与重构,提供了多种代码味道的自动重构算法,且具有良好的可扩展性。通过对三个待测项目的探测和优化实验结果表明,对于常见代码缺陷的探测和优化,SCORT的精确率、召回率和准确率均可达100%;对于部分常见的代码味道,SCORT尚需进一步完善。SCORT有助于开发人员提高代码质量,减少源代码中存在的缺陷和味道。 展开更多
关键词 代码缺陷 代码味道 探测 优化 重构 抽象语法树
在线阅读 下载PDF
基于多特征权重分配的源代码搜索优化 被引量:6
15
作者 李阵 钮俊 +1 位作者 王奎 辛园园 《计算机应用》 CSCD 北大核心 2018年第3期812-817,共6页
对开源代码进行准确搜索是实现代码复用的前提。在基于关键字搜索的研究中,目前只关注匹配方法签名。结合源代码注释对方法功能的语义描述,提出结合代码注释的关键字搜索方法。通过生成源代码抽象语法树,从中识别方法签名与各类型注释... 对开源代码进行准确搜索是实现代码复用的前提。在基于关键字搜索的研究中,目前只关注匹配方法签名。结合源代码注释对方法功能的语义描述,提出结合代码注释的关键字搜索方法。通过生成源代码抽象语法树,从中识别方法签名与各类型注释等组合代码特征;将代码特征与查询语句分别用向量表示,并计算向量间的余弦相似度,然后制定针对搜索结果多特征权重分配的评分机制。根据评分对搜索结果进行排序,得到与查询语句相关的结果序列。实验结果表明,多个代码特征在不同权重影响下可以提升源代码搜索准确度。 展开更多
关键词 代码复用 代码注释 方法签名 抽象语法树 代码特征
在线阅读 下载PDF
建立抽象语法树模型评测C++代码 被引量:6
16
作者 崔舒宁 吴宁 叶丹 《计算机应用》 CSCD 北大核心 2015年第A01期183-185,191,共4页
目前绝大多数的C++程序评测是通过对程序运行结果和标准测试用例的比对,给出非对即错的2值评判。而在虚拟实验室和慕课中,需要结合程序源码给出更全面客观的评价。针对此问题,通过建立C++源代码的抽象语法树,改进了结果相似度和程序代... 目前绝大多数的C++程序评测是通过对程序运行结果和标准测试用例的比对,给出非对即错的2值评判。而在虚拟实验室和慕课中,需要结合程序源码给出更全面客观的评价。针对此问题,通过建立C++源代码的抽象语法树,改进了结果相似度和程序代码相似度的计算方法,使其能够反映程序语义之间的相似度,并在此基础上建立了C++代码综合评价模型。通过实际检验,和人工批改相比较平均批改准确率达到了92.11%,并以百分制的方式给出评价结果。结合程序语义的评价,不仅对学生而言给出了更公正的评分,也为后续的虚拟实验室智能在线指导提供了基础。 展开更多
关键词 在线评测 抽象语法树 代码相似度 慕课 程序设计
在线阅读 下载PDF
单例模式导向的源代码自动重构研究 被引量:6
17
作者 刘伟 胡志刚 刘宏韬 《小型微型计算机系统》 CSCD 北大核心 2014年第12期2664-2669,共6页
针对手工重构存在容易引入错误且重构效率较低等问题,本文提出了一种以单例模式为导向的源代码自动重构方法.首先将源代码转换成抽象语法树,然后对抽象语法树进行操作,按照单例模式的要求修改抽象语法树,并自动生成重构后的单例类.该方... 针对手工重构存在容易引入错误且重构效率较低等问题,本文提出了一种以单例模式为导向的源代码自动重构方法.首先将源代码转换成抽象语法树,然后对抽象语法树进行操作,按照单例模式的要求修改抽象语法树,并自动生成重构后的单例类.该方法不仅可以对指定类进行自动单例化重构,还可以对源代码中所有创建该类实例的代码进行自动重构.对方法进行正确性检验并将其应用于两个不同规模的软件项目,实验结果表明该方法可以准确、高效地实现类的自动单例化重构,重构算法的执行时间与系统规模呈线性关系. 展开更多
关键词 源代码解析 抽象语法树 重构 自动重构 单例模式 模式导向重构
在线阅读 下载PDF
基于动态分析的JavaScript代码推荐 被引量:6
18
作者 吴通 陈雨亭 《计算机工程》 CAS CSCD 2014年第10期66-70,共5页
针对现有基于静态分析的JavaScript代码推荐技术准确度低且响应速度较慢的问题,提出一种基于动态分析的JavaScript代码提示方法,并设计基于Eclipse插件的代码推荐工具。采用事先建模的方法保存模拟运行环境,并且对上下文对象建立特征索... 针对现有基于静态分析的JavaScript代码推荐技术准确度低且响应速度较慢的问题,提出一种基于动态分析的JavaScript代码提示方法,并设计基于Eclipse插件的代码推荐工具。采用事先建模的方法保存模拟运行环境,并且对上下文对象建立特征索引。同时在用户代码抽象语法树的基础上进行代码分块,按程序分块顺序对用户代码进行模拟执行,利用对象之间的相似度在用户运行时修正运行变量,并对模拟执行时产生的异常进行处理,实现针对用户代码的动态分析JavaScript代码提示。实验结果表明,与现有使用静态分析方法的JavaScript代码推荐技术相比,该方法具有更高的可推荐性和更快的响应速度。 展开更多
关键词 代码推荐 ECLIPSE插件 动态分析 抽象语法树 模拟运行 异常处理
在线阅读 下载PDF
基于预训练模型和多层次信息的代码坏味检测方法 被引量:6
19
作者 张杨 东春浩 +1 位作者 刘辉 葛楚妍 《软件学报》 EI CSCD 北大核心 2022年第5期1551-1568,共18页
目前已有的代码坏味检测方法仅依赖于代码结构信息和启发式规则,对嵌入在不同层次代码中的语义信息关注不够,而且现有的代码坏味检测方法准确率还有进一步提升的空间.针对该问题,提出一种基于预训练模型和多层次信息的代码坏味检测方法D... 目前已有的代码坏味检测方法仅依赖于代码结构信息和启发式规则,对嵌入在不同层次代码中的语义信息关注不够,而且现有的代码坏味检测方法准确率还有进一步提升的空间.针对该问题,提出一种基于预训练模型和多层次信息的代码坏味检测方法DeepSmell,首先采用静态分析工具提取程序中的代码坏味实例和多层次代码度量信息,并对代码坏味实例进行标记;然后通过抽象语法树解析并获取源代码中与代码坏味相关的层次信息,将其中的文本信息与度量信息相结合生成数据样本;最后使用BERT预训练模型将文本信息转化为词向量,应用GRU-LSTM模型获取层次信息之间潜在的语义关系,并结合CNN模型与注意力机制检测代码坏味.在实验中,选取JUnit、Xalan和SPECjbb2005等24个大型实际应用程序构建训练集和测试集,并对特征依恋、长方法、数据类和上帝类等4种代码坏味进行检测.实验结果表明,DeepSmell与目前已有的检测方法相比在平均查全率和F1值上分别提高了9.3%和10.44%,同时保持了较高的查准率,DeepSmell可以有效地实现代码坏味检测. 展开更多
关键词 代码坏味 深度学习 预训练模型 抽象语法树 多层次信息
在线阅读 下载PDF
基于抽象语法树的数据泥团自动检测研究 被引量:3
20
作者 刘宏韬 刘伟 胡志刚 《计算机应用与软件》 2017年第1期15-20,共6页
数据泥团是一种常见的代码味道,它将带来重复代码和维护难度增加等问题。针对大部分已有的代码味道自动检测工具无法检测数据泥团,且检测类型不全面等问题,提出一种基于抽象语法树的数据泥团自动检测方法。该方法在已有检测工具的基础上... 数据泥团是一种常见的代码味道,它将带来重复代码和维护难度增加等问题。针对大部分已有的代码味道自动检测工具无法检测数据泥团,且检测类型不全面等问题,提出一种基于抽象语法树的数据泥团自动检测方法。该方法在已有检测工具的基础上,增加了新的数据泥团类型,并加入了剔除冗余数据泥团和提取子数据泥团等步骤。通过对4个开源项目进行数据泥团实验,结果表明方法具有较高的精确率,与Stench Blossom、inFusion等工具的数据泥团自动检测功能相比,能够检测出一些其他工具无法检测的数据泥团。同时,该方法具有较好的性能,执行时间与系统规模成正比。 展开更多
关键词 代码味道 数据泥团 抽象语法树 源代码解析 重构
在线阅读 下载PDF
上一页 1 2 3 下一页 到第
使用帮助 返回顶部