期刊文献+
共找到21篇文章
< 1 2 >
每页显示 20 50 100
Bagging异构集成的代码异味检测与重构优先级划分
1
作者 吴海涛 蔡咏琦 高建华 《计算机工程与应用》 CSCD 北大核心 2024年第3期138-147,共10页
代码异味是不良的设计和代码实现的症状,可能阻碍代码理解、增加代码更改和出错的可能性。以前的研究专注于单一模型在代码异味上的检测,并且无法为开发人员提供重构建议。针对上述问题,提出一种基于Bagging异构集成模型的代码异味检测... 代码异味是不良的设计和代码实现的症状,可能阻碍代码理解、增加代码更改和出错的可能性。以前的研究专注于单一模型在代码异味上的检测,并且无法为开发人员提供重构建议。针对上述问题,提出一种基于Bagging异构集成模型的代码异味检测与重构优先级划分方法,该方法利用分类器间的异质性,通过F1集成策略来检测Complex Class、Long Method、Spaghetti Code等三种代码异味,并将模型输出的异味概率转化为可能性分布后,为开发人员提供重构意见。实验在6个开源系统的32个版本上验证、评估:(1)基分类器的稳定性以及与代码异味的关系;(2)Bagging异构集成模型检测上述代码异味的性能;(3)将异味概率转化为可能性分布并作为重构优先级的有效性。实验结果表明,最佳基分类器因代码异味类型而异。同时,Bagging异构集成模型相较于基分类器,F1提高0.06~40.51个百分点,AUC提高0.45~28.37个百分点。最后将Bagging异构集成模型的重构优先级与6名受访者的重构优先级进行Kappa一致性检验,两者具有高度一致性。 展开更多
关键词 代码异味 机器学习 集成学习 软件重构 可能性分布
下载PDF
机器学习在Android代码异味检测中的应用
2
作者 孙梦琪 边奕心 《长江信息通信》 2024年第2期138-140,144,共4页
由于现有代码异味检测方法存在多方面的限制,无法准确高效的检测Android代码异味共存,提出基于机器学习的Android代码异味共存检测方法。首先提出并实现工具ASSD得到分离好的正负样本集,提取源代码中的文本信息作为机器学习分类器的输入... 由于现有代码异味检测方法存在多方面的限制,无法准确高效的检测Android代码异味共存,提出基于机器学习的Android代码异味共存检测方法。首先提出并实现工具ASSD得到分离好的正负样本集,提取源代码中的文本信息作为机器学习分类器的输入,从而实现机器学习检测Android代码异味共存。设计对比实验,实验结果表明机器学习可以检测Android代码异味共存,并且检测效果较现有基于静态程序分析的检测方法有较大提升,其中随机森林模型效果最好,其F1值提升了22%。 展开更多
关键词 机器学习 代码异味共存 Android代码异味
下载PDF
基于图表示学习的代码异味强度排序模型
3
作者 王书涵 陈军华 高建华 《小型微型计算机系统》 CSCD 北大核心 2023年第12期2825-2831,共7页
代码异味的存在使得软件系统难以开发和维护.现有的代码异味检测器通常仅输出结果,忽略了结合开发者的需求对检测出的异味按照其强度进行排序,而将判断异味重构优先级的耗时过程留给了开发人员.因此,本文提出了基于图表示学习的代码异... 代码异味的存在使得软件系统难以开发和维护.现有的代码异味检测器通常仅输出结果,忽略了结合开发者的需求对检测出的异味按照其强度进行排序,而将判断异味重构优先级的耗时过程留给了开发人员.因此,本文提出了基于图表示学习的代码异味强度排序模型,为开发人员的重构优先级决策提供参考.该模型利用抽象语法树与代码间的依赖调用关系构建语义结构图,采用无监督的图表示学习方法将语义结构图与代码度量信息结合生成嵌入表示,利用机器学习方法,根据开发人员感知的异味严重性程度实现代码异味的强度排序.本文将模型应用于4种常见的代码异味,即Blob、Complex Class、Spaghetti Code与Shotgun Surgery.通过实验表明,本文提出的代码异味强度排序模型在大型开源项目上具有科学性与有效性,相较于基线方法,F1值最高提升了10.35%. 展开更多
关键词 代码异味强度 图表示学习 无监督学习 机器学习
下载PDF
一种基于分层抽象语法树的Android代码异味检测方法
4
作者 黄雅菁 《上海师范大学学报(自然科学版)》 2023年第4期418-423,共6页
Android应用程序中存在大量的代码异味,现有的Android代码异味检测工具效率较低.为此,将抽象语法树(AST)进行分层,提出一种基于分层AST的Android异味检测方法.实例研究表明,与其他方法相比,该方法能检测出更多类型的Android代码异味.
关键词 抽象语法树(AST) Android应用程序 代码异味
下载PDF
融合加权代码异味强度因子软件缺陷预测模型
5
作者 陈镜如 黄子杰 高建华 《计算机工程与设计》 北大核心 2022年第12期3356-3364,共9页
现有代码异味强度检测方法未考虑度量对代码异味的影响力度。基于已有代码异味强度检测方法,分析度量对代码异味的影响力度,改进代码异味强度检测方法。应用随机森林得到影响代码异味的度量的特征重要性,将各度量的评估值作为各度量的权... 现有代码异味强度检测方法未考虑度量对代码异味的影响力度。基于已有代码异味强度检测方法,分析度量对代码异味的影响力度,改进代码异味强度检测方法。应用随机森林得到影响代码异味的度量的特征重要性,将各度量的评估值作为各度量的权值,检测加权代码异味强度的值。评估检测策略时,对各个度量的相关性进行分析,发现用于检测的度量之间缺乏相关性,符合从不同角度衡量代码异味的思想。当加权代码异味强度作为缺陷模型预测因子时,可提高缺陷预测模型约2%的F-Measure值。 展开更多
关键词 代码异味检测 代码异味强度 特征重要性 相关性分析 缺陷预测 开源软件 实证软件工程
下载PDF
Android应用程序中代码异味共存现象的实证研究
6
作者 边奕心 王露颖 +1 位作者 赵松 朱晓 《计算机应用研究》 CSCD 北大核心 2022年第9期2763-2767,共5页
相对于单一类型的代码异味,代码异味共存现象更具危害性。已有实证研究大多聚焦于分析桌面应用程序中代码异味的共存现象,缺少对Android应用程序中代码异味共存现象的研究。为了研究Android应用程序中代码异味的共存现象,并与桌面应用... 相对于单一类型的代码异味,代码异味共存现象更具危害性。已有实证研究大多聚焦于分析桌面应用程序中代码异味的共存现象,缺少对Android应用程序中代码异味共存现象的研究。为了研究Android应用程序中代码异味的共存现象,并与桌面应用程序中代码异味共存现象进行比较,分别对285个Android应用程序和30个桌面应用程序进行检测,对检测出来的10种异味进行分析。首先,根据检测结果计算受到多种异味影响的类的百分比。然后,使用公式计算代码异味共存的频率。最后,使用Spearman相关系数分析代码异味共存与应用程序规模的关系。结论如下:a)在Android应用程序中受到一种以上代码异味共同干扰的类占有异味的类的总数的31.04%;b)在两个平台的应用程序中,两对代码异味brain class-brain method和god class-brain method共存的频率较高;c)一种异味、两种异味共存、三种异味共存与Android应用程序的规模具有较强的相关性。 展开更多
关键词 代码异味共存 Android应用程序 桌面应用程序 实证研究
下载PDF
Android应用程序的代码异味检测工具与方法综述
7
作者 王露颖 边奕心 +2 位作者 赵松 朱晓 涂杰 《智能计算机与应用》 2022年第8期70-75,84,共7页
在Android应用程序中存在大量的代码异味,良好的代码异味检测工具和方法可以帮助程序开发者和维护者快速、高效、准确地在大量的程序中找到异味,是软件开发和维护强有力的技术支持方式。本文对Android应用程序中的代码异味检测工具和方... 在Android应用程序中存在大量的代码异味,良好的代码异味检测工具和方法可以帮助程序开发者和维护者快速、高效、准确地在大量的程序中找到异味,是软件开发和维护强有力的技术支持方式。本文对Android应用程序中的代码异味检测工具和方法进行了总结,从应用环境、功能、支持语言、检测出的异味种类及检测精度等方面展开分析和比较;最后,针对目前工具存在的不足及未来的研究方向加以讨论和分析,为Android应用程序中代码异味检测及重构的研究提供参考。 展开更多
关键词 Android应用程序 代码异味 代码异味检测工具
下载PDF
基于排序损失的ECC多标签代码异味检测方法 被引量:3
8
作者 王继娜 陈军华 高建华 《计算机研究与发展》 EI CSCD 北大核心 2021年第1期178-188,共11页
代码异味是由糟糕的代码或设计问题引起的一种软件特征,严重影响了软件系统的可靠性和可维护性.在软件系统中,一段代码元素可能同时受到多种代码异味的影响,使得软件质量明显下降.多标签分类适用该情况,将高共现的多个代码异味置于同一... 代码异味是由糟糕的代码或设计问题引起的一种软件特征,严重影响了软件系统的可靠性和可维护性.在软件系统中,一段代码元素可能同时受到多种代码异味的影响,使得软件质量明显下降.多标签分类适用该情况,将高共现的多个代码异味置于同一标签组,可以更好地考虑代码异味的相关性,但现有的多标签代码异味检测方法未考虑同一段代码元素中多种代码异味检测顺序的影响.对此,提出了一种基于排序损失的集成分类器链(ensemble of classifier chains,ECC)多标签代码异味检测方法,该方法选择随机森林作为基础分类器并采取多次迭代ECC的方式,以排序损失最小化为目标,选择一个较优的标签序列集,优化代码异味检测顺序问题,模拟其生成机理,检测一段代码元素是否同时存在长方法长参数列表、复杂类消息链或消息链过大类这3组代码异味.实验采用9个评价指标,结果表明所提出的检测方法优于现有的多标签代码异味检测方法,F1平均值达97.16%. 展开更多
关键词 代码异味 随机森林 排序损失 集成分类器链 多标签分类
下载PDF
基于改进的C4.5算法的代码异味检测方法 被引量:2
9
作者 王帆 吴海涛 高建华 《计算机工程与设计》 北大核心 2021年第4期969-975,共7页
为检测软件结构中的代码异味,提出在属性选择过程中将ReliefF算法和互信息结合,筛选出相关度大而冗余度小的条件属性集。传统C4.5算法在构造决策树时,只考虑条件属性和目标属性的相关度,忽略条件属性间的相关度,基于这个问题提出在C4.5... 为检测软件结构中的代码异味,提出在属性选择过程中将ReliefF算法和互信息结合,筛选出相关度大而冗余度小的条件属性集。传统C4.5算法在构造决策树时,只考虑条件属性和目标属性的相关度,忽略条件属性间的相关度,基于这个问题提出在C4.5算法中加入对称不确定性(SU),利用SU计算条件属性间的相关度,更新信息增益率的计算,提高代码异味检测精确度。对比实验结果表明,该算法能够提高代码异味的检测精确度,有利延长软件生存周期。 展开更多
关键词 代码异味 C4.5算法 对称不确定性 RELIEFF算法 互信息
下载PDF
混合特征选择和集成学习驱动的代码异味检测 被引量:2
10
作者 艾成豪 高建华 黄子杰 《计算机工程》 CAS CSCD 北大核心 2022年第7期168-176,198,共10页
代码异味是违反基本设计原理或编码规范的软件特征,源代码中若存在代码异味将提高其维护的成本和难度。在代码异味检测方法中,机器学习相较其他方法能够取得更好的性能表现。针对使用大量特征进行训练可能会引起“维度灾难”以及单一模... 代码异味是违反基本设计原理或编码规范的软件特征,源代码中若存在代码异味将提高其维护的成本和难度。在代码异味检测方法中,机器学习相较其他方法能够取得更好的性能表现。针对使用大量特征进行训练可能会引起“维度灾难”以及单一模型泛化性能不佳的问题,提出一种混合特征选择和集成学习驱动的代码异味检测方法。通过ReliefF、XGBoost特征重要性和Pearson相关系数计算出所有特征的权重并进行融合,删除融合后权重值较低的无关特征,以得到特征子集。构建具有两层结构的Stacking集成学习模型,第一层的基分类器由3种不同的树模型构成,第二层以逻辑回归作为元分类器,两层结构的集成学习模型能够结合多样化模型的优点来增强泛化性能。将特征子集输入Stacking集成学习模型,从而完成代码异味分类与检测任务。实验结果表明,该方法能够减少特征维度,与Stacking集成学习模型第一层中的最优基分类器相比,其在F-measure和G-mean指标上最高分别提升1.46%和0.87%。 展开更多
关键词 代码异味 特征选择 集成学习 权重融合 Stacking模型
下载PDF
结合遗传规划和遗传算法的代码异味检测方法 被引量:1
11
作者 赵敏 高建华 《小型微型计算机系统》 CSCD 北大核心 2020年第11期2434-2441,共8页
代码异味检测和处理在很大程度上能减少软件项目维护的开销,基于手工、关联以及可视化等一些检测方法在一定程度上不能保证检测的精确性和效率.本文提出一种基于协同并行算法优化的代码异味检测方法,该方法利用结构化度量从代码异味的... 代码异味检测和处理在很大程度上能减少软件项目维护的开销,基于手工、关联以及可视化等一些检测方法在一定程度上不能保证检测的精确性和效率.本文提出一种基于协同并行算法优化的代码异味检测方法,该方法利用结构化度量从代码异味的范例中生成检测规则,利用与良好范例代码的偏差生成检测器,通过遗传规划搜索得到最优检测规则,遗传算法搜索得到最优检测器,将最优的检测规则和检测器经过交叉得到检测代码异味的最优解决方案.在评估检测器时,通过Jaccard系数对Needleman-Wuncsh算法进行优化,提高了谓词参数之间的相似性,降低了检测器的成本.实验证明,基于协同并行算法优化的代码异味检测方法在精确度和耗时方面都优于其它基于单一种群算法以及基于协同并行算法的代码异味检测方法. 展开更多
关键词 代码异味 并行协同算法 遗传规划 遗传算法 Jaccard系数
下载PDF
利用主轴因子法的严重性代码异味相关性分析 被引量:1
12
作者 张生栋 吴海涛 高建华 《小型微型计算机系统》 CSCD 北大核心 2021年第4期853-860,共8页
代码异味的存在对源代码的可理解性和可维护性有着糟糕的负面影响.通常情况下,研究人员更多是考虑单一代码异味对源代码的影响,但有研究指出,多种代码异味的共同存在以及它们之间的交互往往比单一代码异味有着更严重的负面影响.本文针... 代码异味的存在对源代码的可理解性和可维护性有着糟糕的负面影响.通常情况下,研究人员更多是考虑单一代码异味对源代码的影响,但有研究指出,多种代码异味的共同存在以及它们之间的交互往往比单一代码异味有着更严重的负面影响.本文针对主成分分析在布尔类型变量分析中容易产生难以解释的主成分的弊端,提出了一种基于主轴因子法及异味严重性的代码异味相关性分析方法,并在92个系统上对14种代码异味进行试验,从中提取了6个因子,在相关矩阵中新发现了{Extensive Coupling、Long Parameter List}代码异味对的存在.最后本文比较分析了具有严重性标签的代码异味数据集的优势,解释了每个因子的含义并进行分类命名. 展开更多
关键词 代码异味 主轴因子分析 严重性 相关性分析
下载PDF
基于决策树的代码异味优先级评估 被引量:1
13
作者 郭迪 吴海涛 《上海师范大学学报(自然科学版)》 2022年第2期210-216,共7页
基于以开发人员驱动的代码异味优先级排序方法,结合优化决策树算法建立模型,对代码异味的重构优先级进行面向开发人员的排名,并在实证研究中评估了该模型,以模型可解释性方法对特征的重要性进行评估,给出了相关影响较高的特征.结果表明... 基于以开发人员驱动的代码异味优先级排序方法,结合优化决策树算法建立模型,对代码异味的重构优先级进行面向开发人员的排名,并在实证研究中评估了该模型,以模型可解释性方法对特征的重要性进行评估,给出了相关影响较高的特征.结果表明,该模型的F1值为89%,分别较基线值和最新研究成果高出25%和5%. 展开更多
关键词 代码异味 决策树 特征选择 软件可维护性
下载PDF
LightGBM融合CFS的开发者感知代码异味强度预测模型研究
14
作者 宇通 高建华 《小型微型计算机系统》 CSCD 北大核心 2022年第12期2667-2674,共8页
准确地对代码异味强度进行预测可使高危险性的代码问题得到优先处理,从而减少软件项目的维护开销.目前针对异味强度的研究较少且基于传统手工和单一算法的异味强度识别方法不能保证检测的精确性与效率.对此,本文提出一种基于LightGBM融... 准确地对代码异味强度进行预测可使高危险性的代码问题得到优先处理,从而减少软件项目的维护开销.目前针对异味强度的研究较少且基于传统手工和单一算法的异味强度识别方法不能保证检测的精确性与效率.对此,本文提出一种基于LightGBM融合CFS的开发者感知代码异味强度预测模型,该模型利用经相关性特征选择后的代码度量指标,考虑基于开发者感知的代码异味严重性,使用LightGBM算法,对含4种代码异味的实例进行异味强度预测并划分强度等级.本文从统计角度验证了所考虑的各项代码度量指标与异味严重性之间存在强相关关系.实验表明,本文模型在精确率、召回率、F1值、MCC和AUC等多项指标上均优于原有性能最佳的随机森林(RF)模型,其中F1值最高达90.0%,最多提升3.7%;AUC值最高达94.2%,最多提升3.8%;且相比RF模型预测时间可缩短76.1%. 展开更多
关键词 代码异味 LightGBM CFS 强度预测 机器学习
下载PDF
软件工程中代码异味检测方法的研究
15
作者 李炎武 《现代计算机(中旬刊)》 2017年第2期31-33,共3页
在软件工程中,软件重构具有重要意义,它可以提高软件的可维护性、可扩展性、可重用性,进而改善软件质量。在软件重构中,代码异味检测是其中的重要组成部分。目前,代码异味检测的相关研究划分为几个类别。在对基于搜索的代码异味检测方... 在软件工程中,软件重构具有重要意义,它可以提高软件的可维护性、可扩展性、可重用性,进而改善软件质量。在软件重构中,代码异味检测是其中的重要组成部分。目前,代码异味检测的相关研究划分为几个类别。在对基于搜索的代码异味检测方法进行研究后,选择决策树算法来对四个代码异味进行检测,并取得不错的效果。 展开更多
关键词 软件工程 软件重构 代码异味 决策树
下载PDF
深度学习策略下缓慢循环异味检测方法
16
作者 边奕心 李禹齐 +3 位作者 张子恒 赵松 尹启天 李文渊 《小型微型计算机系统》 CSCD 北大核心 2024年第2期490-497,共8页
缓慢循环是一种Android特有代码异味,对Android应用程序的可维护性产生负面影响.针对传统基于静态程序分析方法误检率较高的问题,本文提出基于深度学习的检测方法.首先,使用代码文本信息作为模型输入的特征集.然后,使用两种深度学习模... 缓慢循环是一种Android特有代码异味,对Android应用程序的可维护性产生负面影响.针对传统基于静态程序分析方法误检率较高的问题,本文提出基于深度学习的检测方法.首先,使用代码文本信息作为模型输入的特征集.然后,使用两种深度学习模型进行异味检测.此外,为了快速、准确获得模型所需的大量样本数据,提出了一种基于开源Android项目构造正负样本的方法并实现工具ASSD.最后,使用开源Android数据集对提出的方法进行实验验证.实验结果表明,本文方法优于现有基于程序静态分析的检测方法,其中检测效果最好的是CNN模型,其F1值平均提高了28.7%.此外,本文方法优于基于机器学习的检测方法,相对于检测效果最好的随机森林模型,CNN模型的F1值平均提高了9.43%. 展开更多
关键词 Android特有代码异味 缓慢循环 深度学习 机器学习
下载PDF
基于机器学习的无低内存解析器异味检测方法
17
作者 邢代鑫 边奕心 《长江信息通信》 2024年第1期139-142,共4页
代码异味是指影响代码维护过程并降低软件质量的糟糕代码设计或实现。因此,代码异味检测在软件重构中非常重要。文章使用五种传统机器学习模型,对Android特有代码异味进行检测。为了获取机器学习模型所需的大量样本数据,文章构建了一个J... 代码异味是指影响代码维护过程并降低软件质量的糟糕代码设计或实现。因此,代码异味检测在软件重构中非常重要。文章使用五种传统机器学习模型,对Android特有代码异味进行检测。为了获取机器学习模型所需的大量样本数据,文章构建了一个Java代码异味数据集,该数据集包含14,000个样本,并从源代码中提取46个特征。此外,还使用开源Android应用程序进行实验验证。结果表明,随机森林是检测无低内存解析器异味中性能最好的模型,实现了最高的F1值0.928。 展开更多
关键词 Android代码异味 机器学习 异味检测
下载PDF
基于代码行变更指数的异味类排序方法
18
作者 位欢欢 吴海涛 高建华 《计算机工程与设计》 北大核心 2021年第3期656-662,共7页
为提高重构效率,提出一种通过代码行变更指数来对异味类进行排序的方法。此前对于代码异味的研究主要关注静态代码行度量指标,但是在整个项目开发过程中代码行数是动态变化的,且变化规模越大的类出现异味的概率越大。通过对整个项目开... 为提高重构效率,提出一种通过代码行变更指数来对异味类进行排序的方法。此前对于代码异味的研究主要关注静态代码行度量指标,但是在整个项目开发过程中代码行数是动态变化的,且变化规模越大的类出现异味的概率越大。通过对整个项目开发过程中代码行动态变化过程进行分析,提出代码行变更指数对异味类变化规模进行排序,使其重构主要关注那些变化较大的异味类,减少重构成本。对比实验结果表明,按照该方法对异味类进行重构,可以减少异味剩余率,提高重构效率。 展开更多
关键词 代码异味 重构 代码变更 代码行变更指数 异味类排序
下载PDF
面向开源软件的自承认代码重构现象研究 被引量:2
19
作者 张迪 李增扬 +1 位作者 李兵 梁鹏 《小型微型计算机系统》 CSCD 北大核心 2018年第11期2473-2479,共7页
软件开发中,开发者常在版本控制系统中提交代码修改.在其提交的信息中,开发者明确声明代码修改为重构(Refactoring)的现象较为普遍,我们把此类代码修改称为开发者自我承认的代码重构,即自承认重构(Self-admitted refactoring,简称SAR).... 软件开发中,开发者常在版本控制系统中提交代码修改.在其提交的信息中,开发者明确声明代码修改为重构(Refactoring)的现象较为普遍,我们把此类代码修改称为开发者自我承认的代码重构,即自承认重构(Self-admitted refactoring,简称SAR).自承认重构在代码提交信息中较为寻常,然而少有相关的研究,致使SAR与软件项目质量的关系并不明确.因此,在本文中,通过对代码异味(Code smell)的评估方式,对自承认重构现象进行不同方面的探索研究,其中包括:SAR是否提升代码质量、SAR与被修改的源文件数量的关系、SAR中代码异味严重级别、SAR开发者数量等等.在本文的用例研究中,选取了Fastjson作为分析案例,使用了PM D作为代码异味识别工具.本文的案例研究得出了如下结论:(1)在超过70%的SAR对应的代码库版本中,代码异味没有增加;(2)在SAR对应的代码库版本中,被修改的源文件数量与新引入的代码异味数量有显著的正相关关系;(3)软件开发中拥有SAR行为的开发者数量较少;(4) SAR在软件开发生命周期中的分布不均衡. 展开更多
关键词 自承认重构 代码异味 案例研究 代码质量
下载PDF
基于集成学习的忽略成员的方法检测策略
20
作者 边奕心 王露颖 +1 位作者 赵松 朱晓 《计算机工程与设计》 北大核心 2023年第9期2679-2686,共8页
忽略成员的方法是一种Android特有代码异味,为检测这种异味,提出一种基于集成学习的检测策略。将代码度量与文本信息相融合作为特征集;将融合后的特征集输入所构建的Stacking集成学习模型中进行异味检测。为快速、准确获得机器学习所需... 忽略成员的方法是一种Android特有代码异味,为检测这种异味,提出一种基于集成学习的检测策略。将代码度量与文本信息相融合作为特征集;将融合后的特征集输入所构建的Stacking集成学习模型中进行异味检测。为快速、准确获得机器学习所需的大量标签数据,提出一种基于Android项目自动构建正负样本的方法。选用开源Android数据集对所提出的方法进行实验验证,实验结果表明,较已有检测方法,该策略能够提高异味检测的精确度。 展开更多
关键词 代码异味 安卓特有代码异味 忽略成员的方法 文本信息 特征融合 机器学习 集成学习
下载PDF
上一页 1 2 下一页 到第
使用帮助 返回顶部