-
题名基于预训练模型和多层次信息的代码坏味检测方法
被引量:4
- 1
-
-
作者
张杨
东春浩
刘辉
葛楚妍
-
机构
河北科技大学信息科学与工程学院
北京理工大学计算机学院
-
出处
《软件学报》
EI
CSCD
北大核心
2022年第5期1551-1568,共18页
-
基金
国家自然科学基金(62172037)
河北省自然科学基金重点项目(18960106D)
河北省高等学校科学研究计划重点项目(ZD2019093)。
-
文摘
目前已有的代码坏味检测方法仅依赖于代码结构信息和启发式规则,对嵌入在不同层次代码中的语义信息关注不够,而且现有的代码坏味检测方法准确率还有进一步提升的空间.针对该问题,提出一种基于预训练模型和多层次信息的代码坏味检测方法DeepSmell,首先采用静态分析工具提取程序中的代码坏味实例和多层次代码度量信息,并对代码坏味实例进行标记;然后通过抽象语法树解析并获取源代码中与代码坏味相关的层次信息,将其中的文本信息与度量信息相结合生成数据样本;最后使用BERT预训练模型将文本信息转化为词向量,应用GRU-LSTM模型获取层次信息之间潜在的语义关系,并结合CNN模型与注意力机制检测代码坏味.在实验中,选取JUnit、Xalan和SPECjbb2005等24个大型实际应用程序构建训练集和测试集,并对特征依恋、长方法、数据类和上帝类等4种代码坏味进行检测.实验结果表明,DeepSmell与目前已有的检测方法相比在平均查全率和F1值上分别提高了9.3%和10.44%,同时保持了较高的查准率,DeepSmell可以有效地实现代码坏味检测.
-
关键词
代码坏味
深度学习
预训练模型
抽象语法树
多层次信息
-
Keywords
code smell
deep learning
pre-trained model
abstract syntax tree
multi-level information
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名一种基于词法特征和数据挖掘的无意义变量名检测方法
- 2
-
-
作者
姜艳杰
东春浩
刘辉
-
机构
北京大学计算机学院
北京理工大学计算机学院
-
出处
《计算机科学》
CSCD
北大核心
2024年第6期23-33,共11页
-
基金
国家自然科学基金重点项目(62232003)。
-
文摘
标识符是代码的重要组成部分,也是人们理解代码语义的关键元素之一。变量名是最常见的标识符之一,其质量对于代码的可读性和可理解性有着重要的意义。然而,因为各种原因程序员经常使用一些毫无意义的变量名,如“a”和“var”等。这些无意义的变量名严重降低了代码的可理解性,需要进行检测并重构(重命名)。为此,提出了一种基于词法特征和数据挖掘的自动化方法,以检测代码中无意义的变量名。首先,对开源代码中的无意义变量名进行了实证分析,发现无意义变量名通常比较短且不包含任何有意义的单词,因此可以利用词法特征筛选出名称较短且不包含有意义单词的可疑变量名。如果可疑变量名包含缩写词,则使用缩写词扩展算法进行扩展,以获得完整的变量名。然后,基于数据挖掘算法判断可疑变量名是否为约定俗成的常用变量名。有些常用的变量名,如“i”和“e”,虽然字面上没有明确的语义,但是通过约定俗成的表示规范,程序员可以理解该变量的语义,因此不算是无意义的变量名,也不需要进行重构。如果可疑变量名称不是约定俗成的常用变量名,则断定该变量名为无意义的变量名,并提醒程序员进行重命名。在开源数据集上进行实验,结果表明,该方法具有较高的准确率,其平均查准率为85%,平均查全率为91.5%。
-
关键词
软件重构
代码质量
数据挖掘
无意义变量名
词法特征
-
Keywords
Software refactoring
Code quality
Data mining
Nonsense variable names
Lexical features
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名面向并发程序的重构一致性检测方法
被引量:1
- 3
-
-
作者
张杨
孙仕欣
张冬雯
东春浩
乔柳
-
机构
河北科技大学信息科学与工程学院
-
出处
《河北师范大学学报(自然科学版)》
CAS
2020年第3期200-208,共9页
-
基金
国家自然科学基金(61440012)
河北省高等学校科学研究重点项目(ZD2019093)
河北省自然科学基金重点项目(18960106)。
-
文摘
针对并发软件重构后可能带来的行为不一致问题,提出了一种重构一致性检测方法,该方法使用控制流分析和数据流分析检测重构前后的变化,使用同步依赖分析检测重构前后同步依赖关系的变化.针对对象重用性、静态共享字段、死锁3种典型的引起并发错误的情况,设计了3种检测算法对重构前后程序的不一致性进行检测.依据该方法,在WALA软件分析框架下实现了一个原型检测工具.在实验中,使用该工具在SPECjbb2005和HSQLDB测试程序上进行了验证,并与Schafer等提出的方法进行比较,实验结果表明,该方法能够有效地发现并发软件重构的不一致行为.
-
关键词
并发软件重构
一致性检测
控制流分析
数据流分析
同步依赖分析
-
Keywords
concurrent software refactoring
consistency detection
control flow analysis
data flow analysis
synchronization dependency analysis
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-
-
题名基于深度学习的数据竞争检测方法
- 4
-
-
作者
张杨
乔柳
东春浩
高鸿斌
-
机构
河北科技大学信息科学与工程学院
-
出处
《计算机研究与发展》
EI
CSCD
北大核心
2022年第9期1914-1928,共15页
-
基金
国家自然科学基金项目(61440012)
河北省高等学校科学研究计划重点项目(ZD2019093)
+1 种基金
河北省科技支撑计划项目(16210312D)
河北省研究生创新能力培养资助项目(CXZZSS2022081)。
-
文摘
针对目前已有的基于深度学习的数据竞争检测方法提取特征单一和准确率低的问题,提出一种基于深度学习的数据竞争检测方法DeleRace,该方法首先利用程序静态分析工具WALA从多个实际应用程序中提取指令、方法和文件等多个级别的特征,对其向量化并构造训练样本数据;然后通过ConRacer工具对真实数据竞争进行判定进而标记样本数据,采用SMOTE增强算法使正负数据样本分布均衡化;最后构建并训练CNN-LSTM深度神经网络进行数据竞争检测.从DaCapo,JGF,IBM Contest,PJBench基准测试程序套件中分别选取26个不同应用领域的基准测试程序进行训练数据样本抽取和数据竞争检测,结果表明DeleRace的数据竞争检测准确率为96.79%,与目前已有的基于深度学习的检测方法DeepRace相比提升了4.65%.此外还将DeleRace与已有的动态数据竞争检测工具(Said和RVPredict)和静态数据竞争检测工具(SRD和ConRacer)进行比较,验证了DeleRace的有效性.
-
关键词
数据竞争
并发程序
深度学习
特征抽取
CNN-LSTM模型
-
Keywords
data race
concurrent program
deep learning
feature extraction
CNN-LSTM model
-
分类号
TP311
[自动化与计算机技术—计算机软件与理论]
-