CN115237752A - 代码质量评估方法、设备和计算机存储介质 - Google Patents
代码质量评估方法、设备和计算机存储介质 Download PDFInfo
- Publication number
- CN115237752A CN115237752A CN202210725494.4A CN202210725494A CN115237752A CN 115237752 A CN115237752 A CN 115237752A CN 202210725494 A CN202210725494 A CN 202210725494A CN 115237752 A CN115237752 A CN 115237752A
- Authority
- CN
- China
- Prior art keywords
- code
- parameter
- parameters
- target
- project
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3616—Software analysis for verifying properties of programs using software metrics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种代码质量评估方法、代码质量评估设备和计算机存储介质,属于信息处理技术领域,该方法包括:获取软件所属项目的项目参数,获取所述软件的目标代码的可维护性参数;根据所述项目参数和所述可维护性参数确定所述目标代码的代码质量评分;根据所述代码质量评分确定所述目标代码的评估结果。本发明旨在提高代码维护资源投入的灵活性和有效性,提高代码维护工作的效果。
Description
技术领域
本发明涉及信息处理技术领域,尤其涉及代码质量评估方法、代码质量评估设备和计算机存储介质。
背景技术
随着信息技术的发展,越来越多样的软件进入人们的视野和生活,每个软件都有着从企划阶段到淘汰阶段的生命周期,而其中,软件的维护阶段通常占据着生命周期的大部分时间,软件的维护工作在当下的软件工程中占有非常重要的地位。
当前,软件维护工作通过建立预测模型而对软件规模和维护工作量作出评估,然而这种评估仅能获得关于软件维护工作量的相关数值,以用于协调研发人力资源,无法评估代码质量,从代码质量的角度评估维护资源的投入,导致代码维护工作的效果不理想。
发明内容
本发明的主要目的在于提供一种代码质量评估方法、代码质量评估设备和计算机存储介质,旨在提高代码维护资源投入的灵活性和有效性,提高代码维护工作的效果。
为实现上述目的,本发明提供一种代码质量评估方法,所述代码质量评估方法包括以下步骤:
获取软件所属项目的项目参数,获取所述软件的目标代码的可维护性参数;
根据所述项目参数和所述可维护性参数确定所述目标代码的代码质量评分;
根据所述代码质量评分确定所述目标代码的评估结果。
可选地,所述项目参数包括重要性参数和活跃度参数,所述根据所述项目参数和所述可维护性参数确定所述目标代码的代码质量评分的步骤包括:
根据所述重要性参数、所述活跃度参数和所述可维护性参数确定所述代码质量评分。
可选地,获取所述活跃度参数的步骤包括:
获取目标时长,所述目标时长为所述项目上一次维护时间与当前时间的间隔时长;
根据所述目标时长确定所述活跃度参数。
可选地,所述可维护性参数包括代码规模参数、代码异味参数、重复代码参数以及复杂度参数,所述根据所述项目参数和所述可维护性参数确定所述目标代码的代码质量评分的步骤包括:
根据所述项目参数、所述代码规模参数、所述代码异味参数、所述重复代码参数以及所述复杂度参数确定所述代码质量评分。
可选地,所述目标代码为所述软件中剔除来自第三方或开源的代码后剩余的代码,获取所述目标代码的所述代码规模参数和所述重复代码参数的步骤包括:
获取所述目标代码的第一行数和第二行数,所述第一行数为所述目标代码的代码行数,所述第二行数为所述目标代码中重复的代码的行数;
根据所述第一行数确定所述代码规模参数,根据所述第一行数和所述第二行数确定所述重复代码参数。
可选地,所述目标代码包括若干个子代码,获取所述目标代码的所述复杂度参数的步骤包括:
获取每个所述子代码的圈复杂度和认知复杂度;
确定所述若干个子代码中的第一个数、第二个数和第三个数;其中,所述第一个数为所述圈复杂度大于第一阈值的子代码个数,所述第二个数为所述认知复杂度大于第二阈值的子代码个数,所述第三个数为代码行数大于第三阈值的子代码个数;
所述复杂度参数包括所述第一个数、所述第二个数和所述第三个数。
可选地,所述根据所述项目参数和所述可维护性参数确定所述目标代码的代码质量评分的步骤包括:
获取所述项目的调整参数,不同的所述项目对应不同的所述调整参数;
根据所述调整参数调整所述可维护性参数,获得调整后的可维护性参数;
根据所述调整后的可维护性参数和所述项目参数确定所述代码质量评分。
可选地,所述根据所述代码质量评分确定所述目标代码的评估结果的步骤包括:
当所述代码质量评分低于预设评分时,输出提示信息,所述提示信息包括所述目标代码对应的代码文件。
此外,为了实现上述目的,本申请还提出一种代码质量评估设备,所述代码质量评估设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的代码质量评估程序,所述代码质量评估程序配置为实现如上任一项所述的代码质量评估方法的步骤。
此外,为了实现上述目的,本申请还提出一种计算机存储介质,所述计算机存储介质上存储有代码质量评估程序,所述代码质量评估程序被处理器执行时实现如上任一项所述的代码质量评估方法的步骤。
本发明提出的一种代码质量评估方法,该方法通过获取软件所属项目的项目参数,再获取软件的目标代码的可维护性参数,根据项目参数和可维护性参数进行代码质量评分,根据获得的评分确定目标代码的代码质量评估结果,相比于对软件规模进行评估确定维护工作量,在评估指标中加入项目参数和可维护性参数,可以综合项目重要性和代码撰写质量的角度对代码进行评估,根据评估的结果灵活配置维护资源投入,从而提高代码维护资源投入的灵活性和有效性,提高代码维护工作的效果。
附图说明
图1是本发明设备一实施例运行涉及的硬件结构示意图;
图2为本发明代码质量评估方法一实施例的流程示意图;
图3为本发明代码质量评估方法另一实施例的流程示意图;
图4为本发明代码质量评估方法又一实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:获取软件所属项目的项目参数,获取所述软件的目标代码的可维护性参数;根据所述项目参数和所述可维护性参数确定所述目标代码的代码质量评分;根据所述代码质量评分确定所述目标代码的评估结果。
当前,软件维护工作通过建立预测模型而对软件规模和维护工作量作出评估,然而这种评估仅能获得关于软件维护工作量的相关数值,以用于协调研发人力资源,无法评估代码质量,从代码质量的角度评估维护资源的投入,导致代码维护工作的效果不理想。
本发明提供上述的解决方案,旨在提高代码维护资源投入的灵活性和有效性,提高代码维护工作的效果。
本发明实施例提出一种代码质量评估设备。
在本发明实施例中,参照图1,代码质量评估设备包括:处理器1001(例如CPU)和存储器1002。存储器1002可以是高速RAM存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1002可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机可读存储介质的存储器1002中可以包括代码质量评估程序。在图1所示的代码质量评估设备中,处理器1001可以用于调用存储器1002中存储的代码质量评估程序,并执行以下实施例中代码质量评估方法的相关步骤操作。
本发明实施例还提供一种代码质量评估方法,应用于上述代码质量评估设备。
参照图2,提出本申请代码质量评估方法一实施例。在本实施例中,所述代码质量评估方法包括:
步骤S10,获取软件所属项目的项目参数,获取所述软件的目标代码的可维护性参数;
具体的,通过项目对软件开发进行管理,一个软件可以涉及多个项目,一个项目也可管理开发多个软件,在本实施例中,软件由一个项目进行管理,软件为本实施例中代码质量评估的对象。
目标代码为软件中指定要进行代码质量评估的代码,由工作人员在开始代码质量评估时划定,决定软件中需要进行代码质量评估的代码范围。目标代码可以包括系统、若干个模块或若干个文件的代码,在本实施例中不作限定。
项目参数具体为从项目层面为代码质量评估提供参考的参数,可涉及项目的重要性、和其他项目的关联或项目规模等指标。可维护性参数具体为从软件的代码层面为代码质量评估提供参考的参数,可涉及代码的复习度或代码行数等指标。
具体实现时,工作人员执行代码质量评估的操作后,根据工作人员指定的范围确定要进行代码质量评估的代码,即目标代码,从而获取目标代码对应软件所属项目的项目参数,和目标代码的可维护性参数。
步骤S20,根据所述项目参数和所述可维护性参数确定所述目标代码的代码质量评分;
代码质量评分具体为根据项目参数和可维护性参数通过预设规则运算后所得的评分,可通过评分数值反映代码质量评估的结果。预设规则具体为一个涉及项目参数和可维护性参数的公式,根据评估所用的项目参数和可维护性参数的不同,公式中也对应运用不同的数值进行计算,计算结果即为代码质量评分。
步骤S30,根据所述代码质量评分确定所述目标代码的评估结果。
具体的,评估结果为在代码质量评分的基础上,进行进一步的总结,评估结果可直观地反映代码质量方法的执行结果。进一步的,代码质量评分可分阶段分别映射不同的评估结果,以根据代码质量评分确定评估结果,示例性的,代码质量评分为60-80分时,评估结果为良好。此外,评估结果可根据代码质量评分给出具体的提示信息,提示信息包括从代码质量评估中得出的代码维护工作的维护方向指引,例如可通过获取的项目参数和可维护性参数定位代码中的问题,在提示信息中展示。
本发明实施例提出的一种代码质量评估方法,该方法通过获取软件所属项目的项目参数,再获取软件的目标代码的可维护性参数,根据项目参数和可维护性参数进行代码质量评分,根据获得的评分确定目标代码的代码质量评估结果,相比于对软件规模进行评估确定维护工作量,在评估指标中加入项目参数和可维护性参数,可以综合项目重要性和代码撰写质量的角度对代码进行评估,根据评估的结果灵活配置维护资源投入,从而提高代码维护资源投入的灵活性和有效性,提高代码维护工作的效果。
进一步的,在本实施例中,所述根据所述代码质量评分确定所述目标代码的评估结果的步骤包括:当所述代码质量评分低于预设评分时,输出提示信息,所述提示信息包括所述目标代码对应的代码文件。
预设评分具体为划分代码质量评分是否达到要求的阈值,当代码质量评分低于预设评分时,确定代码质量评分属于不合格,需要优化或重新开发,此外,当代码质量评分大于或等于预设评分时,确定代码质量评分属于合格,可以进行交付或作为榜样展示。
在本实施例中,提示信息包括根据代码质量评分得出的评估结果等级,评估结果等级具体划分为ABCD共四个等级,在合格与不合格的基础上进一步细分,其中,A等级表示代码质量良好,可作为榜样学习,B等级表示代码质量正常,可正常交付,C等级表示代码质量待改进,需要进行优化,D等级表示代码质量无法接受,需要重新开发。示例性的,当代码质量评分低于30分时,等级为D;代码质量评分大于等于30分且小于60分时,等级为C;代码质量评分大于等于60分且小于80分时,等级为B;代码质量评分大于等于80分时,等级为A;其中,60分为预设评分。
进一步的,当代码质量评分低于预设评分时,即目标代码需要优化或重新开发时,提示信息包括目标代码对应的代码文件,以使开发人员可直观确定存在问题的代码文件。此外,当目标代码包括若干个代码文件时,可再次对若干个代码文件中每个代码文件都进行代码质量评估,获取每个代码文件的代码质量评估结果,根据代码文件的质量评估结果在提示信息中将若干个代码文件排序,将代码质量评估结果较差的代码文件优先显示。
通过输出提示信息,并在提示信息中展示目标代码对应的代码文件,可以直观地展示代码质量评估结果,并通过展示的代码文件指引维护改进方向,提高代码维护工作的效率。
进一步的,基于上述实施例,提出本申请代码质量评估方法另一实施例。在本实施例中,项目参数包括重要性参数和活跃度参数,可维护性参数包括代码规模参数、代码异味参数、重复代码参数以及复杂度参数。基于此,参照图3,所述代码质量评估方法包括:
步骤S11,获取软件所属项目的重要性参数和活跃度参数;
重要性参数具体为对于项目重要性的评级,在本实施例中,通过工作人员根据项目的重要性进行人工评估后设置,当执行代码质量评估方法时,获取重要性参数设置的数值。在其他实施例中,也可通过预设规则根据项目中的代码生成对应的重要性参数。此外,对于同一个项目,对不同的目标代码进行代码质量评估所涉及的重要性参数都是相同的,对于不同的项目,则可能是不同的。
活跃度参数具体为体现项目活跃程度的参数,需要说明的是,项目活跃程度表征的是项目在维护工作或开发工作方向上的活跃程度,而不是在应用方向上的活跃程度。当项目活跃程度低时,表征项目的稳定性高,需要频繁进行维护工作或开发工作的重要性低。
在其他实施例中,项目参数也可包括基于项目代码行数所得的参数,或基于对应项目与其他项目关联的数据量所得的参数,以在项目层面体现项目的重要性。
通过获取项目的重要性参数和活跃度参数,可以基于项目层面确定项目重要性,往代码质量评估的方法加入项目重要性的因素作为参考,提高代码质量评估结果的可靠性。
步骤S12,获取所述软件的目标代码的代码规模参数、代码异味参数、重复代码参数和复杂度参数;
具体的,代码规模参数为根据目标代码的行数相关数值所得的参数,重复代码参数为根据目标代码的重复代码行数相关数值所得的参数,代码规模参数和重复代码参数均可作为评估代码复杂或臃肿程度的指标。此外,复杂度参数为对目标代码的复杂度进行检测后所得的相关参数,可表征目标代码的结构复杂程度和执行效率。
进一步的,代码异味指代码中任何可能导致深层次问题的症状,代码异味参数为对目标代码进行代码异味检测后所得的参数,可表征目标代码中可能存在的问题数量。代码异味检测工具可以是pmd、PC-lint、Clang-Tidy、Pylint等多种检测工具。
在其他实施例中,可维护性参数还可包括
通过获取目标代码的代码规模参数、代码异味参数、重复代码参数和复杂度参数,可以从代码层面确定代码的撰写质量,为代码质量评估中加入多个表征代码质量的指标,提高代码质量评估结果的准确性。
步骤S21,根据所述重要性参数、所述活跃度参数、所述代码规模参数、所述代码异味参数、所述重复代码参数以及所述复杂度参数确定所述目标代码的代码质量评分;
具体的,按第一公式,代入重要性参数、活跃度参数、代码规模参数、代码异味参数、重复代码参数和复杂度参数,计算第一公式获得计算结果,计算结果即为代码质量评分。
示例性的,定义第一公式中代码质量评分为X,重要性参数为L,活跃度参数为T,代码规模参数为D,代码异味参数为G,重复代码参数为H,复杂度参数为U,则第一公式具体为:
在本实施例中,公式通过扣分制在100分的基础上扣分获得代码质量评分,在其他实施例中,可设计以加分形式计算的公式,每个参数分配有一定的分值。
通过公式计算代码质量评分,可数值化代码质量评估结果,并根据所涉及的参数调整公式,既为工作人员提供直观的结果参考,也提高代码质量评估的准确性。
进一步的,在本实施例中,获取所述活跃度参数的步骤包括:获取目标时长,所述目标时长为所述项目上一次维护时间与当前时间的间隔时长;根据目标时长确定所述活跃度参数。
具体的,根据项目上一次维护时间与当前时间的间隔时长可确定项目已停止维护的时长,即目标时长,根据目标时长可判断项目的活跃程度。进一步的,目标时长越长,表征项目目前不需要进行维护而稳定工作的时间越长,项目的稳定性越高;目标时长越短,表征项目距离上一次进行维护的时间越短,项目的稳定性越低。
基于不同范围的目标时长对应不同的活跃度参数,在本实施例中,通过对目标时长取倒数后,根据倒数的数值确定对应的活跃度参数;在其他实施例中,也可以预设不同范围的目标时长与对应活跃度参数的映射规则。
在其他实施例中,可基于预设时间段内项目被调用工作的频率确定项目的活跃程度。
根据目标时长确定项目的活跃度参数,可基于维护时间间隔的方向确定项目的稳定性,将项目稳定性加入代码质量评估的参考,提高代码质量评估的准确性。
进一步的,在本实施例中,所述目标代码为所述软件中剔除来自第三方或开源的代码后剩余的代码,获取所述目标代码的所述代码规模参数和所述重复代码参数的步骤包括:获取所述目标代码的第一行数和第二行数,所述第一行数为所述目标代码的代码行数,所述第二行数为所述目标代码中重复的代码的行数;根据所述第一行数确定所述代码规模参数,根据所述第一行数和所述第二行数确定所述重复代码参数。
具体的,软件中包括在开发过程引入的第三方代码或开源的代码,其中,第三方代码由第三方机构进行维护更新,开源的代码由开源平台进行维护更新,剔除来自第三方或开源的代码后剩余的代码才是开发人员所开发的需要维护的代码,即实际维护的代码和目标代码。
根据目标代码的行数确定代码规模参数,不同范围的目标代码行数有对应的代码规模参数值,例如,目标代码为200行时,代码规模参数为5。此外,重复代码参数为目标代码中重复的代码行数与目标代码的行数的比值,例如,目标代码为200行,重复代码为10行时,重复代码参数为1/20。
在其他实施例中,代码规模参数可根据目标代码所涉及的函数和方法等代码结构的数量确定代码规模。
通过基于目标代码的代码行数和重复代码行数确定的代码规模参数和重复代码参数,可提供关于目标代码的代码规模和臃肿程度的参考,以使将代码规模参数和重复代码参数加入代码质量评分计算公式后可提高代码质量评估的准确性。
进一步的,在本实施例中,所述目标代码包括若干个子代码,获取所述目标代码的所述复杂度参数的步骤包括:获取每个所述子代码的圈复杂度和认知复杂度;确定所述若干个子代码中的第一个数、第二个数和第三个数;其中,所述第一个数为所述圈复杂度大于第一阈值的子代码个数,所述第二个数为所述认知复杂度大于第二阈值的子代码个数,所述第三个数为代码行数大于第三阈值的子代码个数;所述复杂度参数包括所述第一个数、所述第二个数和所述第三个数。
子代码具体为具有完整结构的一段代码,例如,一个函数、一个方法、一个类或一个文件。圈复杂度和认知复杂度是衡量代码复杂度的标准,其中,圈复杂度可通过代码中的现行路径条数判定代码结构的复杂程度,代码计算出的圈复杂度越高,表征代码的判断逻辑越复杂,越可能出现问题且难以维护;认知复杂度通过评估代码中打断线性逻辑或嵌套的情况判定代码结构的复杂程度,代码计算出的认知复杂度越高,表征代码越难以理解,越难以维护。
进一步的,设定第一阈值、第二阈值和第三阈值,确定若干个子代码中不合格的子代码,其中,当圈复杂度大于第一阈值或认知复杂度大于第二阈值时,确定对应的子代码复杂度不合格,例如,设定第一阈值和第二阈值均为10,子代码计算出的圈复杂度为5,认知复杂度为15,则因为认知复杂度大于第二阈值,确定对应子代码复杂度不合格。此外,通过第三阈值限定子代码的行数,当子代码的行数大于第三阈值时,表征对应子代码属于大函数或大文件等过于臃肿的代码结构,对应子代码属于难以维护的不合格的子代码。
第一个数为统计若干子代码中圈复杂度大于第一阈值的子代码个数,第二个数为统计若干子代码中认知复杂度大于第二阈值的子代码个数,第三个数为统计若干子代码中代码行数大于第三阈值的子代码个数。需要说明的是,一个子代码可同时计入第一个数、第二个数和/或第三个数。
此外,当目标代码中仅包括一个子代码时,第一个数为对应子代码的圈复杂度与第一阈值的差值,第二个数为对应子代码的认知复杂度与第二阈值的差值,第三个数为对应子代码的行数与第三阈值的差值,且第一个数、第二个数和第三个数最小值为0。以使目标代码为一个函数、一个方法、一个类或一个文件等情况时仍可进行代码质量评估。
通过圈复杂度、认知复杂度和代码行数,可以确定目标代码的若干子代码中,代码结构过于复杂而难以维护的子代码,通过复杂度参数统计难以维护的子代码个数,将复杂度参数加入代码质量评估,可以提高代码质量评估的准确性。
进一步的,基于上述实施例,提出本申请代码质量评估方法又一实施例。在本实施例中,项目参数包括重要性参数和活跃度参数,可维护性参数包括代码规模参数、代码异味参数、重复代码参数以及复杂度参数。基于此,参照图4,所述根据所述项目参数和所述可维护性参数确定所述目标代码的代码质量评分的步骤包括:
步骤S211,获取所述项目的调整参数,不同的所述项目对应不同的所述调整参数;
调整参数具体为对可维护性参数进行调整的参数,为了设计理想的代码质量评分计算公式,加入调整参数起到进一步调整的作用,同时调整参数也可调整各个可维护性参数的权重,对评分计算公式进行调整。在本实施例中,调整参数根据重要性参数和代码规模参数确定,跟所选择的进行代码质量评估的项目和目标代码相关;在其他实施例中,调整参数也可通过人工评估设置等方法确定。
步骤S212,根据所述调整参数调整所述可维护性参数,获得调整后的可维护性参数;
在本实施例中,根据调整参数调整可维护性参数的具体步骤为将调整参数作为系数与可维护性参数相乘,相乘所得的结果为调整后的可维护性参数。需要说明的是,调整参数包括与可维护性参数对应的代码规模系数、代码异味系数、重复代码系数和复杂度系数,此外,对于复杂度参数所包括的第一个数、第二个数和第三个数,也可包括对应的第一系数、第二系数和第三系数。例如,代码规模参数与代码规模系数相乘,相乘结果为调整后的代码规模参数。
在其他实施例中,也可通过加法等运算关系设计调整参数对可维护性参数的调整方式。
步骤S213,根据所述调整后的可维护性参数和所述项目参数确定所述代码质量评分。
将调整后的可维护性参数和项目参数代入代码质量评分计算公式中,可计算获得代码质量评分。
需要说明的是,基于第一公式加入调整参数,并在公式中将复杂度参数展开为第一个数、第二个数和第三个数,获得第二公式。
示例性的,定义第二公式中代码质量评分为X,重要性参数为L,活跃度参数为T,代码规模参数为D,代码规模系数为Dx,代码异味参数为G,代码异味系数为Gx,重复代码参数为H,重复代码系数为Hx,第一个数为Ut,第一系数为tx,第二个数为Ur,第二系数为rx,第三个数为Ue,第三系数为ex,则第二公式具体为:
通过往代码质量评分计算公式中加入对可维护性参数进行调整的调整参数,可提高计算公式设计的灵活性,根据实际需求调整各个可维护性参数的权重,从而调整计算公式的运算结果,提高代码质量评估的准确性。
此外,本发明实施例还提出一种计算机存储介质,所述计算机存储介质上存储有代码质量评估程序,所述代码质量评估程序被处理器执行时实现如上代码质量评估方法任一实施例的相关步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种代码质量评估方法,其特征在于,所述代码质量评估方法包括以下步骤:
获取软件所属项目的项目参数,获取所述软件的目标代码的可维护性参数;
根据所述项目参数和所述可维护性参数确定所述目标代码的代码质量评分;
根据所述代码质量评分确定所述目标代码的评估结果。
2.如权利要求1所述的代码质量评估方法,其特征在于,所述项目参数包括重要性参数和活跃度参数,所述根据所述项目参数和所述可维护性参数确定所述目标代码的代码质量评分的步骤包括:
根据所述重要性参数、所述活跃度参数和所述可维护性参数确定所述代码质量评分。
3.如权利要求2所述的代码质量评估方法,其特征在于,获取所述活跃度参数的步骤包括:
获取目标时长,所述目标时长为所述项目上一次维护时间与当前时间的间隔时长;
根据所述目标时长确定所述活跃度参数。
4.如权利要求1所述的代码质量评估方法,其特征在于,所述可维护性参数包括代码规模参数、代码异味参数、重复代码参数以及复杂度参数,所述根据所述项目参数和所述可维护性参数确定所述目标代码的代码质量评分的步骤包括:
根据所述项目参数、所述代码规模参数、所述代码异味参数、所述重复代码参数以及所述复杂度参数确定所述代码质量评分。
5.如权利要求4所述的代码质量评估方法,其特征在于,所述目标代码为所述软件中剔除来自第三方或开源的代码后剩余的代码,获取所述目标代码的所述代码规模参数和所述重复代码参数的步骤包括:
获取所述目标代码的第一行数和第二行数,所述第一行数为所述目标代码的代码行数,所述第二行数为所述目标代码中重复的代码的行数;
根据所述第一行数确定所述代码规模参数,根据所述第一行数和所述第二行数确定所述重复代码参数。
6.如权利要求4所述的代码质量评估方法,其特征在于,所述目标代码包括若干个子代码,获取所述目标代码的所述复杂度参数的步骤包括:
获取每个所述子代码的圈复杂度和认知复杂度;
确定所述若干个子代码中的第一个数、第二个数和第三个数;其中,所述第一个数为所述圈复杂度大于第一阈值的子代码个数,所述第二个数为所述认知复杂度大于第二阈值的子代码个数,所述第三个数为代码行数大于第三阈值的子代码个数;
所述复杂度参数包括所述第一个数、所述第二个数和所述第三个数。
7.如权利要求1至6任一项所述的代码质量评估方法,其特征在于,所述根据所述项目参数和所述可维护性参数确定所述目标代码的代码质量评分的步骤包括:
获取所述项目的调整参数,不同的所述项目对应不同的所述调整参数;
根据所述调整参数调整所述可维护性参数,获得调整后的可维护性参数;
根据所述调整后的可维护性参数和所述项目参数确定所述代码质量评分。
8.如权利要求1至6任一项所述的代码质量评估方法,其特征在于,所述根据所述代码质量评分确定所述目标代码的评估结果的步骤包括:
当所述代码质量评分低于预设评分时,输出提示信息,所述提示信息包括所述目标代码对应的代码文件。
9.一种代码质量评估设备,其特征在于,所述代码质量评估设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的代码质量评估程序,所述代码质量评估程序配置为实现如权利要求1至8中任一项所述的代码质量评估方法的步骤。
10.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有代码质量评估程序,所述代码质量评估程序被处理器执行时实现如权利要求1至8任一项所述的代码质量评估方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210725494.4A CN115237752A (zh) | 2022-06-24 | 2022-06-24 | 代码质量评估方法、设备和计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210725494.4A CN115237752A (zh) | 2022-06-24 | 2022-06-24 | 代码质量评估方法、设备和计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115237752A true CN115237752A (zh) | 2022-10-25 |
Family
ID=83669607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210725494.4A Pending CN115237752A (zh) | 2022-06-24 | 2022-06-24 | 代码质量评估方法、设备和计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115237752A (zh) |
-
2022
- 2022-06-24 CN CN202210725494.4A patent/CN115237752A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106294120B (zh) | 测试代码的方法、设备和计算机程序产品 | |
US20060184460A1 (en) | Automated learning system | |
US5655074A (en) | Method and system for conducting statistical quality analysis of a complex system | |
CN107239458B (zh) | 基于大数据推算开发对象关系的方法及装置 | |
CN110532084B (zh) | 平台任务的调度方法、装置、设备及存储介质 | |
CN112016101B (zh) | 软件研发安全能力动态评估和提升方法及系统 | |
CA2433996A1 (en) | Software tool for heuristic search methods | |
CN111324639A (zh) | 数据监测方法、装置及计算机可读存储介质 | |
WO2008019832A1 (en) | Improved monte carlo simulation and display of results thereof | |
CN111639034A (zh) | 测试方法、装置、设备及计算机存储介质 | |
US20050278301A1 (en) | System and method for determining an optimized process configuration | |
CN115062006A (zh) | 一种基于关联企业的风险评估方法及系统 | |
CN115237752A (zh) | 代码质量评估方法、设备和计算机存储介质 | |
Tariq et al. | Code readability management of high-level programming languages: a comparative study | |
JP2012230538A (ja) | ソフトウェア評価装置、ソフトウェア評価方法およびシステム評価装置 | |
CN114546841B (zh) | 基于云计算的软件质量评估方法 | |
CN115629949A (zh) | 管理信息系统的优化方法、装置、电子设备及存储介质 | |
CN111352852B (zh) | 一种回归测试案例的选择方法及装置 | |
JP2003280901A (ja) | 見積評価支援プログラムおよび見積評価支援システム | |
CN113469284A (zh) | 一种数据分析的方法、装置及存储介质 | |
CN111124918A (zh) | 测试数据预测方法及装置、处理设备 | |
CN110765600A (zh) | 一种航空发动机计算分析软件能力测评方法及系统 | |
Galyean | Orthogonal PSF taxonomy for human reliability analysis | |
CN116956646B (zh) | 数控机床可靠性分析方法、装置、计算机设备及存储介质 | |
CN118502814B (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 |