当前位置: 首页 > 专利查询>深圳大学专利>正文

一种代码坏味道检测方法、装置、设备及存储介质制造方法及图纸

技术编号:38514400 阅读:6 留言:0更新日期:2023-08-19 16:57
本发明专利技术适用计算机技术领域,提供了一种代码坏味道检测方法、装置、设备及存储介质,该方法包括:获取待检测软件项目的当前坏味道检测种类;获取当前坏味道检测种类的关联软件度量元,计算待检测软件项目中每个代码实体中每个关联软件度量元的值及所有代码实体中每个关联软件度量元的平均值,获取当前坏味道检测种类的预检测规则,根据预检测规则对待检测软件项目中的所有代码实体进行预检,得到当前坏味道检测种类的坏味道嫌疑实体集,根据当前坏味道检测种类的影响因子集、关联软件度量元的值及平均值,对每一个坏味道嫌疑实体进行终检,得到具有当前坏味道检测种类的坏味道实体集,如此完成所有坏味道检测种类的检测。如此完成所有坏味道检测种类的检测。如此完成所有坏味道检测种类的检测。

【技术实现步骤摘要】
一种代码坏味道检测方法、装置、设备及存储介质


[0001]本专利技术属于计算机
,尤其涉及一种代码坏味道检测方法、装置、设备及存储介质。

技术介绍

[0002]代码坏味道是违背了软件开发原则的低质量需重构代码片段实体,又被称为代码反模式或技术债务。代码坏味道的检测可以帮助确定软件重构目标,软件重构是在不改变软件的功能和外部可见性的情况下,改进软件的结构,提高代码可读性、程序可扩展性和可重用性。软件重构技术是提升软件质量的重要方法,而代码坏味道检测直接为软件重构确定程序中需要重构的位置。
[0003]然而,目前的代码坏味道检测方法仍存在以下问题:1)目前存在的基于度量元与启发式规则的代码坏味道检测方法依赖人工设置检测规则与阈值,导致检测结果受较多主观因素影响。同时,该类方法无法根据软件项目的差异性进行动态地检测。2)目前存在的基于机器学习的代码坏味道检测方法依赖大量带标签的数据对模型进行训练,而目前代码坏味道检测领域缺少该种数据集。同时,在跨项目坏味道检测中,基于机器学习的检测方法也无法取得预期效果。3)现有检测方法与检测工具大多存在检测步骤多,涉及多种数据格式转换,流程复杂,工具不易用等问题。基于机器学习的检测方法需要将源代码转化成模型可以识别的特征,易用性较差。而插件工具使用时需先将软件项目导入平台中再使用工具进行坏味道检测。然而,在实际使用时许多软件项目由于版本不兼容而导致无法完成代码坏味道检测。

技术实现思路

