CN108664269A - 一种基于深度学习的特征依恋代码异味检测方法 - Google Patents
一种基于深度学习的特征依恋代码异味检测方法 Download PDFInfo
- Publication number
- CN108664269A CN108664269A CN201810454294.3A CN201810454294A CN108664269A CN 108664269 A CN108664269 A CN 108664269A CN 201810454294 A CN201810454294 A CN 201810454294A CN 108664269 A CN108664269 A CN 108664269A
- Authority
- CN
- China
- Prior art keywords
- distance
- peculiar smell
- training
- removable
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2411—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on the proximity to a decision surface, e.g. support vector machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Stored Programmes (AREA)
- Machine Translation (AREA)
Abstract
本发明涉及一种基于深度学习的特征依恋代码异味检测方法,属于计算机软件技术领域。首先提取用于训练的开源软件的可移动方法信息和距离,生成训练集,将提取出来的可移动方法信息和距离转换为词向量表示的训练数据,将训练数据输入卷积神经网络训练神经网络模型。然后,提取用于测试的开源软件的可移动方法的方法信息和距离,生成测试数据集,将测试数据集中的数据全部转换为由词向量表示的待测试数据。将待测试数据输入神经网络模型中,模型自动输出0或1,其中1代表存在特征依恋代码异味,0代表不存在。本发明所述检测方法,与现有检测方法相比,大幅度提高了平均召回率,同时提高了平均准确率。
Description
技术领域
本发明涉及一种针对特征依恋的代码异味检测方法,属于计算机软件技术领域。
背景技术
代码重构(Code Refactoring),是指在不改变软件系统外部行为的前提下,改善它的内部结构。代码重构可以通过调整程序代码改善软件的质量、性能,使程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。代码重构是一种经千锤百炼形成的有条不紊的程序整理方法,可以最大限度地减少整理过程中引入错误的概率。本质上说,代码重构就是在代码写好之后改进它的设计。软件重构被广泛应用于通过重构其每部结构来提高软件质量,而其外部行为保持不变。大多数现有的IDE(集成开发环境,IntegratedDevelopment Environment)都为软件重构提供工具支持,例如Eclipse。Eclipse 有一个专门用于软件重构的顶级菜单项,提供了大多数流行的软件重构的条目。
软件重构的一个关键步骤是确定应用重构的地方。为了便于识别这些地方,人们提出了代码异味的概念。如果一段代码不稳定或者存在一些潜在问题,这段代码往往会包含一些明显的痕迹,类似于食物即将腐坏之前通常会挥发出一些异味一样,因此将这些痕迹称作“代码异味”。在程序开发领域,代码中任何可能导致深层次问题的症状都可以称为代码异味,比如重复代码、长方法、巨类、亲密关系、特征依恋等等。代码异味推动重构的进行,人们分析每个代码异味的特征,以及它们的影响和潜在解决方案(重构)。
目前,大多数代码气味检测方法都依赖手动设计的启发式策略将手动定义/选择的代码度量映射到二元预测中,判断有异味或没有异味。但是,手动识别代码异味繁琐且费时,特别是当这种代码异味涉及多个文件或包时。而且手动构建最佳启发式功能也很困难。对这种方法的分析结果表明,不同的人可能会针对相同的代码异味选择不同的度量和不同的重构方式,这导致不同检测工具之间的一致性很低。为了避免手动设计的启发式算法,现在已经有大量的自动或半自动方法来检测不同类型的代码异味的工具。像SVM,朴素贝叶斯和LDA这样的统计机器学习技术被用来建立代码度量以及词汇相似度和预测之间的复杂映射关系。然而,实证研究表明,这种基于统计机器学习的异味检测方法具有关键的局限性,值得进一步的研究。
深度神经网络和先进的深度学习技术可以自动从程序源代码(特别是文本特征)中为代码异味检测选择有用的特征,并在这些特征和标签(有异味或无异味)之间建立复杂的映射关系。神经网络和深度学习技术的特点就是从大量数据中选择有用的特征自动构建从输入到输出的复杂映射关系。
为了训练基于神经网络的分类器,本发明提出了一种自动方法来生成带标签的训练数据。这种方法不需要任何人为干预。基于这些方法正确放置在原始程序中的假设,通过直接从高质量的开源应用程序中提取方法(及其上下文)来生成负样本。为了生成正样本,可以将方法随机地移动到其他可以通过重构工具移动的类中。移动后,方法(连同他们的新环境)被视为特征羡慕。因为这个方法是完全自动的,所以生成大量这样的带标签的训练数据。大数据反过来作为基于机器学习的分类的基础。
发明内容
在常见的22中代码异味中,特征依恋是一种特殊的代码异味,表现为在代码中,一个类过度使用另外一个类的方法。本发明的目的在于针对现有特征依恋检测方法中结构功能和文本功能很难最佳化并且自动化程度不够的现状,提出了一种基于深度学习的特征依恋代码异味检测方法。
本发明一种基于深度学习的特征依恋代码异味检测方法,包括以下步骤:
步骤1:提取用于训练的开源软件的可移动方法信息和距离,生成训练集。所述可移动方法是指该方法有可移动的类,并且移动之后未出现编译错误。
所述方法信息包括方法名、方法源类名和方法目标类名。所述距离包括方法与源类的距离和方法与目标类的距离。
步骤1的具体实现过程为:
首先,使用Eclipse JDT提供的API方法检测“方法”是否可以移动到其他类。
若可以移动,提取该可移动方法的方法信息和距离,自动生成标签为0 (代表不存在特征依恋代码异味),然后移动该方法,并提取移动后方法的方法信息和距离,自动生成标签为1(代表存在特征依恋代码异味),之后执行撤回操作,将移动后方法回归原位,并转向判断下一个方法。若判断结果为该方法不能移动,则丢弃并转向判断下一个方法。
当所有方法判断完毕之后,生成所有可移动方法的方法信息和距离的训练集,其中正样本占50%,负样本占50%。
步骤2:将步骤1提取出来的可移动方法信息和距离转换为词向量表示的训练数据。
神经网络的输入分为两部分:一部分是将训练集中的每个方法名及其对应的源类名和目标类名转换为一个15维的向量表示,另一部分是将距离用一个二维的向量表示。
每一个方法名、方法源类名和方法目标类名均为一个标识符。首先将标识符转换为向量表示。将每个标识符的名称分割为一系列的单词<t1, t2,……,tk>,假定标识符遵循驼峰或蛇形命名规则,因此分割标识符的依据是下划线和大写字母。由于要考虑单词的顺序和语义关系,规定使用定长长度为15的段落向量表示方法名和源类名、目标类名。
将每个向量转化为词向量。通过自行训练一个Word2vector模型实现:利用一个输入层输入Word2vector的训练数据,利用一个隐藏层训练生成 Word2vector模型。通过一个输出层,利用Word2vector模型将可移动方法信息的每个向量转化为词向量。
步骤3:将训练数据输入卷积神经网络(CNN,Convolutional Neural Network),训练神经网络模型。
具体方式为:构建一个CNN网络,第一层为网络输入层,将文本序列展开成词向量的序列,之后连接卷积层、激活层,然后连接全连接层和激活层,激活层采用sigmoid并输出该文本属于某类的概率。
将步骤2中得到的词向量作为网络输入层的输入,将标签作为网络输出基准,进行网络输出词向量的训练,从而得到神经网络模型。
其中,为了降低神经网络预测的错误率,利用自适应学习率调整算法(如AdaDelta)进行神经网络模型训练。
步骤4:提取用于测试的开源软件的可移动方法的方法信息和距离,生成测试数据集。
所述方法信息包括方法名、方法源类名和方法目标类名。所述距离包括方法与源类的距离和方法与目标类的距离。
使用Eclipse JDT提供的API方法检测“方法”是否可以移动到其他类。若可以移动,则随机划分为50%移动和50%不移动概率。如果属于50%移动概率,则移动该方法,并提取移动后方法的方法信息和距离,自动生成标签为1(代表存在特征依恋代码异味),之后执行撤回操作,将移动后方法回归原位,并转向判断下一个方法。如果属于50%不移动概率,则提取该可移动方法的方法信息和距离,自动生成标签为0(代表不存在特征依恋代码异味)。
利用步骤2所述方法,将测试数据集中的数据全部转换为由词向量表示的待测试数据。
步骤5:将步骤4得到的待测试数据输入步骤3得到的神经网络模型中,模型自动输出0或1,其中1代表存在特征依恋代码异味,0代表不存在。
有益效果
本发明所述检测方法,与现有JDeodorant、JMove等检测方法相比,大幅度提高了平均召回率,同时提高了平均准确率。
附图说明
图1是本发明所述方法的工作原理示意图;
图2是本发明所述方法的向量生成方法示意图;
图3是基于LSTM的非API函数实参推荐方法的神经网络模型示意图。
具体实施方式
下面结合附图和实施例对本发明做进一步说明和详细描述。
实施例
本实施例详细阐述了基于本发明检测方法在7个开源项目下具体实施时的方法和效果。
如表1所示的硬件环境下,对表2所示的开源软件进行训练和预测。
表1:硬件环境配置信息表
表2:开源软件基本信息表
开源项目数量 | 编写语言 | 项目大小(LOC) | 项目平均大小(LOC) |
7 | Java | 11,734~444,493 | 139,742 |
从7个开源Java项目中,将其中1个开源项目的数据作为测试数据,将其他6个开源项目的数据作为训练数据。
一种基于深度学习的特征依恋代码异味检测方法,如图1所示,包括以下步骤:
步骤1:提取用于训练的开源软件的可移动方法信息和距离,生成训练集。所述可移动方法是指该方法有可移动的类,并且移动之后未出现编译错误。
所述方法信息包括方法名、方法源类名和方法目标类名。所述距离包括方法与源类的距离和方法与目标类的距离。
步骤1的具体实现过程为:
首先,使用Eclipse JDT提供的API方法检测“方法”是否可以移动到其他类。
若可以移动,提取该可移动方法的方法信息和距离,自动生成标签为0 (代表不存在特征依恋代码异味),然后移动该方法,并提取移动后方法的方法信息和距离,自动生成标签为1(代表存在特征依恋代码异味),之后执行撤回操作,将移动后方法回归原位,并转向判断下一个方法。若判断结果为该方法不能移动,则丢弃并转向判断下一个方法。
当所有方法判断完毕之后,生成所有可移动方法的方法信息和距离的训练集,其中正样本占50%,负样本占50%。
步骤2:将步骤1提取出来的可移动方法信息和距离转换为词向量表示的训练数据。
神经网络的输入分为两部分:一部分是将训练集中的每个方法名及其对应的源类名和目标类名转换为一个15维的向量表示,另一部分是将距离用一个二维的向量表示。
每一个方法名、方法源类名和方法目标类名均为一个标识符。首先将标识符转换为向量表示。将每个标识符的名称分割为一系列的单词<t1, t2,……,tk>,假定标识符遵循驼峰或蛇形命名规则,因此分割标识符的依据是下划线和大写字母。由于要考虑单词的顺序和语义关系,规定使用定长长度为15的段落向量表示方法名和源类名、目标类名。
如图2所示,将每个向量转化为词向量。通过自行训练一个Word2vector 模型实现:利用一个输入层输入Word2vector的训练数据,利用一个隐藏层训练生成Word2vector模型。通过一个输出层,利用Word2vector模型将可移动方法信息的每个向量转化为词向量。
步骤3:将训练数据输入卷积神经网络(CNN,Convolutional Neural Network),训练神经网络模型。
具体方式为:如图3所示,构建一个CNN网络,第一层为网络输入层,将方法信息转化为词向量的序列,之后连接卷积层、激活层,然后连接全连接层和激活层,激活层采用sigmoid并输出该文本属于某类的概率。
将步骤2中得到的词向量作为网络输入层的输入,将标签作为网络输出基准,进行网络输出词向量的训练,从而得到神经网络模型。
其中,为了降低神经网络预测的错误率,利用自适应学习率调整算法(如AdaDelta)进行神经网络模型训练。
步骤4:提取用于测试的开源软件的可移动方法的方法信息和距离,生成测试数据集。
所述方法信息包括方法名、方法源类名和方法目标类名。所述距离包括方法与源类的距离和方法与目标类的距离。
使用Eclipse JDT提供的API方法检测“方法”是否可以移动到其他类。若可以移动,则随机划分为50%移动和50%不移动概率。如果属于50%移动概率,则移动该方法,并提取移动后方法的方法信息和距离,自动生成标签为1(代表存在特征依恋代码异味),之后执行撤回操作,将移动后方法回归原位,并转向判断下一个方法。如果属于50%不移动概率,则提取该可移动方法的方法信息和距离,自动生成标签为0(代表不存在特征依恋代码异味)。
利用步骤2所述方法,将测试数据集中的数据全部转换为由词向量表示的待测试数据。
步骤5:将步骤4得到的待测试数据输入步骤3得到的神经网络模型中,模型自动输出0或1,其中1代表存在特征依恋代码异味,0代表不存在。
将步骤5的输出结果与步骤4中生成的测试数据标签进行比较。如果相同表示判别是否存在特征依恋代码异味的检测正确。检测结果如表3所示:
表3:推荐方法的准确率和召回率
表3中的准确率=正确的检测个数/检测出为正样本个数;
表3中的召回率=正确的检测个数/正样本总数;
检测出的正样本中,若推荐度最高的目标类与该方法移动之前所在的类相同,则表示该方法推荐的目标类是正确的,推荐结果如表4所示:
表4:推荐方法的目标准确率
Claims (4)
1.一种基于深度学习的特征依恋代码异味检测方法,其特征在于,包括以下步骤:
步骤1:提取用于训练的开源软件的可移动方法信息和距离,生成训练集;
所述可移动方法是指该方法有可移动的类,并且移动之后未出现编译错误;
所述方法信息包括方法名、方法源类名和方法目标类名;
所述距离包括方法与源类的距离和方法与目标类的距离;
具体实现过程为:
首先,检测“方法”是否可以移动到其他类;若可以移动,提取该可移动方法的方法信息和距离,自动生成标签为0,代表不存在特征依恋代码异味,然后移动该方法,并提取移动后方法的方法信息和距离,自动生成标签为1,代表存在特征依恋代码异味,之后执行撤回操作,将移动后方法回归原位,并转向判断下一个方法;若判断结果为该方法不能移动,则丢弃并转向判断下一个方法;当所有方法判断完毕之后,生成所有可移动方法的方法信息和距离的训练集,其中正样本占50%,负样本占50%;
步骤2:将步骤1提取出来的可移动方法信息和距离转换为词向量表示的训练数据;
神经网络的输入分为两部分:一部分是将训练集中的每个方法名及其对应的源类名和目标类名转换为一个15维的向量表示,另一部分是将距离用一个二维的向量表示;
每一个方法名、方法源类名和方法目标类名均为一个标识符;首先将标识符转换为向量表示,将每个标识符的名称分割为一系列的单词<t1,t2,……,tk>,假定标识符遵循驼峰或蛇形命名规则,分割标识符的依据是下划线和大写字母;然后将每个向量转化为词向量;
步骤3:将训练数据输入卷积神经网络,训练神经网络模型;
具体方式为:构建一个卷积神经网络,第一层为网络输入层,将文本序列展开成词向量的序列,之后连接卷积层、激活层,然后连接全连接层和激活层,激活层采用sigmoid并输出该文本属于某类的概率;
将步骤2中得到的词向量作为网络输入层的输入,将标签作为网络输出基准,进行网络输出词向量的训练,从而得到神经网络模型;
步骤4:提取用于测试的开源软件的可移动方法的方法信息和距离,生成测试数据集;
所述方法信息包括方法名、方法源类名和方法目标类名;所述距离包括方法与源类的距离和方法与目标类的距离;
检测“方法”是否可以移动到其他类;若可以移动,则随机划分为50%移动和50%不移动概率;如果属于50%移动概率,则移动该方法,并提取移动后方法的方法信息和距离,自动生成标签为1,代表存在特征依恋代码异味,之后执行撤回操作,将移动后方法回归原位,并转向判断下一个方法;如果属于50%不移动概率,则提取该可移动方法的方法信息和距离,自动生成标签为0,代表不存在特征依恋代码异味;
利用步骤2所述方法,将测试数据集中的数据全部转换为由词向量表示的待测试数据;
步骤5:将步骤4得到的待测试数据输入步骤3得到的神经网络模型中,模型自动输出0或1,其中1代表存在特征依恋代码异味,0代表不存在。
2.如权利要求1所述的一种基于深度学习的特征依恋代码异味检测方法,其特征在于,所述步骤1中,使用Eclipse JDT提供的API方法检测“方法”是否可以移动到其他类。
3.如权利要求1所述的一种基于深度学习的特征依恋代码异味检测方法,其特征在于,所述步骤2中,将可移动方法信息的每个向量转化为词向量通过自行训练一个Word2vector模型实现:利用一个输入层输入Word2vector的训练数据,利用一个隐藏层训练生成Word2vector模型;通过一个输出层,利用Word2vector模型将可移动方法信息的每个向量转化为词向量。
4.如权利要求1所述的一种基于深度学习的特征依恋代码异味检测方法,其特征在于,所述步骤3中,为降低神经网络预测的错误率,利用自适应学习率调整算法进行神经网络模型训练。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810454294.3A CN108664269B (zh) | 2018-05-14 | 2018-05-14 | 一种基于深度学习的特征依恋代码异味检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810454294.3A CN108664269B (zh) | 2018-05-14 | 2018-05-14 | 一种基于深度学习的特征依恋代码异味检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108664269A true CN108664269A (zh) | 2018-10-16 |
CN108664269B CN108664269B (zh) | 2019-02-26 |
Family
ID=63779295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810454294.3A Expired - Fee Related CN108664269B (zh) | 2018-05-14 | 2018-05-14 | 一种基于深度学习的特征依恋代码异味检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108664269B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110502277A (zh) * | 2019-08-30 | 2019-11-26 | 西安邮电大学 | 一种基于bp神经网络的代码坏味检测方法 |
CN110990256A (zh) * | 2019-10-29 | 2020-04-10 | 中移(杭州)信息技术有限公司 | 开源代码检测方法、装置及计算机可读存储介质 |
US10776106B2 (en) | 2018-09-14 | 2020-09-15 | Tata Consultancy Services Limited | Method and system for code analysis to identify causes of code smells |
CN111966817A (zh) * | 2020-07-24 | 2020-11-20 | 复旦大学 | 基于深度学习及代码上下文结构和文本信息的api推荐方法 |
CN112015641A (zh) * | 2020-08-22 | 2020-12-01 | 南京工业大学 | 一种基于多粒度级联森林模型的代码异味检测方法 |
CN112149405A (zh) * | 2020-09-28 | 2020-12-29 | 西安工程大学 | 一种基于卷积神经网络的程序编译错误信息特征提取方法 |
CN112328479A (zh) * | 2020-11-03 | 2021-02-05 | 北京理工大学 | 一种基于深度特征交互网络的上帝类代码味道检测方法 |
CN112328478A (zh) * | 2020-11-03 | 2021-02-05 | 北京理工大学 | 一种基于微调和深度交互的代码味道检测方法 |
CN112698833A (zh) * | 2020-12-31 | 2021-04-23 | 北京理工大学 | 一种基于局部和全局特征的特征依恋代码味道检测方法 |
CN112732570A (zh) * | 2021-01-05 | 2021-04-30 | 北京理工大学 | 一种基于上下文环境的依恋情结代码味道检测方法 |
CN115495299B (zh) * | 2022-11-15 | 2023-03-24 | 深圳市江元科技(集团)有限公司 | 一种智能qc软件检测与标识上传的方法、系统和介质 |
CN116049016A (zh) * | 2023-03-01 | 2023-05-02 | 哈尔滨师范大学 | 基于深度学习的忽略成员的方法异味检测策略 |
CN116451189A (zh) * | 2023-06-16 | 2023-07-18 | 北京长亭科技有限公司 | 一种代码特征的隐匿方法以及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461864A (zh) * | 2014-11-03 | 2015-03-25 | 北京邮电大学 | 一种基于Eclipse插件的Java源代码缺陷检测方法及其系统 |
CN107678971A (zh) * | 2017-10-19 | 2018-02-09 | 扬州大学 | 代码味道驱动的基于克隆和耦合检测的代码缺陷预测方法 |
-
2018
- 2018-05-14 CN CN201810454294.3A patent/CN108664269B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461864A (zh) * | 2014-11-03 | 2015-03-25 | 北京邮电大学 | 一种基于Eclipse插件的Java源代码缺陷检测方法及其系统 |
CN107678971A (zh) * | 2017-10-19 | 2018-02-09 | 扬州大学 | 代码味道驱动的基于克隆和耦合检测的代码缺陷预测方法 |
Non-Patent Citations (8)
Title |
---|
ANH VIET PHAN等: "Convolutional Neural Networks on Assembly Code for Predicting Software Defects", 《2017 21ST ASIA PACIFIC SYMPOSIUM ON INTELLIGENT AND EVOLUTIONARY SYSTEMS (IES)》 * |
DARIO DI NUCCI等: "Detecting Code Smells using Machine Learning Techniques: Are We There Yet?", 《IEEE INTERNATIONAL CONFERENCE ON SOFTWARE ANALYSIS,EVOLUTION AND REENGINEERING(SANER)》 * |
HUI LIU等: "Domino Effect: Move More Methods Once A Method Is Moved", 《2016 IEEE 23RD INTERNATIONAL CONFERENCE ON SOFTWARE ANALYSIS, EVOLUTION, AND REENGINEERING》 * |
KWANKAMOL NONGPONG: "Feature Envy Factor:A Metric for Automatic Feature Envy Detection", 《2007 7TH INTERNATIONAL CONFERENCE ON KNOWLEDGE AND SMART TECHNOLOGY(KST)》 * |
MARIOS FOKAEFS等: "JDeodorant: Identification and Removal of Feature Envy Bad Smells", 《2007 IEEE INTERNATIONAL CONFERENCE ON SOFTWARE MAINTENANCE》 * |
NIKOLAOS TSANTALIS: "Identification of Move Method Refactoring Opportunities", 《IEEE TRANSACTIONS ON SOFTWARE ENGINEERING》 * |
SWATI KUMAR等: "Two Level Dynamic Approach for Feature Envy Detection", 《2014 5TH INTERNATIONAL CONFERENCE ON COMPUTER AND COMMUNICATION TECHNOLOGY (ICCCT)》 * |
姜德迅: "代码坏味检测方法研究及重构分析", 《中国博士学位论文全文数据库-信息科技辑》 * |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10776106B2 (en) | 2018-09-14 | 2020-09-15 | Tata Consultancy Services Limited | Method and system for code analysis to identify causes of code smells |
CN110502277A (zh) * | 2019-08-30 | 2019-11-26 | 西安邮电大学 | 一种基于bp神经网络的代码坏味检测方法 |
CN110990256A (zh) * | 2019-10-29 | 2020-04-10 | 中移(杭州)信息技术有限公司 | 开源代码检测方法、装置及计算机可读存储介质 |
CN110990256B (zh) * | 2019-10-29 | 2023-09-05 | 中移(杭州)信息技术有限公司 | 开源代码检测方法、装置及计算机可读存储介质 |
CN111966817A (zh) * | 2020-07-24 | 2020-11-20 | 复旦大学 | 基于深度学习及代码上下文结构和文本信息的api推荐方法 |
CN111966817B (zh) * | 2020-07-24 | 2022-05-20 | 复旦大学 | 基于深度学习及代码上下文结构和文本信息的api推荐方法 |
CN112015641B (zh) * | 2020-08-22 | 2022-02-01 | 南京工业大学 | 一种基于多粒度级联森林模型的代码异味检测方法 |
CN112015641A (zh) * | 2020-08-22 | 2020-12-01 | 南京工业大学 | 一种基于多粒度级联森林模型的代码异味检测方法 |
CN112149405A (zh) * | 2020-09-28 | 2020-12-29 | 西安工程大学 | 一种基于卷积神经网络的程序编译错误信息特征提取方法 |
CN112149405B (zh) * | 2020-09-28 | 2023-10-10 | 西安工程大学 | 一种基于卷积神经网络的程序编译错误信息特征提取方法 |
CN112328478A (zh) * | 2020-11-03 | 2021-02-05 | 北京理工大学 | 一种基于微调和深度交互的代码味道检测方法 |
CN112328479A (zh) * | 2020-11-03 | 2021-02-05 | 北京理工大学 | 一种基于深度特征交互网络的上帝类代码味道检测方法 |
CN112698833A (zh) * | 2020-12-31 | 2021-04-23 | 北京理工大学 | 一种基于局部和全局特征的特征依恋代码味道检测方法 |
CN112698833B (zh) * | 2020-12-31 | 2022-05-31 | 北京理工大学 | 一种基于局部和全局特征的特征依恋代码味道检测方法 |
CN112732570A (zh) * | 2021-01-05 | 2021-04-30 | 北京理工大学 | 一种基于上下文环境的依恋情结代码味道检测方法 |
CN112732570B (zh) * | 2021-01-05 | 2022-05-31 | 北京理工大学 | 一种基于上下文环境的依恋情结代码味道检测方法 |
CN115495299B (zh) * | 2022-11-15 | 2023-03-24 | 深圳市江元科技(集团)有限公司 | 一种智能qc软件检测与标识上传的方法、系统和介质 |
CN116049016A (zh) * | 2023-03-01 | 2023-05-02 | 哈尔滨师范大学 | 基于深度学习的忽略成员的方法异味检测策略 |
CN116049016B (zh) * | 2023-03-01 | 2024-02-06 | 哈尔滨师范大学 | 基于深度学习的忽略成员的方法异味检测策略 |
CN116451189A (zh) * | 2023-06-16 | 2023-07-18 | 北京长亭科技有限公司 | 一种代码特征的隐匿方法以及装置 |
CN116451189B (zh) * | 2023-06-16 | 2023-08-11 | 北京长亭科技有限公司 | 一种代码特征的隐匿方法以及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108664269B (zh) | 2019-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108664269B (zh) | 一种基于深度学习的特征依恋代码异味检测方法 | |
CN110245496B (zh) | 一种源代码漏洞检测方法及检测器和其训练方法及系统 | |
CN109408389B (zh) | 一种基于深度学习的代码缺陷检测方法及装置 | |
Poldrack et al. | AI-assisted coding: Experiments with GPT-4 | |
WO2020073714A1 (zh) | 训练样本获取方法,账户预测方法及对应装置 | |
CN109255119A (zh) | 一种基于分词和命名实体识别的多任务深度神经网络的句子主干分析方法及系统 | |
CN107423278B (zh) | 评价要素的识别方法、装置及系统 | |
CN109492106B (zh) | 一种文本代码相结合的缺陷原因自动分类方法 | |
JPH07295989A (ja) | データを解析するためのインタプリタを形成する装置 | |
CN113138920B (zh) | 基于知识图谱与语义角色标注的软件缺陷报告分派方法及装置 | |
CN112102813B (zh) | 基于用户评论中上下文的语音识别测试数据生成方法 | |
CN101576850B (zh) | 一种改进的面向宿主的嵌入式软件白盒测试方法 | |
CN108664237B (zh) | 一种基于启发式和神经网络的非api成员推荐方法 | |
CN111046679A (zh) | 翻译模型的质量信息获取方法、装置及计算机设备 | |
CN112394973B (zh) | 一种基于伪孪生网络的多语言代码剽窃检测方法 | |
CN109948735A (zh) | 一种多标签分类方法、系统、装置及存储介质 | |
CN113672931A (zh) | 一种基于预训练的软件漏洞自动检测方法及装置 | |
CN105609116A (zh) | 一种语音情感维度区域的自动识别方法 | |
CN112035345A (zh) | 一种基于代码片段分析的混合深度缺陷预测方法 | |
Falessi et al. | The impact of dormant defects on defect prediction: A study of 19 apache projects | |
CN107958068A (zh) | 一种基于实体知识库的语言模型平滑方法 | |
Kim et al. | EnvBERT: multi-label text classification for imbalanced, noisy environmental news data | |
Zhang et al. | Feature envy detection with deep learning and snapshot ensemble | |
Liu et al. | Prompt Learning for Multi-Label Code Smell Detection: A Promising Approach | |
CN111339258B (zh) | 基于知识图谱的大学计算机基础习题推荐方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190226 Termination date: 20200514 |
|
CF01 | Termination of patent right due to non-payment of annual fee |