【技术实现步骤摘要】
一种基于多源信息的技术债务严重程度识别方法
[0001]本专利技术涉及软件技术债务治理领域,尤其涉及一种基于多源信息的技术债务严重程度识别方法。
技术介绍
[0002]得益于技术债务研究的发展,已经有许多高效的工具可以帮助开发者自动识别代码中的技术债务。然而,在软件开发和维护过程中,存在大量的技术债务,全部偿还是不可能也是不现实的。在实际开发中,由于时间或者资源有限,开发者倾向于优先偿还那些严重程度比较高的技术债务。因此,识别技术债务的严重程度是一项十分重要的任务,其能帮助开发者在新的软件版本发布之前做出最优的决策。
[0003]不幸地是,技术债务严重程度度量方面的研究相对较少。Mensah等人通过人工地对600,000条代码注释进行分析,抽取文本特征来区分严重的和不严重的技术债务,发现在ArgoUML、Chromium、Eclipse和Apache四个项目中,严重的技术债务分别占14%、55%、14%和17%。通过对Hibernate生态系统中的软件进行调研,Limahe等人发现技术债务消除时间与其本身的严重程度有着直接的关系,即严重程度越高的技术债务,需要花费更长时间和代价。同时,超过50%的软件的严重程度高的技术债务往往随着时间的推移,数量不断增加。
[0004]在技术债务严重程度识别问题中,已有的研究主要聚焦实证调研,尚缺乏可靠的方法来度量技术债务的严重程度。为此,本专利技术提出了一种基于多源信息的技术债务严重程度识别方法。方法同时考虑存在技术债务方法代码的语义信息和结构化信息,对技术债务的严 ...
【技术保护点】
【技术特征摘要】
1.基于多源信息的技术债务严重程度识别方法,其特征在于,包括以下步骤:步骤1.获取技术债务严重程度识别所需数据;步骤2.使用srcML工具获取Java源代码的XML文件,对每一个样本sample
i
(i=1,2,...,l3)中的方法method进行结构化信息提取,得到向量structuralV和集合STV;步骤3.使用JavaParser将每一个样本sample
i
(i=1,2,...,l3)中的方法method转化为抽象语法树并进行语义化信息的提取,得到聚合向量semanticV和集合SEV;步骤4.将每一个样本中方法对应的structuralV和semanticV进行拼接,得到方法的最终向量表示methodV,每一个样本可表示为sample=<methodV,severity>,向量的每一维代表一个特征的值;步骤5.使用卡方检测计算类别和特征之间的相关性得分,并选取得分前K%的特征;步骤6.对样本集合中的少数类样本进行数据增强;步骤7.利用分层抽样的方法,将数据集划分为等量的十份,其中九份作为训练集,一份作为测试集,基于XGBoost训练分类器,将训练好的分类器用于技术债务严重程度识别。2.根据权利要求1所述的基于多源信息的技术债务严重程度识别方法,其特征在于,所述的步骤1包括以下子步骤:子步骤1
‑
1,从开源软件仓库中获得项目数据并筛选出其中的Java文件;子步骤1
‑
2,使用JavaParser抽取出java文件的所有方法,以及方法对应的起始行和结束行信息,组成四元组mt=<file,method,start,end>,其中file表示文件名,method表示方法级代码,start表示方法起始行号,end表示方法结束行号;所有的四元组组成集合MT=(mt1,mt2,...,mt
l1
),其中l1代表四元组的数量;子步骤1
‑
3,使用SonarQube扫描Java文件得到所有语句级别技术债务实例,每个语句级技术债务实例由一个三元组dt=<file,line,severity>表示,line表示代码行号,severity表示技术债务严重程度;所有的三元组组成集合DT=(dt1,dt2,...,dt
l2
),其中l2代表三元组的数量;子步骤1
‑
4,对于MT中的一个四元组以及DT中的一个三元组,如果其file相同,line≥start且line≤end,则将其进行配对,生成一个样本sample=<method,severity>,用于代表方法级别技术债务实例;在配对过程中,当且仅当所有语句级别技术债务都具有相同的严重程度时,才将severity作为方法级别技术债务样本的严重程度,否则配对失败,不产生新样本;所有的样本组成集合S=(sample1,sample2,...,sample
l3
),l3代表样本数量。3.根据权利要求1所述的基于多源信息的技术债务严重程度识别方法,其特征在于,所述的步骤2包括以下子步骤:子步骤2
‑
1,使用srcML工具获取Java源代码的XML文件,对方法的规模size、复杂度complexity和耦合度coupling三个方面进行度量;规模由语句数量和代码行数量度量;复杂度度量包括:圈复杂度、参数数量、注释数量、表达式数量、变量声明数量和标识符数量;耦合度由方法调用次数度量;子步骤2
‑
2,对度量值进行归一化处理以防止极端值对模型学习造成影响,对于度量X
中的每个度量值x,归一化公式为:其中,x
min
和x
max
分别是X所有度量值中的最小和最大值;子步骤2
‑
3,将每个样本中的method转化为一个向量3,将每个样本中的method转化为一个向量其代表方法代码的结构化信息,所有的structuralV构成集合STV=(structuralV1,structuralV2,...,structuralV
l3
)。4.根据权利要求1所述的基于多源信息的技术债务严重程度识别方法,其特征在于,所述的步骤3包括以下子步骤:子步骤3
‑
...
【专利技术属性】
技术研发人员:俞东进,李斯诚,陈信,孙添,
申请(专利权)人:杭州电子科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。