[0004]本专利技术的目的在于提供一种代码坏味道检测方法、装置、设备及存储介质,旨在解决由于现有技术无法提供一种有效的代码坏味道检测方法,导致代码坏味道检测准确率不佳的问题。
[0005]第一方面,本专利技术提供了一种代码坏味道检测方法,所述方法包括下述步骤:
[0006]步骤a、接收输入的待检测软件项目,获取所述待检测软件项目的当前坏味道检测种类;
[0007]步骤b、获取所述当前坏味道检测种类的关联软件度量元,计算所述待检测软件项目中每个代码实体中每个所述关联软件度量元的值及所有代码实体中每个所述关联软件度量元的平均值;
[0008]步骤c、根据所述当前坏味道检测种类、所述平均值,获取所述当前坏味道检测种类的预检测规则,根据所述预检测规则对所述待检测软件项目中的所有代码实体进行预检,得到所述当前坏味道检测种类的坏味道嫌疑实体集;
[0009]步骤d、根据所述当前坏味道检测种类的影响因子集、所述关联软件度量元的值及平均值,对所述坏味道嫌疑实体集中每一个坏味道嫌疑实体进行终检,得到具有所述当前
坏味道检测种类的坏味道实体集并输出;
[0010]步骤e、当所述待检测软件项目的所有坏味道检测种类未检测完成时,获取所述待检测软件项目的下一坏味道检测种类,将下一坏味道检测种类设置为当前坏味道检测种类并跳转至步骤b,以对下一坏味道检测种类进行检测,直至完成所述待检测软件项目的所有坏味道检测种类的检测。
[0011]在一些实施例中,获取所述待检测软件项目的当前坏味道检测种类的步骤,包括:
[0012]获取坏味道实例数据集中预设数量个坏味道种类的坏味道间相生关系,将所述坏味道间相生关系量化为影响因子;
[0013]获取所有所述影响因子大于预设因子阈值的坏味道种类对,将所有所述坏味道种类对对应的坏味道种类确定为坏味道检测种类,根据每个坏味道检测种类的影响因子集中的元素数量,确定所有所述坏味道检测种类的检测优先级;
[0014]按照所有所述坏味道检测种类的检测优先级高低,获取所述待检测软件项目的当前坏味道检测种类。
[0015]在一些实施例中,将所述坏味道间相生关系量化为影响因子的量化公式为其中,i≠j,f
CSi,j
表示坏味道种类i对坏味道种类j的影响因子,|CS
i
|表示坏味道种类i出现的次数,|CS
i
∧CS
j
|表示坏味道种类i和坏味道种类j共同出现的次数。
[0016]在一些实施例中,根据所述当前坏味道检测种类的影响因子集、所述关联软件度量元的值及平均值,对所述坏味道嫌疑实体集中每一个坏味道嫌疑实体进行终检的步骤,包括:
[0017]根据所述当前坏味道检测种类的影响因子集和检测优先级,计算当前检测的坏味道嫌疑实体的初始可能性值;
[0018]根据所述关联软件度量元的值及平均值,计算所述当前检测的坏味道嫌疑实体中所有所述关联软件度量元的度量元偏离值;
[0019]基于所述初始可能性值以及所述度量元偏离值,获取所述当前检测的坏味道嫌疑实体具有所述当前坏味道检测种类的最终可能性值;
[0020]当所述最终可能性值大于预设种类阈值时,确定所述当前检测的坏味道嫌疑实体具有所述当前坏味道检测种类,否则不具有所述当前坏味道检测种类。
[0021]在一些实施例中,计算所述待检测软件项目中每个代码实体中每个所述关联软件度量元的值及所有代码实体中每个所述关联软件度量元的平均值的步骤,包括:
[0022]遍历所述待检测软件项目中的所有源代码文件,将所述源代码文件中的类层代码实体及方法层代码实体解析并转化为类层抽象语法树及方法层抽象语法树,提取所述类层抽象语法树及方法层抽象语法树的节点结构信息和语义信息;
[0023]根据所述节点结构信息和语义信息,计算所述待检测软件项目中每个代码实体中每个所述关联软件度量元的值及所有代码实体中每个所述关联软件度量元的平均值。
[0024]在一些实施例中,通过AST解析器将所述源代码文件中的类层代码实体及方法层代码实体解析并转化为类层抽象语法树及方法层抽象语法树。
[0025]在一些实施例中,根据所述当前坏味道检测种类、所述平均值,获取所述当前坏味道检测种类的预检测规则的步骤,包括:
[0026]获取所述当前坏味道检测种类的预检测初始规则,使用所述平均值对所述预检测初始规则进行实例化,得到所述当前坏味道检测种类的预检测规则。
[0027]第二方面,本专利技术提供了一种代码坏味道检测装置,所述装置包括:
[0028]检测种类获取单元,用于接收输入的待检测软件项目,获取所述待检测软件项目的当前坏味道检测种类;
[0029]值计算单元,用于获取所述当前坏味道检测种类的关联软件度量元,计算所述待检测软件项目中每个代码实体中每个所述关联软件度量元的值及所有代码实体中每个所述关联软件度量元的平均值;
[0030]代码预检单元,用于根据所述当前坏味道检测种类、所述平均值,获取所述当前坏味道检测种类的预检测规则,根据所述预检测规则对所述待检测软件项目中的所有代码实体进行预检,得到所述当前坏味道检测种类的坏味道嫌疑实体集;
[0031]代码终检单元,用于根据所述当前坏味道检测种类的影响因子集、所述关联软件度量元的值及平均值,对所述坏味道嫌疑实体集中每一个坏味道嫌疑实体进行终检,得到具有所述当前坏味道检测种类的坏味道实体集并输出;以及
[0本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码坏味道检测方法,其特征在于,所述方法包括下述步骤:步骤a、接收输入的待检测软件项目,获取所述待检测软件项目的当前坏味道检测种类;步骤b、获取所述当前坏味道检测种类的关联软件度量元,计算所述待检测软件项目中每个代码实体中每个所述关联软件度量元的值及所有代码实体中每个所述关联软件度量元的平均值;步骤c、根据所述当前坏味道检测种类、所述平均值,获取所述当前坏味道检测种类的预检测规则,根据所述预检测规则对所述待检测软件项目中的所有代码实体进行预检,得到所述当前坏味道检测种类的坏味道嫌疑实体集;步骤d、根据所述当前坏味道检测种类的影响因子集、所述关联软件度量元的值及平均值,对所述坏味道嫌疑实体集中每一个坏味道嫌疑实体进行终检,得到具有所述当前坏味道检测种类的坏味道实体集并输出;步骤e、当所述待检测软件项目的所有坏味道检测种类未检测完成时,获取所述待检测软件项目的下一坏味道检测种类,将下一坏味道检测种类设置为当前坏味道检测种类并跳转至步骤b,以对下一坏味道检测种类进行检测,直至完成所述待检测软件项目的所有坏味道检测种类的检测。2.如权利要求1所述的方法,其特征在于,获取所述待检测软件项目的当前坏味道检测种类的步骤,包括:获取坏味道实例数据集中预设数量个坏味道种类的坏味道间相生关系,将所述坏味道间相生关系量化为影响因子;获取所有所述影响因子大于预设因子阈值的坏味道种类对,将所有所述坏味道种类对对应的坏味道种类确定为坏味道检测种类,根据每个坏味道检测种类的影响因子集中的元素数量,确定所有所述坏味道检测种类的检测优先级;按照所有所述坏味道检测种类的检测优先级高低,获取所述待检测软件项目的当前坏味道检测种类。3.如权利要求2所述的方法,其特征在于,将所述坏味道间相生关系量化为影响因子的量化公式为其中,i≠j,f
CSi,j
表示坏味道种类i对坏味道种类j的影响因子,|CS
i
|表示坏味道种类i出现的次数,|CS
i
∧CS
j
|表示坏味道种类i和坏味道种类j共同出现的次数。4.如权利要求2所述的方法,其特征在于,根据所述当前坏味道检测种类的影响因子集、所述关联软件度量元的值及平均值,对所述坏味道嫌疑实体集中每一个坏味道嫌疑实体进行终检的步骤,包括:根据所述当前坏味道检测种类的影响因子集和检测优先级,计算当前检测的坏味道嫌疑实体的初始可能性值;根据所述关联软件度量元的值及平均值,计算所述当前检测的坏味道嫌疑实体中所有所述关联软件度量元的度量元偏离值;基于所述初始可能性值以及所述度量元偏离值,获取所述当前检测的坏味道嫌疑实体具有所述当前坏味道检测种类的最终可能性值;
当所述最终可能性值大于预设种类阈值时,确定所...

【专利技术属性】
技术研发人员:毛斐巧钟凯航杜智华
申请(专利权)人:深圳大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1