CN110858176B - 代码质量评估方法、装置、系统及存储介质 - Google Patents
代码质量评估方法、装置、系统及存储介质 Download PDFInfo
- Publication number
- CN110858176B CN110858176B CN201810974685.8A CN201810974685A CN110858176B CN 110858176 B CN110858176 B CN 110858176B CN 201810974685 A CN201810974685 A CN 201810974685A CN 110858176 B CN110858176 B CN 110858176B
- Authority
- CN
- China
- Prior art keywords
- code
- quality
- information
- values
- evaluation
- 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.)
- Active
Links
- 238000013441 quality evaluation Methods 0.000 title claims abstract description 151
- 238000000034 method Methods 0.000 title claims abstract description 72
- 238000011156 evaluation Methods 0.000 claims abstract description 102
- 238000001303 quality assessment method Methods 0.000 claims abstract description 72
- 238000012549 training Methods 0.000 claims abstract description 39
- 238000010801 machine learning Methods 0.000 claims description 94
- 230000006870 function Effects 0.000 claims description 91
- 238000004590 computer program Methods 0.000 claims description 2
- 239000000758 substrate Substances 0.000 claims 1
- 238000004458 analytical method Methods 0.000 abstract description 5
- 238000004422 calculation algorithm Methods 0.000 description 37
- 230000004927 fusion Effects 0.000 description 16
- 238000011161 development Methods 0.000 description 13
- 230000018109 developmental process Effects 0.000 description 13
- 238000003058 natural language processing Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 238000012795 verification Methods 0.000 description 7
- 238000013135 deep learning Methods 0.000 description 6
- 238000007477 logistic regression Methods 0.000 description 6
- 238000012706 support-vector machine Methods 0.000 description 5
- 238000013145 classification model Methods 0.000 description 4
- 239000000284 extract Substances 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000000605 extraction Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000007635 classification algorithm Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 238000012417 linear regression Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
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/75—Structural analysis for program understanding
-
- 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/362—Software debugging
- G06F11/3628—Software debugging of optimised code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- 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/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/20—Ensemble learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/10—Machine learning using kernel methods, e.g. support vector machines [SVM]
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供一种代码质量评估方法、装置、系统及存储介质。该方法包括:获取复数个样本代码、以及其中每个样本代码的质量信息;根据预先确定的复数个代码属性,从所述复数个样本代码中提取其中每个样本代码的所述复数个代码属性的值,作为样本值集合;利用所述样本值集合和所述质量信息组成的训练集确定所述复数个代码属性的值与代码质量之间的关系;从待评估的代码中提取所述复数个代码属性对应的值作为评估值集合;利用所述关系获得所述评估值集合对应的代码质量评估信息。解决了人工代码评估方案的人力成本高的问题,以及代码分析工具无法给出代码整体质量评估结果的问题。
Description
技术领域
本发明涉及计算机领域,特别是一种代码质量评估方法、装置、系统及存储介质。
背景技术
软件在我们生活的各个方面发挥了关键作用。软件的代码质量对软件提供者的业务开展至关重要。目前,软件代码的质量评估要么由专家使用一些代码分析工具进行人工评估需要领域专家和大量的人力。
发明内容
有鉴于此,本发明提出了一种代码质量评估方法、装置及存储介质,用以提高代码质量评估的效率,降低代码质量评估的人力成本。
本申请实施例提供了一种代码质量评估方法,包括:
获取复数个样本代码、以及其中每个样本代码的质量信息;
根据预先确定的复数个代码属性,从所述复数个样本代码中提取其中每个样本代码的所述复数个代码属性的值,作为样本值集合;
利用所述样本值集合和所述质量信息确定所述复数个代码属性的值与代码质量之间的关系;
从待评估的代码中提取所述复数个代码属性对应的值作为评估值集合;
利用所述关系获得所述评估值集合对应的代码质量评估信息。
可见,通过利用代码样本及其质量信息确定复数个代码属性的值与代码质量之间的关系,使用该关系进行代码的质量评估,不再依赖专家进行人工评估,降低了评估的成本,提高了评估的效率。
一些实施例中,利用所述样本值集合和所述质量信息确定所述复数个代码属性的值与代码质量之间的关系包括:确定所述机器学习模块的复数个属性影响因子,每个属性影响因子表示所述复数个代码属性中的一个代码属性的值对代码质量的影响;
利用所述关系获得所述评估值集合对应的代码质量评估信息包括:利用所述复数个属性影响因子和所述评估值集合中的所述复数个代码属性的值获得所述代码质量评估信息。
可见,通过确定各个代码属性对代码质量的影响因子,可以根据这些影响因子预测出输入的一组代码属性值对应的代码质量。
一些实施例中,利用所述样本值集合和所述质量信息确定所述复数个代码属性的值与代码质量之间的关系还可以包括:根据预先对所述复数个代码属性进行可重复分组得到的一个或复数个属性组,利用所述样本值集合和所述质量信息确定一个或复数个类型影响因子,每个类型影响因子表示所述一个或复数个属性组中的一个属性组对代码质量的影响;
利用所述关系获得所述评估值集合对应的代码质量评估信息包括:利用所述复数个属性影响因子、所述评估值集合中的所述复数个代码属性的值,以及所述一个或复数个类型影响因子获得所述代码质量评估信息。
可见,由于考虑到代码在不同方面的质量对代码的整体质量的贡献可能不同的情况,引入了对应不同属性组的类型影响因子,可以使得评估结果更准确。
一些实施例中,所述关系可以采用如下公式表示:
其中,Q为代码质量,αj为第j个属性组对应的类型影响因子,m为至少两个属性组中属性组的个数,nj为第j个属性组中代码属性的个数,xi为第j个属性组中的第i个代码属性;θi是xi对应的属性影响因子;θi和αj的值利用所述样本值集合和所述质量信息确定。
可见,利用上面的公式确定所述关系时,可以同时考虑各代码属性对代码质量的影响以及代码在各方面的质量对代码整体质量的影响,代码质量的评估结果比较准确。
一些实施例中,上述关系可以包括复数个子关系,每个子关系对应预设的一个或复数个代码质量值;上述方法中,
利用所述样本值集合和所述质量信息确定所述复数个代码属性的值与代码质量之间的关系包括:针对所述复数个属性组中的每个属性组,利用所述样本值集合中所述属性组中的代码属性的值和所述质量信息确定所述复数个子关系中的一个子关系;
利用所述关系获得所述评估值集合对应的代码质量评估信息包括:利用所述评估值集合和所述复数个子关系确定复数个子质量信息,根据所述复数个子质量信息和所述复数个代码属性对应的类型影响因子获得所述代码质量评估信息。
可见,利用样本值集合中每个属性组中代码属性的值确定一个子关系,可以方便将各子关系的输出值作为代码质量评估信息中的辅助信息,可以提供更详尽的质量评估结果。
各实施例中,所述质量信息和所述代码质量评估信息的值可以为预设的连续的值区间中的一个值、或预设的离散的复数个值中的一个值。
可见,通过利用一个值来表示代码质量的评估结果,可以以简单直观的方式给出代码质量的综合评估结果。
各实施例中,确定所述关系所采用的算法可以选自:改进的逻辑回归算法、深度学习算法、支持向量机算法、AdaBoosting算法,等。
一些实施例中,上述方法还可以包括:
获取所述待评估的代码的第一描述信息,所述第一描述信息是所述代码所属的项目的目标的描述信息;
获取所述待评估的代码的第二描述信息,所述第二描述信息是所述代码的功能的描述信息;
根据所述第一描述信息和所述第二描述信息生成关于所述代码的功能是否符合所述目标的判断结果;
根据所述判断结果和所述代码质量评估信息生成判决结果,所述判决结果指示所述代码是否被允许加入所述项目对应的代码库。
可见,通过检查代码的功能是否符合项目的需求,可以检测出与项目需求不相关的代码,有助于提高项目代码的质量。
一些实施例中,上述方法还可以包括:
当所述判断结果指示所述代码符合所述目标中的至少一个子目标时,记录所述代码与所述至少一个子目标的关联关系;
根据所述关联关系生成项目完整性报告,所述项目完整性报告指示所述项目对应的代码库中所有代码关联的子目标是否包括所述目标中的所有子目标。
这样,可以根据需要在项目的开发过程中生成项目完整性报告,以直观的方式体现项目的进度,以及尚未实现的项目目标,有助于提高开发效率。
一些实施例中,根据所述第一描述信息和所述第二描述信息生成关于所述代码的功能是否符合所述目标的判断结果包括:
从所述第一描述信息中提取复数个特征,作为目标特征集合;
利用所述目标特征集合训练第二机器学习模块,所述第二机器学习模块的输出为所述目标特征集合的复数个分类;
从所述第二描述信息中提取复数个特征,作为功能特征集合;
将所述功能特征集合输入所述第二机器学习模块,根据所述第二机器学习模块输出的分类结果生成所述判断结果。
可见,通过使用机器学习模块对代码的描述信息进行分类,可以快速、准确地获得代码的功能是否符合项目目标的判断结果。
一些实施例中,上述方法还可以包括:
获取所述项目的复数个第二代码对应的复数个第三描述信息,所述第三描述信息是所述第二代码的功能的描述信息;
从所述复数个第三描述信息的每个第三描述信息中提取复数个特征作为一个第三功能集合,得到所述复数个第三描述信息对应的复数个第三功能特征集合;
计算每个第三功能特征集合与所述目标特征集合的匹配度;
利用所述复数个第三功能特征集合及其中每个第三功能特征集合与所述目标特征集合的匹配度训练所述分类模块。
通过计算代码的功能特征集合与项目的目标特征集合的匹配度,并利用功能特征集合及其匹配度来训练分类模块,可以在分类模块的起始样本较少的情况下,生成训练数据,对分类模块进行训练,从而解决冷启动的问题。
各实施例还提供了一种代码质量评估装置,该装置包括:
一个确定模块,用于获取复数个样本代码、及其中每个样本代码的质量信息;根据预先确定的复数个代码属性,从所述复数个样本代码中提取其中每个样本代码的所述复数个代码属性的值,作为样本值集合;利用所述样本值集合和所述质量信息确定所述复数个代码属性的值与代码质量之间的关系;
一个质量评估模块,用于从待评估的代码中提取所述复数个代码属性对应的值作为评估值集合;利用所述关系获得所述评估值集合对应的代码质量评估信息。
可见,各实施例的代码质量评估装置通过利用代码样本及其质量信息确定复数个代码属性的值与代码质量之间的关系,使用该关系进行代码的质量评估,不再依赖专家进行人工评估,降低了评估的成本,提高了评估的效率。
一些实施例中,确定模块可以,利用所述样本值集合和所述质量信息确定复数个属性影响因子,每个属性影响因子表示所述复数个代码属性中的一个代码属性的值对代码质量的影响;
质量评估模块可以,利用所述复数个属性影响因子和所述评估值集合中的所述复数个代码属性的值获得所述代码质量评估信息。
可见,通过确定各个代码属性对代码质量的影响因子,可以根据这些影响因子预测出输入的一组代码属性值对应的代码质量。
一些实施例中,确定模块还可以:根据预先对所述复数个代码属性进行可重复分组得到的一个或复数个属性组,利用所述样本值集合和所述质量信息确定一个或复数个类型影响因子,每个类型影响因子表示所述一个或复数个属性组中的一个属性组对代码质量的影响;
质量评估模块可以,利用所述复数个属性影响因子、所述评估值集合中的所述复数个代码属性的值,以及所述一个或复数个类型影响因子获得所述代码质量评估信息。
可见,由于考虑到代码在不同方面的质量对代码的整体质量的贡献可能不同的情况,引入了对应不同属性组的类型影响因子,可以使得评估结果更准确。
一些实施例中,确定模块可以确定如下公式表示的所述关系:
其中,Q为代码质量,αj为第j个属性组对应的类型影响因子,m为至少两个属性组中属性组的个数,nj为第j个属性组中代码属性的个数,xi为第j个属性组中的第i个代码属性;θi是xi对应的属性影响因子;θi和αj的值通过利用所述样本值集合和所述质量信息确定。
可见,利用上面的公式确定所述关系时,可以同时考虑各代码属性对代码质量的影响以及代码在各方面的质量对代码整体质量的影响,代码质量的评估结果比较准确。
一些实施例中,上述关系可以包括复数个子关系,每个子关系对应预设的一个或复数个代码质量值;
确定模块可以:针对所述复数个属性组中的每个属性组,利用所述样本值集合中所述属性组中的代码属性的值和所述质量信息确定所述复数个子关系中的一个子关系;
质量评估模块可以:利用所述评估值集合和所述复数个子关系确定复数个子质量信息,根据所述复数个子质量信息和所述复数个代码属性对应的类型影响因子获得所述代码质量评估信息。
可见,利用样本值集合中每个属性组中代码属性的值训练一个子模块,可以方便将各子模块的输出值作为代码质量评估信息中的辅助信息,可以提供更详尽的质量评估结果。
各实施例中,所述质量信息和所述代码质量评估信息的值可以为预设的连续的值区间中的一个值、或预设的离散的复数个值中的一个值。
可见,通过利用一个值来表示代码质量的评估结果,可以以简单直观的方式给出代码质量的综合评估结果。
各实施例中,确定模块采用的算法可以选自:改进的逻辑回归算法、深度学习算法、支持向量机算法、AdaBoosting算法,等。
一些实施例中,代码质量评估装置还可以包括:一个功能核查模块,用于
获取所述待评估的代码所属的项目的第一描述信息,所述第一描述信息是所述项目的目标的描述信息;
获取所述待评估的代码对应的第二描述信息,所述第二描述信息是所述代码的功能的描述信息;
根据所述第一描述信息和所述第二描述信息生成关于所述代码的功能是否符合所述目标的判断结果;
根据所述判断结果和所述代码质量评估信息生成判决结果,所述判决结果指示所述代码是否被允许加入所述项目对应的代码库。
可见,通过检查代码的功能是否符合项目的需求,代码质量评估装置可以检测出与项目需求不相关的代码,有助于提高项目代码的质量。
一些实施例中,代码质量评估装置还可以包括:一个完整性评估模块;其中,
所述功能核查模块进一步用于,当所述判断结果指示所述代码符合所述目标中的至少一个子目标时,记录所述代码与所述至少一个子目标的关联关系;
所述完整性评估模块用于,根据所述关联关系生成项目完整性报告,所述项目完整性报告指示所述项目对应的代码库中所有代码关联的子目标是否包括所述目标中的所有子目标。
可见,代码质量评估装置可以根据需要在项目的开发过程中生成项目完整性报告,以直观的方式体现项目的进度,以及尚未实现的项目目标,有助于提高开发效率。
一些实施例中,功能核查模块用于:
从所述第一描述信息中提取复数个特征,作为目标特征集合;
利用所述目标特征集合训练第二机器学习模块,所述第二机器学习模块的输出为所述目标特征集合的复数个分类;
从所述第二描述信息中提取复数个特征,作为功能特征集合;
将所述功能特征集合输入所述第二机器学习模块,根据所述第二机器学习模块输出的分类结果生成所述判断结果。
可见,通过使用机器学习模块对代码的描述信息进行分类,可以快速、准确地获得代码的功能是否符合项目目标的判断结果。
一些实施例中,功能核查模块还可以用于:
获取所述项目的复数个第二代码对应的复数个第三描述信息,所述第三描述信息是所述第二代码的功能的描述信息;
从所述复数个第三描述信息的每个第三描述信息中提取复数个特征作为一个第三功能集合,得到所述复数个第三描述信息对应的复数个第三功能特征集合;
计算每个第三功能特征集合与所述目标特征集合的匹配度;
利用所述复数个第三功能特征集合及其中每个第三功能特征集合与所述目标特征集合的匹配度训练所述分类模块。
通过计算代码的功能特征集合与项目的目标特征集合的匹配度,并利用功能特征集合及其匹配度来训练分类模块,可以在分类模块的起始样本较少的情况下,生成训练数据,对分类模块进行训练,从而解决冷启动的问题。
本申请实施例还提供了一种代码管理系统,包括:管理设备和代码质量评估装置;其中
所述管理设备用于,接收用户提交的待评估的代码,将所述代码提供给所述代码质量评估装置;接收所述代码质量评估装置反馈的所述代码的代码质量评估信息,将所述代码质量评估信息提供给所述用户;
所述代码质量评估装置用于,根据预先确定的复数个代码属性,利用样本代码的复数个代码属性的值及质量信息训练机器学习模块,所述机器学习模块的输入为所述复数个代码属性的值,输出为所述质量信息;从所述管理设备提供的所述代码中提取所述复数个代码属性对应的值作为评估值集合,将所述评估值集合输入所述机器学习模块,利用所述机器学习模块输出获得所述代码质量评估信息,将所述代码质量评估信息提供给所述管理设备。
可见,各实施例的代码管理系统通过采用机器学习模块进行代码的质量评估,可以为用户提供低成本、高效率的代码评估服务。
一些实施例中,代码管理系统还可以包括:存储设备,其中存储有复数个代码库,以及其中各代码库的质量信息;
所述代码质量评估装置用于,利用所述存储设备中存储的代码库中的代码作为所述样本代码,训练所述机器学习模块。
这样,代码管理系统可以利用自身存储的代码库训练机器学习模型,充分利用自身的代码存储资源,为用户提供准确、高效的代码评估服务。
一些实施例中,所述存储设备还可以存储每个代码库对应的项目信息;
所述代码质量评估装置还可以用于,获取所述代码的第一描述信息,所述第一描述信息是所述代码所属的项目的目标的描述信息;获取所述代码对应的第二描述信息,所述第二描述信息是所述代码的功能的描述信息;根据所述第一描述信息和所述第二描述信息生成关于所述代码的功能是否符合所述目标的判断结果;根据所述判断结果和所述代码质量评估信息生成判决结果,所述判决结果指示所述代码是否被允许加入所述项目对应的代码库;将所述判决结果提供给所述管理设备;
所述管理设备进一步用于,当所述判决结果指示所述代码被允许加入所述项目对应的代码库时,将所述代码加入所述项目对应的代码库;当所述判决结果指示所述代码不被允许加入所述项目对应的代码库时,向所述用户反馈所述代码被拒绝的信息。
可见,通过检查代码的功能是否符合项目的需求,代码管理系统可以检测出与项目需求不相关的代码,有助于提高项目代码的质量。
一些实施例中,所述管理设备还可以用于,响应于所述用户的强制加入申请,将所述代码加入所述项目对应的代码库。
这样,代码管理系统可以允许用户强制加入未通过功能一致性检验的代码,有助于在特殊的情形下满足用户的需求。
一些实施例中,代码质量评估装置可以包括:
确定模块,用于获取复数个样本代码、及其中每个样本代码的质量信息;根据预先确定的复数个代码属性,从所述复数个样本代码中提取其中每个样本代码的所述复数个代码属性的值,作为样本值集合;利用所述样本值集合和所述质量信息确定所述复数个代码属性的值与代码质量之间的关系;
质量评估模块,用于从待评估的代码中提取所述复数个代码属性对应的值作为评估值集合;利用所述关系获得所述评估值集合对应的代码质量评估信息
各实施例中,确定模块可以,利用所述样本值集合和所述质量信息确定复数个属性影响因子,每个属性影响因子表示所述复数个代码属性中的一个代码属性的值对代码质量的影响;
质量评估模块可以,利用所述复数个属性影响因子和所述评估值集合中的所述复数个代码属性的值获得所述代码质量评估信息。
可见,通过确定各个代码属性对代码质量的影响因子,可以根据这些影响因子预测出输入的一组代码属性值对应的代码质量。
一些实施例中,确定模块还可以:根据预先对所述复数个代码属性进行可重复分组得到的一个或复数个属性组,利用所述样本值集合和所述质量信息确定一个或复数个类型影响因子,每个类型影响因子表示所述一个或复数个属性组中的一个属性组对代码质量的影响;
质量评估模块可以,利用所述复数个属性影响因子、所述评估值集合中的所述复数个代码属性的值,以及所述一个或复数个类型影响因子获得所述代码质量评估信息。
可见,由于考虑到代码在不同方面的质量对代码的整体质量的贡献可能不同的情况,引入了对应不同属性组的类型影响因子,可以使得评估结果更准确。
一些实施例中,确定模块可以确定如下公式表示的所述关系:
其中,Q为代码质量,αj为第j个属性组对应的类型影响因子,m为至少两个属性组中属性组的个数,nj为第j个属性组中代码属性的个数,xi为第j个属性组中的第i个代码属性;θi是xi对应的属性影响因子;θi和αj的值通过利用所述样本值集合和所述质量信息确定。
可见,利用上面的公式确定所述关系时,可以同时考虑各代码属性对代码质量的影响以及代码在各方面的质量对代码整体质量的影响,代码质量的评估结果比较准确。
一些实施例中,上述关系可以包括复数个子关系,每个子关系对应预设的一个或复数个代码质量值;
确定模块可以:针对所述复数个属性组中的每个属性组,利用所述样本值集合中所述属性组中的代码属性的值和所述质量信息确定所述复数个子关系中的一个子关系;
质量评估模块可以:利用所述评估值集合和所述复数个子关系确定复数个子质量信息,根据所述复数个子质量信息和所述复数个代码属性对应的类型影响因子获得所述代码质量评估信息。
可见,利用样本值集合中每个属性组中代码属性的值训练一个子模块,可以方便将各子模块的输出值作为代码质量评估信息中的辅助信息,可以提供更详尽的质量评估结果。
各实施例中,所述质量信息和所述代码质量评估信息的值可以为预设的连续的值区间中的一个值、或预设的离散的复数个值中的一个值。
可见,通过利用一个值来表示代码质量的评估结果,可以以简单直观的方式给出代码质量的综合评估结果。
各实施例中,确定模块采用的算法可以选自:改进的逻辑回归算法、深度学习算法、支持向量机算法、AdaBoosting算法,等。
一些实施例中,代码质量评估装置还可以包括:功能核查模块,用于
获取所述待评估的代码所属的项目的第一描述信息,所述第一描述信息是所述项目的目标的描述信息;
获取所述待评估的代码对应的第二描述信息,所述第二描述信息是所述代码的功能的描述信息;
根据所述第一描述信息和所述第二描述信息生成关于所述代码的功能是否符合所述目标的判断结果;
根据所述判断结果和所述代码质量评估信息生成判决结果,所述判决结果指示所述代码是否被允许加入所述项目对应的代码库。
可见,通过检查代码的功能是否符合项目的需求,代码质量评估装置可以检测出与项目需求不相关的代码,有助于提高项目代码的质量。
一些实施例中,代码质量评估装置还可以包括:完整性评估模块;其中,
所述功能核查模块进一步用于,当所述判断结果指示所述代码符合所述目标中的至少一个子目标时,记录所述代码与所述至少一个子目标的关联关系;
所述完整性评估模块用于,根据所述关联关系生成项目完整性报告,所述项目完整性报告指示所述项目对应的代码库中所有代码关联的子目标是否包括所述目标中的所有子目标。
可见,代码质量评估装置可以根据需要在项目的开发过程中生成项目完整性报告,以直观的方式体现项目的进度,以及尚未实现的项目目标,有助于提高开发效率。
一些实施例中,功能核查模块用于:
从所述第一描述信息中提取复数个特征,作为目标特征集合;
利用所述目标特征集合训练第二机器学习模块,所述第二机器学习模块的输出为所述目标特征集合的复数个分类;
从所述第二描述信息中提取复数个特征,作为功能特征集合;
将所述功能特征集合输入所述第二机器学习模块,根据所述第二机器学习模块输出的分类结果生成所述判断结果。
可见,通过使用机器学习模块对代码的描述信息进行分类,可以快速、准确地获得代码的功能是否符合项目目标的判断结果。
一些实施例中,功能核查模块还可以用于:
获取所述项目的复数个第二代码对应的复数个第三描述信息,所述第三描述信息是所述第二代码的功能的描述信息;
从所述复数个第三描述信息的每个第三描述信息中提取复数个特征作为一个第三功能集合,得到所述复数个第三描述信息对应的复数个第三功能特征集合;
计算每个第三功能特征集合与所述目标特征集合的匹配度;
利用所述复数个第三功能特征集合及其中每个第三功能特征集合与所述目标特征集合的匹配度训练所述分类模块。
通过计算代码的功能特征集合与项目的目标特征集合的匹配度,并利用功能特征集合及其匹配度来训练分类模块,可以在分类模块的起始样本较少的情况下,生成训练数据,对分类模块进行训练,从而解决冷启动的问题。
本申请实施例还提供了一种代码质量评估装置,其特征在于,包括:至少一个存储器和至少一个处理器,其中:
所述至少一个存储器,存储有计算机程序;
所述至少一个处理器,调用所述至少一个存储器中存储的计算机可读程序,执行各实施例的代码质量评估方法。
可见,该代码质量评估装置可以利用软件实现各实施例的代码评估方法,不再依赖专家进行人工评估,降低了评估的成本,提高了评估的效率。。
本申请实施例还提供了一种计算机可读存储介质,存储有计算机可读指令,所述指令用于使处理器执行各实施例的代码质量评估方法。
可见,本申请实施例的代码质量评估装置可以体现为软件产品,存储在计算机可读存储介质中,使得运行该软件产品的设备具有代码质量评估的功能,不再依赖专家进行人工评估,降低了评估的成本,提高了评估的效率。
附图说明
下面将通过参照附图详细描述本发明的优选实施例,使本领域的普通技术人员更清楚本发明的上述及其它特征和优点,附图中:
图1为本申请实施例的代码质量评估方法的流程图。
图2为本申请实施例的代码质量评估方法的流程图。
图3为本申请实施例的机器学习过程的示意图。
图4为本申请实施例的代码质量评估方法的流程图。
图5A为本申请实施例的一种代码功能核查方法的示意图。
图5B为本申请实施例的代码功能核查方法的流程图。
图6为本申请实施例的一种代码质量评估装置的示意图。
图7A为本申请实施例的一种应用场景的示意图。
图7B为图7A的应用场景中,本申请实施例的一种代码质量评估方法的流程图。
图8A为本申请实施例的一种应用场景的示意图。
图8B为图8A的应用场景中,本申请实施例的一种代码质量评估方法的流程图。
图9A为本申请实施例的一种应用场景的示意图。
图9B为图9A的应用场景中,本申请实施例的一种代码质量评估方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,以下举实施例对本发明进一步详细说明。
为了降低代码质量评估所需的人力成本,本申请实施例提供了一种代码质量评估方法。该方法可以由一计算设备执行。计算设备可以是PC、提供某种在线业务的服务器,等。图1为本申请实施例的代码质量评估方法的流程图。该方法可以包括以下步骤。
步骤S11,获取复数个样本代码、及其中每个样本代码的质量信息。
复数个样本代码可以包括计算设备连接的存储设备中存储的代码,也可以包括从网络获取的代码。例如,样本代码可以包括计算设备中存储的先前编写的代码,也可以包括从开源代码网站获取的代码,等。各样本代码的质量信息可以通过人工标注获得,也可以根据样本代码的相关信息确定。例如,可以从开源代码网站获取某一代码的统计数据,如用户打分信息、用户评价、下载量,等,利用该统计数据生成该代码的质量信息。质量信息的值可以为预设的连续的值区间中的一个值、或预设的离散的复数个值中的一个值
步骤S12,根据预先确定的复数个代码属性,从复数个样本代码中提取其中每个样本代码的复数个代码属性的值,作为样本值集合。
代码的复数个代码属性可以是各种代码评价指标,例如原子数(Atom Count)、复杂度、系统稳定性、代码行数、对象耦合度、圈复杂度,等。可以利用一些工具来提取代码的各个代码属性的值。这些工具可以根据需要设计,也可以采用已有的工具,例如SonarQube、Lattix,Understand,等。
步骤S13,利用样本值集合和质量信息确定复数个代码属性的值与代码质量之间的关系。
各实施例中,可以利用拟合等方法(例如线性回归方法、非线性回归方法等)确定复数个代码属性的值与代码质量之间的关系。
一些实施例中,可以采用机器学习模块来执行数据拟合过程,从而确定复数个代码属性的值与代码质量之间的关系。步骤S13中,可以以样本值集合作为机器学习模块的输入,以质量信息作为机器学习模块的输出,来训练机器学习模块。机器学习模块可以利用各种机器学习方法实现。可以采用的机器学习算法可以包括,但不限于:例如逻辑回归算法、支持矢量机算法、朴素贝叶斯算法、深度学习算法、神经网络算法、改进的逻辑回归算法、AdaBoosting算法,等。机器学习模块可以包括一个或者复数个机器学习模型。机器学习模型可以是分类模型或回归模型,等。例如,当机器学习模块包括回归模型时,可以从获取的与各样本代码的质量有关的信息中提取出量化的值并经过离散化处理后作为质量信息,质量信息的取值范围为连续的区间;使用该机器学习模块对待评估的代码进行评估得到的质量信息也为该连续区间中的值。又例如,当机器学习模块包括分类模型时,可以从获取的与各样本代码的质量有关的信息中提取出量化的值作为质量信息,质量信息的取值范围为复数个离散的值;使用该机器学习模块对待评估的代码进行评估得到的质量信息也为该复数个离散的值中的一个。
步骤S14,从待评估的代码中提取复数个代码属性对应的值作为评估值集合。
样本代码和待评估的代码可以文本、文件、或包的形式存储和传输。例如,采用文件形式时,代码文件可以是文本格式的文件、“.c”格式的文件,等。
步骤S14中,可以采用步骤S12中提到的代码属性值的提取方法获得待评估的代码中提取复数个代码属性对应的值。
步骤S15,利用上述关系获得评估值集合对应的代码质量评估信息。
代码质量评估信息表示待评估代码的代码质量。各实施例中,代码质量评估信息与用于样本代码的质量信息的形式有关。例如,代码质量评估信息可以包括以数字表示的代码质量,该代码质量的取值范围可以是一个连续的值区间。又例如,代码质量评估信息可以包括以预设的等级表示的代码质量,该等级可以选自预设的复数个质量等级,即该代码质量的取值范围可以是离散的多个值。
本申请实施例的代码质量评估方法,通过利用样本值集合和质量信息确定复数个代码属性的值与代码质量之间的关系,使用该关系进行代码的质量评估,不再依赖专家进行人工评估,降低了评估的成本,提高了评估的效率。另外,可以根据所关注的指标来确定代码属性,使得评估结果可以体现代码在这些指标上的表现,能够满足评估需要。
各实施例中,上述关系可以包括各代码属性对代码质量的影响,下面称为属性影响因子。图2是本申请实施例的代码质量评估方法的流程图。如图2所示,该方法可以包括以下步骤。
步骤S21,利用样本值集合及相应的质量信息确定复数个属性影响因子。
其中,每个属性影响因子表示复数个代码属性中的一个代码属性的值对代码质量的影响。
步骤S22,利用复数个属性影响因子和评估值集合中的复数个代码属性的值获得代码质量评估信息。
通过确定各个代码属性对代码质量的影响因子,可以根据这些影响因子预测出输入的一组代码属性值对应的代码质量。
例如,上述关系可以采用公式(1)来表示:
其中,Q为代码质量,xi为第i个代码属性,n为复数个代码属性中代码属性的个数;θi是xi对应的属性影响因子;θi和α的值可以利用所述样本值集合和所述质量信息确定。
例如,可以将各样本代码的样本值,即{xi,Q}分别代入上述公式进行计算,从而确定θi和α。样本的数量越多,得到的θi和α能使评估结果更准确。
一些实施例中,可以采用机器学习模型来确定上述关系,并利用该关系获得质量评估信息。机器学习模块可以采用分类模型实现,也可以采用回归模型实现。下面以利用分类模型实现机器学习模块为例进行说明。图3为本申请实施例的机器学习过程的示意图。其中,机器学习模块利用分类器实现,质量信息由代码所属的分类来表示。样本集31包括复数个样本代码的数据,例如以{代码标识,分类}这样的数据集合的形式表示。其中,代码标识用于获取代码,分类为离散化的代码质量的值,例如合格/不合格、优/良/差,等。学习算法32可以采用任意分类算法。评估结果33可以为一个数据集合,例如{代码标识,分类,置信度},其中分类是根据分类器的输出得到的,置信度是分类器输出的该代码属于该分类的概率。
例如,利用分类器实现机器学习模块时,质量信息可以包括两个值,例如,第一值表示该代码的质量为合格,第二值表示该代码的质量为不合格。可以将各样本代码的质量信息转换为第一值或第二值的形式,并对分类器进行训练。将待评估代码的代码属性值输入训练后的分类器,得到分类器输出的第一值或第二值,作为该代码的质量评估信息。
一些实施例中,由于不同的代码属性体现的可能是代码在不同方面的质量,例如架构的质量、底层代码的编写质量、可靠性,等,因此,可以预先对复数个代码属性进行可重复分组得到一个或复数个属性组。可重复分组是指同一代码属性可以分别作为不同的属性组的成员。
一些实施例中,可以仅采用一个属性组,该属性组中的代码属性为与代码某方面的质量(例如架构质量)有关的复数个代码属性,这样,得到的质量评估信息是代码在该方面的质量的评估信息。一些实施例中,可以仅采用一个属性组,该属性组中的代码属性为与代码在不同方面的质量有关的复数个代码属性,这样,得到的质量评估信息是代码在这些方面的综合质量的评估信息。
一些实施例中,考虑到代码在不同方面的质量对代码的整体质量的贡献可能不同,也可以使用复数个属性组来进行代码质量评估。图4为本申请实施例的代码质量评估方法的流程图。如图4所示,该方法可以包括以下步骤。
步骤S41,利用样本值集合和质量信息确定一个或复数个类型影响因子。其中,每个类型影响因子表示一个或复数个属性组中的一个属性组对代码质量的影响。
步骤S42,利用复数个属性影响因子、评估值集合中的复数个代码属性的值,以及一个或复数个类型影响因子获得代码质量评估信息。
这样,由于考虑到代码在不同方面的质量对代码的整体质量的贡献可能不同的情况,引入了对应不同属性组的类型影响因子,可以使得评估结果更准确。
例如,上述关系可以采用公式(2)表示:
其中,Q为代码质量,αj为第j个属性组对应的类型影响因子,m为至少两个属性组中属性组的个数,nj为第j个属性组中代码属性的个数,xi为第j个属性组中的第i个代码属性;θi是xi对应的属性影响因子;θi和αj的值利用样本值集合和质量信息确定。
可见,利用上面的公式表示的关系时,可以同时考虑各代码属性对代码质量的影响以及代码在各方面的质量对代码整体质量的影响,代码质量的评估结果比较准确。
各实施例中,上述关系可以包括复数个子关系,每个子关系对应预设的一个或复数个代码质量值。可以针对所述复数个属性组中的每个属性组,利用所述样本值集合中所述属性组中的代码属性的值和所述质量信息确定所述复数个子关系中的一个子关系。利用所述评估值集合和所述复数个子关系确定复数个子质量信息,根据所述复数个子质量信息和所述复数个代码属性对应的类型影响因子获得所述代码质量评估信息。可见,利用样本值集合中每个属性组中代码属性的值确定一个子关系,可以方便将各子关系的输出值作为代码质量评估信息中的辅助信息,可以提供更详尽的质量评估结果。
一些实施例中,机器学习模块利用各种机器学习模型或机器学习模型的组合来实现。一个实施例中,机器学习模块可以包括复数个子模块。可以针对复数个属性组中的每个属性组,利用样本值集合中该属性组中代码属性的值训练复数个子模块中的一个子模块。利用评估值集合获得复数个子模块的输出值,根据复数个子模块的输出值和复数个代码属性对应的类型影响因子获得代码质量评估信息。这样,可以方便将各子模块的输出值作为代码质量评估信息的辅助信息,用于提供更详尽的质量评估结果。例如,当需要获得代码在不同方面的质量的评估结果时,可以根据每种质量评估所对应的属性组分别训练一个子模块,这样,不同的子模块可以分别给出代码在不同方面的质量信息。还可以设置机器学习模块不仅提供最终的质量评估信息,还可以提供中间结果,例如一个或者复数个子模型的输出值,等。从而,该实施例的评估方法得到的代码质量评估信息还可以包括代码在某一方面的质量评估信息,评估结果更加详细,方便开发者对代码进行改善。一些实施例中,训练子模块时,可以采用样本代码的整体质量信息作为各个子模块的输出参数。另一些实施例中,当样本代码的质量信息中包括样本代码在各方面的质量信息时,可以将各方面的质量信息分别作为相应子模块的输出参数。
例如,当需要对代码从架构和底层代码编写两个方面分别进行评估时,可以将复数个代码属性分为两组。例如,架构质量对应的属性组可以包括x1~xk,如原子数、复杂度、系统稳定性,等;底层代码编写质量对应的属性组可以包括y1~yl,如代码行数、对象之间的耦合度、和修正圈复杂度,等。其中,k,l分别为各属性组中代码属性的个数,为正整数。根据这两个属性组分别训练子模块。
例如,第一子模块的学习算法可以如公式(2):
第二子模块的学习算法可以如公式(3):
其中,U、V为模块的输出参数,即代码在不同方面的质量信息,Xi为第一属性组中的代码属性,k为第一属性组中代码属性的个数;Yi为第二属性组中的代码属性,l为第二属性组中代码属性的个数;θi、α和β是两个子模块的模块参数,这些模块参数需要通过训练来确定。
从待评估代码中提取出评估值集合{x1,…,xk,y1,…,ym}后,根据两个属性组,将评估值集合中第一属性组中各代码属性的值x1,…,xk输入第一子模块,将评估值集合中第二属性组中各代码属性的值y1,…,ym输入第二子模块,得到第一子模块的输出U和第二子模块的输出V,根据预设的策略利用U和V得到代码质量评估信息。例如,预设策略可以为:任一方面的质量不合格时,则判定代码的整体质量不合格;当架构质量U表示不合格,底层代码编写质量V表示合格时,代码质量评估信息可以包括评估结果和详细信息,例如,评估结果可以表示不合格,详细信息表示架构质量不合格和/或底层代码编写质量合格。预设策略可以根据需要设置,这里仅为举例。
又例如,当需要按照预设的复数个质量级别,例如优、良、合格、不合格等,评估代码的质量级别时,可以分别训练各质量级别对应的子模块,不同的子模块可以分别给出代码的质量是否属于该子模块对应的质量级别。从待评估代码中提取出评估值集合后,将评估值集合分别输入4个子模块,利用4个子模块的输出得到代码质量评估信息。例如,当4个子模块的输出分别表示不符合、符合、不符合、不符合时,代码质量评估信息可以包括代码的质量级别。
还有一些实施例中,可以同时根据属性组和质量级别训练多个子模型,每个子模型对应一个属性组和一个质量级别。实现的具体方式可以很容易地根据上面两个例子得出,这里不再赘述。
一些实施例中,当待评估的代码属于一个预设的项目时,可以根据待评估代码的描述信息判断该代码是否符合该项目的需求,以下简称为代码功能核查。图5A为本申请实施例的一种代码功能核查方法的示意图。该方法可以应用在各实施例的代码评估方法中。如图5A所示,该方法可以包括以下步骤。
步骤S51,获取待评估的代码的第一描述信息,第一描述信息是代码所属的项目的目标的描述信息。
各实施例中,待评估的代码所属的项目可以通过各种方式获得。例如,当计算设备中仅存在一个项目时,可以默认所有待评估代码均属于该项目。又例如,代码开发者提交待评估的代码时,计算设备可以根据代码开发者提交的信息确定该代码所属的项目。又例如,计算设备可以根据待评估代码的存储位置(例如存储设备、文件夹,等)来确定该代码所属的项目。
第一描述信息包括项目的目标(也称为需求)的信息,可以是非结构化信息,也可以是结构化信息。例如,第一描述信息可以是项目的需求文档,其中包括项目需求的描述文本。又例如,第一描述信息也可以是结构化的单级或多级列表,其中包括多个目标(及子目标)的值,这些值可以是字符串的形式。一些例子中,也可以允许用户新增项目的目标。例如,可以接收用户提交的项目的新增需求对应的文档,可以将这些文档也作为该项目的第一描述信息的一部分进行保存。又例如,可以接收用户提交的当前项目中需要解决的问题的描述,例如一些bug的描述,等,可以将这些描述也作为该项目的第一描述信息的一部分进行保存。这里的用户,可以是待评估代码的开发者,也可以是与该项目有关的其它人员。
步骤S52,获取待评估的代码对应的第二描述信息,第二描述信息是代码的功能的描述信息。
第二描述信息是代码开发者提交待评估的代码时,提交的该代码的功能的文本描述。
步骤S53,根据第一描述信息和第二描述信息生成关于代码的功能是否符合目标的判断结果。
各实施例中,可以从第一描述信息中提取出项目的目标的复数个特征,作为目标特征集合。一些例子中,项目的目标可以包括复数个子目标,每个子目标可以对应一个目标特征集合。当第一描述信息为非结构化的文本时,可以通过自然语言处理(NLP)来获取目标(或子目标)对应的特征,以及生成关于代码的功能是否符合目标的判断结果。特征可以是利用NLP技术对文本进行处理后生成的量化指标。采用的NLP技术可以包括,但不限于,句子切分,分词(例如对于中文等语言),词性标注,名称提取,浅层语义分析,等。
各实施例中,可以从第二描述信息中提取代码的功能对应的复数个特征,作为功能特征集合。
步骤S53可以利用各种方法来确定代码的功能是否符合项目的目标。
可采用的方法包括,但不限于,文本匹配、机器学习等。
例如,可以计算功能特征与目标特征的匹配度。
又例如,可以利用训练数据训练第二机器学习模块,训练数据包括复数个特征集合样本及各特征集合样本与目标特征集合的匹配度,第二机器学习模块的训练以复数个特征集合样本作为第二机器学习模块的输入,以匹配度作为第二机器学习模块的输出。训练使用的样本集可以通过网络获取,或者由人工输入计算设备。将功能特征集合输入该机器学习模块,根据第二机器学习模块的输出生成判断结果。第二机器学习模块可以采用各种算法,例如各种NLP算法、深度学习算法、神经网络算法,等。
各实施例中,根据得到的结果(如匹配度的计算结果,或机器学习模块输出的结果),按照预设的策略判定该代码的功能是否符合该项目的目标,即得出上述判断结果。
步骤S54,根据判断结果和代码质量评估信息生成判决结果,判决结果指示代码是否被允许加入项目对应的代码库。
例如,当判断结果表示该代码的功能符合该项目的目标、且代码质量评估信息表示该代码的质量为合格或达到预设的阈值或级别,则生成判决结果,指示代码被允许加入项目对应的代码库。当判断结果表示该代码的功能不符合该项目的目标、或代码质量评估信息表示该代码的质量为不合格或未达到预设的阈值或级别,则生成判决结果,指示代码不被允许加入项目对应的代码库。
根据该实施例,通过检查代码的功能是否符合项目的需求,可以实现拒绝与项目需求不相关的代码,有助于提高项目代码的质量。
一些实施例中,当项目的目标包括复数个子目标时,可以分别提取各子目标对应的目标特征集合,分别针对各子目标执行上述方法,来确定代码的功能是否符合各子目标,也即,得出代码的功能是否对应某一个子目标,以及对应的是哪个子目标。
一些实施例中,还可以根据代码与目标的对应情况得出项目目标是否被完全实现的判断结果,下称项目完整性校验。根据一种项目完整性校验方法,当判断结果指示代码符合目标中的至少一个子目标时,可以记录代码与至少一个子目标的关联关系;以便根据关联关系生成项目完整性报告,项目完整性报告指示项目对应的代码库中所有代码关联的子目标是否包括目标中的所有子目标。当该项目对应的代码库中的所有代码没能覆盖所有子目标时,可以在项目完整性报告中包括未被实现的子目标的信息。这样,可以根据需要在项目的开发过程中生成项目完整性报告,以直观的方式体现项目的进度,以及尚未实现的项目目标,有助于提高开发效率。
一些实施例中,代码功能核查方法可以由一个NLP模块实现。图5B为本申请实施例的代码功能核查方法的流程图。如图5B所示,该方法可以包括以下步骤。
步骤S501,NLP模块从项目的需求文档(即第一描述信息)中提取项目目标的特征。
步骤S502,NLP模块利用提取出的项目目标的特征训练分类模块。
假设从需求文档中提取出n个特征:r1,r2...,and rn,将这n个特征分别作为n个分类,则分类模块可以确定输入的特征对应的是r1,r2...,and rn中的哪个特征。
分类模块可以利用训练样本通过机器学习算法得到。机器学习算法可以是卷积神经网络,SVM等文本分类算法。
步骤S503,NLP模块从代码对应的提交信息(即第二描述信息)中提取代码功能的特征。
步骤S501和步骤S503的特征提取,可以采用分词、浅层分析等方法提取文本(例如中文文本)中的特征。
步骤S504,NLP模块利用分类模块对代码功能的特征进行分类,确定代码功能对应的项目目标。
当分类结果表示没有项目目标与代码功能对应,则可以输出判断结果,指示该代码的功能不符合该项目的目标。
可见,通过使用机器学习模块对代码的描述信息进行分类,可以快速、准确地获得代码的功能是否符合项目目标的判断结果。
一些实施例中,可以在进行功能一致性检验的过程中对NLP模块不断进行完善,从而进一步提高NLP模块的性能。步骤S505,NLP模块利用代码功能的特征及其分类结果对分类模块进行训练。
一些实施例中,当训练机器学习模块的起始样本数据较少或者获取困难时,会产生机器学习的冷启动(cold start)问题。为解决该问题,一些实施例的代码功能核查方法可以包括:
获取所述项目的复数个第二代码对应的复数个第三描述信息,所述第三描述信息是所述第二代码的功能的描述信息;
从所述复数个第三描述信息的每个第三描述信息中提取复数个特征作为一个第三功能集合,得到所述复数个第三描述信息对应的复数个第三功能特征集合;
计算每个第三功能特征集合与所述目标特征集合的匹配度;
利用所述复数个第三功能特征集合及其中每个第三功能特征集合与所述目标特征集合的匹配度训练所述分类模块。
这样,通过先利用其它的方式获得已有代码的描述信息与目标特征集合(一个子目标对应的目标特征集合,或该项目的各子目标的目标特征集合构成的集合)的匹配度,将这些代码对应的功能特征集合及其匹配度作为训练数据,用于训练机器学习模块。
一些例子中,代码的功能特征集合与目标特征集合的匹配度可以采用各种可行的计算方法。例如,可以采用公式(5)来计算上述匹配度。
这里h为目标对应的目标特征集合。当项目有多个子目标时,各子目标对应的目标特征集合可以为hr,其中r可以为{1,2,…,w},w为子目标的数量。gi是功能特征集合中的第i个特征,l是功能特征集合中特征的数量。
各实施例还提供一种代码质量评估装置,该装置可以应用在PC或者某种网络平台的服务器中。图6为本申请实施例的一种代码质量评估装置的示意图。如图6所示,该代码质量评估装置60可以包括:处理器61、存储器62。
处理器61可以包括一个或多个处理单元(如CPU、MPU、FPGA、ASIC等)。处理器61可以执行存储器62中的机器可读指令,从而实现各指令对应的功能。
存储器62可以包括操作系统620、接口模块622和代码质量评估模块624。
接口模块622用于使代码质量评估装置与外界进行信息交互。例如,接口模块622可以用于实现人机接口,可以具有用户界面处理功能、用户输入信息的处理功能、输出信息的处理功能,等。又例如,接口模块622可以用于实现网络通信,可以支持某种通信协议,从而使得该装置能够与网络中的设备通信。再例如,接口模块622还可以用于实现被其它设备调用的功能。例如,当装置通过插槽或者网络接口连接到一计算设备时,接口模块622可以接收计算设备的调用指令,将计算设备提供的数据提供给代码质量评估模块624,并将代码质量评估模块624提供的反馈信息作为调用响应发送给计算设备。
代码质量评估模块624可以包括确定模块625和质量评估模块628。
确定模块625可以获取复数个样本代码、及其中每个样本代码的质量信息。确定模块625可以根据预先确定的复数个代码属性,从复数个样本代码中提取其中每个样本代码的样本值集合,样本值集合包括相应的样本代码的复数个代码属性的值。确定模块625可以利用样本值集合和质量信息确定复数个代码属性的值与代码质量之间的关系。
质量评估模块628可以从待评估的代码中提取复数个代码属性对应的值作为评估值集合;利用确定模块625得到的上述关系获得评估值集合对应的代码质量评估信息。
可见,代码质量评估装置通过利用样本值集合和质量信息确定复数个代码属性的值与代码质量之间的关系,利用该关系进行代码的质量评估,不再依赖专家进行人工评估,降低了评估的成本,提高了评估的效率。
一些实施例中,确定模块625可以利用机器学习的方法确定上述关系。此时,代码质量评估模块624还可以包括机器学习模块626,机器学习模块626的输入为复数个代码属性的值,机器学习模块626的输出为输入的复数个代码属性的值对应的质量信息。确定模块625可以利用样本值集合和质量信息训练机器学习模块626。质量评估模块628可以利用确定模块625训练得到的机器学习模块626获得评估值集合对应的代码质量评估信息。
一些实施例中,确定模块625可以,利用所述样本值集合和所述质量信息确定复数个属性影响因子,每个属性影响因子表示所述复数个代码属性中的一个代码属性的值对代码质量的影响;
质量评估模块628可以,利用所述复数个属性影响因子和所述评估值集合中的所述复数个代码属性的值获得所述代码质量评估信息。
可见,通过确定各个代码属性对代码质量的影响因子,可以根据这些影响因子预测出输入的一组代码属性值对应的代码质量。
一些实施例中,确定模块625还可以:根据预先对所述复数个代码属性进行可重复分组得到的一个或复数个属性组,利用所述样本值集合和所述质量信息确定一个或复数个类型影响因子,每个类型影响因子表示所述一个或复数个属性组中的一个属性组对代码质量的影响;
质量评估模块628可以,利用所述复数个属性影响因子、所述评估值集合中的所述复数个代码属性的值,以及所述一个或复数个类型影响因子获得所述代码质量评估信息。
可见,由于考虑到代码在不同方面的质量对代码的整体质量的贡献可能不同的情况,引入了对应不同属性组的类型影响因子,可以使得评估结果更准确。
一些实施例中,确定模块625可以确定如下公式表示的所述关系:
其中,Q为代码质量,αj为第j个属性组对应的类型影响因子,m为至少两个属性组中属性组的个数,nj为第j个属性组中代码属性的个数,xi为第j个属性组中的第i个代码属性;θi是xi对应的属性影响因子;θi和αj的值通过利用所述样本值集合和所述质量信息确定。
可见,利用上面的公式确定所述关系时,可以同时考虑各代码属性对代码质量的影响以及代码在各方面的质量对代码整体质量的影响,代码质量的评估结果比较准确。
一些实施例中,上述关系可以包括复数个子关系,每个子关系对应预设的一个或复数个代码质量值;
确定模块625可以:针对所述复数个属性组中的每个属性组,利用所述样本值集合中所述属性组中的代码属性的值和所述质量信息确定所述复数个子关系中的一个子关系;
质量评估模块628可以:利用所述评估值集合和所述复数个子关系确定复数个子质量信息,根据所述复数个子质量信息和所述复数个代码属性对应的类型影响因子获得所述代码质量评估信息。
可见,利用样本值集合中每个属性组中代码属性的值训练一个子模块,可以方便将各子模块的输出值作为代码质量评估信息中的辅助信息,可以提供更详尽的质量评估结果。
各实施例中,所述质量信息和所述代码质量评估信息的值可以为预设的连续的值区间中的一个值、或预设的离散的复数个值中的一个值。
可见,通过利用一个值来表示代码质量的评估结果,可以以简单直观的方式给出代码质量的综合评估结果。
各实施例中,确定模块采用的算法可以选自:改进的逻辑回归算法、深度学习算法、支持向量机算法、AdaBoosting算法,等。
一些实施例中,该代码质量评估装置60还可以包括:功能核查模块(未示出),用于判断代码的功能是否符合预设的目标。该功能核查模块可以:
获取待评估的代码所属的项目的第一描述信息,第一描述信息是项目的目标的描述信息;
获取待评估的代码对应的第二描述信息,第二描述信息是代码的功能的描述信息;
根据第一描述信息和第二描述信息生成关于代码的功能是否符合目标的判断结果;
根据判断结果和代码质量评估信息生成判决结果,判决结果指示代码是否被允许加入项目对应的代码库。
可见,通过检查代码的功能是否符合项目的需求,代码质量评估装置可以检测出与项目需求不相关的代码,有助于提高项目代码的质量。
一些实施例中,该代码质量评估装置60还可以包括:完整性评估模块(未示出),用于判断预设的目标是否均存在对应的代码。当判断结果指示代码符合目标中的至少一个子目标时,功能核查模块可以,记录代码与至少一个子目标的关联关系。完整性评估模块可以,根据关联关系生成项目完整性报告,项目完整性报告指示项目对应的代码库中所有代码关联的子目标是否包括目标中的所有子目标。
可见,代码质量评估装置可以根据需要在项目的开发过程中生成项目完整性报告,以直观的方式体现项目的进度,以及尚未实现的项目目标,有助于提高开发效率。
一些实施例中,功能核查模块可以:
从所述第一描述信息中提取复数个特征,作为目标特征集合;
利用所述目标特征集合训练第二机器学习模块,所述第二机器学习模块的输出为所述目标特征集合的复数个分类;
从所述第二描述信息中提取复数个特征,作为功能特征集合;
将所述功能特征集合输入所述第二机器学习模块,根据所述第二机器学习模块输出的分类结果生成所述判断结果。
可见,通过使用机器学习模块对代码的描述信息进行分类,可以快速、准确地获得代码的功能是否符合项目目标的判断结果。
一些实施例中,功能核查模块还可以:
获取所述项目的复数个第二代码对应的复数个第三描述信息,所述第三描述信息是所述第二代码的功能的描述信息;
从所述复数个第三描述信息的每个第三描述信息中提取复数个特征作为一个第三功能集合,得到所述复数个第三描述信息对应的复数个第三功能特征集合;
计算每个第三功能特征集合与所述目标特征集合的匹配度;
利用所述复数个第三功能特征集合及其中每个第三功能特征集合与所述目标特征集合的匹配度训练所述分类模块。
通过计算代码的功能特征集合与项目的目标特征集合的匹配度,并利用功能特征集合及其匹配度来训练分类模块,可以在分类模块的起始样本较少的情况下,生成训练数据,对分类模块进行训练,从而解决冷启动的问题。
各实施例的代码质量评估装置60可以利用在多种场景中,例如,可以在开发者端的代码管理系统中提供单机的评估功能;也可以在网络平台的代码管理系统中,向网络平台的用户提供在线代码评估服务;还可以应用在在线代码托管平台的代码管理系统中,作为代码托管平台的附加模块,提供代码评估服务。各实施例的代码管理系统通过采用机器学习模块进行代码的质量评估,可以为用户提供低成本、高效率的代码评估服务。
图7A为本申请实施例的一种应用场景的示意图。该应用场景中,代码质量评估装置60可以在开发者端提供单机的评估功能。
图7B为图7A的应用场景中,本申请实施例的一种代码质量评估方法的流程图。如图7B所示,该方法可以包括以下步骤。
步骤S71,用户71向代码质量评估装置60提供待评估的代码。
步骤S72,代码质量评估装置60对待评估的代码进行处理,得到代码质量评估信息。
步骤S73,代码质量评估装置60利用用户界面,将代码质量评估信息提供给用户71。
一些实施例中,代码质量评估装置60中可以预设有复数个代码属性的值与代码质量之间的关系。一些实施例中,代码质量评估装置60中的确定模块625可以利用本地或者网络中的远程设备中的数据确定复数个代码属性的值与代码质量之间的关系。例如,代码质量评估装置60中的机器学习模块626可以是在代码质量评估装置60的制造过程中已经训练好的。又例如,代码质量评估装置60中的机器学习模块626可以在启动后自动利用本地或者网络中的远程设备中的训练数据进行训练。再例如,代码质量评估装置60中的机器学习模块626可以根据用户71的指令利用本地或者网络中的远程设备中的训练数据进行训练。
图8A为本申请实施例的一种应用场景的示意图。在该应用场景中,代码质量评估装置60应用在网络平台81中,为网络平台81的用户提供代码评估服务。网络平台81通过网络85接收用户设备82提交的代码。用户设备82可以是开发团队的项目管理设备,开发团队的成员通过各自的终端84将代码提交给项目管理设备。用户设备82根据网络平台85反馈的代码评估结果,决定是否将代码存储到项目代码库83中。
图8B为图8A的应用场景中,本申请实施例的一种代码质量评估方法的流程图。如图8B所示,该方法可以包括以下步骤。
步骤S81,用户设备82接收到终端84提交的代码。
步骤S82,用户设备82将代码作为待评估代码,通过网络85提供给网络平台81。
步骤S83,网络平台81使用代码质量评估装置60对待评估的代码进行质量评估,得到代码质量评估信息。
步骤S84,网络平台81通过网络85,将代码质量评估信息提供给用户设备82。
步骤S85,用户设备82根据代码质量评估信息,决定是否将代码存储到项目代码库83中。
图9A为本申请实施例的一种应用场景的示意图。其中,代码质量评估装置60应用在网络平台91中,为网络平台91提供代码评估功能。
网络平台91可以是代码托管平台、开源网站,等。网络平台91可以接收用户提交的待评估的代码,将代码提供给代码质量评估装置60;接收代码质量评估装置60反馈的代码质量评估信息,将代码质量评估信息提供给用户
网络平台91可以包括融合装置96,用于将用户设备92提交的代码融合到相应的代码库中。融合装置96可以是采用持续融合(Continuous Integration,CI)技术的装置。一些例子中,网络平台91可以通过网络95接收用户设备92提交的代码。项目开发团队的成员可以通过各自的用户设备92将项目的代码提交给网络平台91。
代码质量评估装置60可以被融合装置96调用。例如,网络平台91中的融合装置96接收到用户设备92提交的代码时,可以调用代码质量评估装置60进行代码质量评估,并根据代码质量评估装置60的代码质量评估结果决定是否将代码融合到相应的项目代码库中。
网络平台91还可以包括存储设备93,用于存储各项目的代码库。存储设备93可以是代码存储库,可以运行版本控制系统对存储的代码库进行维护。版本控制系统可以包括,但不限于:TFS,SVN,Gitlab,Github,等。
图9B为图9A的应用场景中,本申请实施例的一种代码质量评估方法的流程图。如图9B所示,该方法可以包括以下步骤。
步骤S91,代码质量评估装置60利用存储设备93中的代码训练机器学习模块626。
网络平台91可以事先获得存储设备93中存储的复数个代码库的代码质量信息,并将各代码库的代码质量信息存储在存储设备93中。代码质量信息可以通过多种方式获得。例如,网络平台91可以使用人工对若干代码库的代码进行质量分析,得到质量信息。又例如,网络平台91可以根据用户对各代码库的访问和评价数据得到各代码库的质量信息。这样,代码管理系统可以利用自身存储的代码库训练机器学习模型,充分利用自身的代码存储资源,为用户提供准确、高效的代码评估服务。
一些实施例中,网络平台91还可以包括计算设备97。计算设备97可以是运行有大数据系统的计算机集群。代码质量评估装置60可以调用计算设备97来训练机器学习模块626。
步骤S92,网络平台91接收用户设备82提交的代码,将代码提供给融合装置96。
步骤S93,融合装置96调用代码质量评估装置60对代码进行质量评估和功能核查。
步骤S94,代码质量评估装置60利用机器学习模块626对代码进行质量评估,利用功能核查模块629对代码进行功能核查,并将代码质量评估信息和功能核查结果提供给融合装置96。
在步骤S94中,质量评估的方法可以采用各实施例的代码质量评估方法,例如图1、3、4的方法;功能核查可以采用各实施例的功能核查方法,例如图5所示的方法,等。
存储设备93中可以存储有各项目的目标描述信息,例如项目需求文档、开发者新增的需求或待解决的任务的描述信息,等。用户设备92提交代码时,可以一并提交该代码的功能的描述信息。网络平台91可以将本次提交的描述信息连同代码一起提供给融合装置96,例如,将代码及描述信息的存储路径和文件名发送给融合装置96。这样,功能核查模块629可以利用存储设备93中该代码对应的项目的目标描述信息和该代码的描述信息,对代码进行功能核查。
网络平台91通过网络95,将代码质量评估信息提供给用户设备92。
步骤S95,融合装置96根据代码质量评估信息和功能核查结果,决定代码是否符合融合条件,如果确定代码符合融合条件,则执行步骤S96;如果确定代码不符合融合条件,则执行步骤S97。
步骤S96,融合装置96将代码融合到存储设备93中该代码对应的项目代码库,并通知用户设备92代码已被融合。
步骤S97,融合装置96通知用户设备92代码被拒绝。
一些实施例中,响应于用户设备92发送的强制加入申请,融合装置96可以将代码加入代码对应的项目的代码库。这样,代码管理系统可以允许用户强制加入未通过功能一致性检验的代码,有助于在特殊的情形下满足用户的需求。
一些实施例中,代码质量评估装置60还可以针对指定的项目提供项目完整性报告。例如,融合装置96将代码融合到相应的项目代码库时,可以调用代码质量评估装置60生成该项目的项目完整性报告。又例如,在接收到用户针对一项目的完整性核查请求时,网络平台91可以调用代码质量评估装置60生成该项目的项目完整性报告。
以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种代码质量评估方法,其特征在于,包括:
获取复数个样本代码、以及其中每个样本代码的质量信息;
根据预先确定的复数个代码属性,从所述复数个样本代码中提取其中每个样本代码的所述复数个代码属性的值,作为样本值集合;
利用所述样本值集合和所述质量信息确定所述复数个代码属性的值与代码质量之间的关系;以样本值集合作为机器学习模块的输入,以质量信息作为机器学习模块的输出,来训练机器学习模块;
从待评估的代码中提取所述复数个代码属性对应的值作为评估值集合;
利用所述关系获得所述评估值集合对应的代码质量评估信息;
利用所述样本值集合和所述质量信息确定所述复数个代码属性的值与代码质量之间的关系包括:利用所述样本值集合和所述质量信息确定复数个属性影响因子,每个属性影响因子表示所述复数个代码属性中的一个代码属性的值对代码质量的影响;
利用所述关系获得所述评估值集合对应的代码质量评估信息包括:利用所述复数个属性影响因子和所述评估值集合中的所述复数个代码属性的值获得所述代码质量评估信息。
2.根据权利要求1所述的方法,其特征在于,
利用所述样本值集合和所述质量信息确定所述复数个代码属性的值与代码质量之间的关系进一步包括:根据预先对所述复数个代码属性进行可重复分组得到的一个或复数个属性组,利用所述样本值集合和所述质量信息确定一个或复数个类型影响因子,每个类型影响因子表示所述一个或复数个属性组中的一个属性组对所述机器学习模块的输出值的影响;
利用所述关系获得所述评估值集合对应的代码质量评估信息包括:利用所述复数个属性影响因子、所述评估值集合中的所述复数个代码属性的值,以及所述一个或复数个类型影响因子获得所述代码质量评估信息。
3.根据权利要求2所述的方法,其特征在于,所述关系包括复数个子关系,每个子关系对应预设的一个或复数个代码质量值;其中,
利用所述样本值集合和所述质量信息确定所述复数个代码属性的值与代码质量之间的关系包括:针对所述复数个属性组中的每个属性组,利用所述样本值集合中所述属性组中的代码属性的值和所述质量信息确定所述复数个子关系中的一个子关系;
利用所述关系获得所述评估值集合对应的代码质量评估信息包括:利用所述评估值集合和所述复数个子关系确定复数个子质量信息,根据所述复数个子质量信息和所述复数个代码属性对应的类型影响因子获得所述代码质量评估信息。
4.根据权利要求3要求所述的方法,其特征在于,所述代码质量评估信息的值为预设的连续的值区间中的一个值、或预设的离散的复数个值中的一个值。
5.根据权利要求4所述的方法,其特征在于,进一步包括:
获取所述待评估的代码的第一描述信息,所述第一描述信息是所述代码所属的项目的目标的描述信息;
获取所述待评估的代码的第二描述信息,所述第二描述信息是所述代码的功能的描述信息;
根据所述第一描述信息和所述第二描述信息生成关于所述代码的功能是否符合所述目标的判断结果;
根据所述判断结果和所述代码质量评估信息生成判决结果,所述判决结果指示所述代码是否被允许加入所述项目对应的代码库。
6.根据权利要求5所述的方法,其特征在于,进一步包括:
当所述判断结果指示所述代码符合所述目标中的至少一个子目标时,记录所述代码与所述至少一个子目标的关联关系;
根据所述关联关系生成项目完整性报告,所述项目完整性报告指示所述项目对应的代码库中所有代码关联的子目标是否包括所述目标中的所有子目标。
7.根据权利要求5所述的方法,其特征在于,根据所述第一描述信息和所述第二描述信息生成关于所述代码的功能是否符合所述目标的判断结果包括:
从所述第一描述信息中提取复数个特征,作为目标特征集合;
利用所述目标特征集合训练分类模块,所述分类模块的输出为所述目标特征集合的一个或复数个分类;
从所述第二描述信息中提取复数个特征,作为功能特征集合;
将所述功能特征集合输入所述分类模块,根据所述分类模块输出的分类结果生成所述判断结果。
8.根据权利要求7所述的方法,其特征在于,进一步包括:
获取所述项目的复数个第二代码对应的复数个第三描述信息,所述第三描述信息是所述第二代码的功能的描述信息;
从所述复数个第三描述信息的每个第三描述信息中提取复数个特征作为一个第三功能集合,得到所述复数个第三描述信息对应的复数个第三功能特征集合;
计算每个第三功能特征集合与所述目标特征集合的匹配度;
利用所述复数个第三功能特征集合及其中每个第三功能特征集合与所述目标特征集合的匹配度训练所述分类模块。
9.一种代码质量评估装置(60),其特征在于,包括:
一个确定模块(625),用于获取复数个样本代码、及其中每个样本代码的质量信息;根据预先确定的复数个代码属性,从所述复数个样本代码中提取其中每个样本代码的所述复数个代码属性的值,作为样本值集合;利用所述样本值集合和所述质量信息确定所述复数个代码属性的值与代码质量之间的关系;以样本值集合作为机器学习模块的输入,以质量信息作为机器学习模块的输出,来训练机器学习模块;
一个质量评估模块(628),用于从待评估的代码中提取所述复数个代码属性对应的值作为评估值集合;利用所述关系获得所述评估值集合对应的代码质量评估信息
其中,利用所述样本值集合和所述质量信息确定所述复数个代码属性的值与代码质量之间的关系包括:利用所述样本值集合和所述质量信息确定复数个属性影响因子,每个属性影响因子表示所述复数个代码属性中的一个代码属性的值对代码质量的影响;
利用所述关系获得所述评估值集合对应的代码质量评估信息包括:利用所述复数个属性影响因子和所述评估值集合中的所述复数个代码属性的值获得所述代码质量评估信息。
10.根据权利要求9所述的装置,其特征在于,进一步包括:一个功能核查模块,用于获取所述待评估的代码所属的项目的第一描述信息,所述第一描述信息是所述项目的目标的描述信息;
获取所述待评估的代码对应的第二描述信息,所述第二描述信息是所述代码的功能的描述信息;
根据所述第一描述信息和所述第二描述信息生成关于所述代码的功能是否符合所述目标的判断结果;
根据所述判断结果和所述代码质量评估信息生成判决结果,所述判决结果指示所述代码是否被允许加入所述项目对应的代码库。
11.根据权利要求10所述的装置,其特征在于,进一步包括:一个完整性评估模块;其中,所述功能核查模块进一步用于,当所述判断结果指示所述代码符合所述目标中的至少一个子目标时,记录所述代码与所述至少一个子目标的关联关系;
所述完整性评估模块用于,根据所述关联关系生成项目完整性报告,所述项目完整性报告指示所述项目对应的代码库中所有代码关联的子目标是否包括所述目标中的所有子目标。
12.一种代码管理系统,其特征在于,包括:管理设备(81,91)和代码质量评估装置(60);其中
所述管理设备(81,91)用于,接收用户提交的待评估的代码,将所述代码提供给所述代码质量评估装置(60);接收所述代码质量评估装置(60)反馈的所述代码的代码质量评估信息,将所述代码质量评估信息提供给所述用户;
所述代码质量评估装置(60)用于,根据预先确定的复数个代码属性,利用样本代码的复数个代码属性的值及质量信息确定所述复数个代码属性的值与代码质量之间的关系;以样本值集合作为机器学习模块的输入,以质量信息作为机器学习模块的输出,来训练机器学习模块;从所述管理设备提供的所述代码中提取所述复数个代码属性对应的值作为评估值集合,利用所述关系获得所述评估值集合对应的所述代码质量评估信息,将所述代码质量评估信息提供给所述管理设备(81,91);
其中,利用所述样本值集合和所述质量信息确定所述复数个代码属性的值与代码质量之间的关系包括:利用所述样本值集合和所述质量信息确定复数个属性影响因子,每个属性影响因子表示所述复数个代码属性中的一个代码属性的值对代码质量的影响;
利用所述关系获得所述评估值集合对应的代码质量评估信息包括:利用所述复数个属性影响因子和所述评估值集合中的所述复数个代码属性的值获得所述代码质量评估信息。
13.一种代码质量评估装置,其特征在于,包括:至少一个存储器(62)和至少一个处理器(61),其中:
所述至少一个存储器(62),存储有计算机程序;
所述至少一个处理器(61),调用所述至少一个存储器(62)中存储的计算机可读程序,执行如权利要求1至8中任一项所述的代码质量评估方法。
14.一种计算机可读存储介质,存储有计算机可读指令,其特征在于,所述指令用于使处理器执行如权利要求1-8中任一权利要求所述的代码质量评估方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810974685.8A CN110858176B (zh) | 2018-08-24 | 2018-08-24 | 代码质量评估方法、装置、系统及存储介质 |
PCT/EP2019/072599 WO2020039075A1 (en) | 2018-08-24 | 2019-08-23 | Code quality assessment method and apparatus, system, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810974685.8A CN110858176B (zh) | 2018-08-24 | 2018-08-24 | 代码质量评估方法、装置、系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110858176A CN110858176A (zh) | 2020-03-03 |
CN110858176B true CN110858176B (zh) | 2024-04-02 |
Family
ID=67809447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810974685.8A Active CN110858176B (zh) | 2018-08-24 | 2018-08-24 | 代码质量评估方法、装置、系统及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110858176B (zh) |
WO (1) | WO2020039075A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111739617B (zh) * | 2020-06-15 | 2023-07-11 | 中国医学科学院医学信息研究所 | 医疗影像人工智能质控标注方法、装置、设备及存储介质 |
CN114077445A (zh) * | 2020-08-11 | 2022-02-22 | 腾讯科技(深圳)有限公司 | 互联网数据检测方法、装置、电子设备及计算机可读介质 |
CN113504935A (zh) * | 2021-07-26 | 2021-10-15 | 平安信托有限责任公司 | 软件开发质量评估方法、装置、电子设备及可读存储介质 |
CN113592347B (zh) * | 2021-08-11 | 2024-08-23 | 中国建设银行股份有限公司 | 项目质量的评估方法及装置、电子设备、存储介质 |
CN115905926B (zh) * | 2022-12-09 | 2024-05-28 | 华中科技大学 | 基于样本差异的代码分类深度学习模型解释方法及系统 |
CN117806972B (zh) * | 2024-01-03 | 2024-07-02 | 西南民族大学 | 一种基于多尺度时序分析的变更代码质量评估方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102768642A (zh) * | 2012-06-25 | 2012-11-07 | 浪潮电子信息产业股份有限公司 | 一种基于源码分析的linux内核可靠性评测系统及其方法 |
KR20130068425A (ko) * | 2011-12-15 | 2013-06-26 | 한국인터넷진흥원 | 악성코드 경유-유포지의 위험도 평가 시스템 및 그 방법 |
CN103257921A (zh) * | 2013-04-16 | 2013-08-21 | 西安电子科技大学 | 一种基于改进随机森林算法的软件故障预测系统及其方法 |
CN103559303A (zh) * | 2013-11-15 | 2014-02-05 | 南京大学 | 一种对数据挖掘算法的评估与选择方法 |
CN105335157A (zh) * | 2015-10-29 | 2016-02-17 | 武汉大学 | 一种整合主观和客观评估的需求优先级排序方法及系统 |
CN105630660A (zh) * | 2014-10-27 | 2016-06-01 | 青岛金讯网络工程有限公司 | 一种软件设计质量的评价和强制实行 |
CN106021410A (zh) * | 2016-05-12 | 2016-10-12 | 中国科学院软件研究所 | 一种基于机器学习的源代码注释质量评估方法 |
US9558098B1 (en) * | 2016-03-02 | 2017-01-31 | King Fahd University Of Petroleum And Minerals | Method, apparatus, and non-transitory computer readable media for the assessment of software products |
CN106447144A (zh) * | 2015-08-07 | 2017-02-22 | 阿里巴巴集团控股有限公司 | 一种目标对象的评估方法及装置 |
CN107665172A (zh) * | 2017-10-20 | 2018-02-06 | 北京理工大学 | 一种基于复杂加权软件网络的软件缺陷预测方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060241909A1 (en) * | 2005-04-21 | 2006-10-26 | Microsoft Corporation | System review toolset and method |
US20090070734A1 (en) * | 2005-10-03 | 2009-03-12 | Mark Dixon | Systems and methods for monitoring software application quality |
US8589859B2 (en) * | 2009-09-01 | 2013-11-19 | Accenture Global Services Limited | Collection and processing of code development information |
US9483261B2 (en) * | 2014-07-10 | 2016-11-01 | International Business Machines Corporation | Software documentation generation with automated sample inclusion |
US20170212829A1 (en) * | 2016-01-21 | 2017-07-27 | American Software Safety Reliability Company | Deep Learning Source Code Analyzer and Repairer |
-
2018
- 2018-08-24 CN CN201810974685.8A patent/CN110858176B/zh active Active
-
2019
- 2019-08-23 WO PCT/EP2019/072599 patent/WO2020039075A1/en active Application Filing
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130068425A (ko) * | 2011-12-15 | 2013-06-26 | 한국인터넷진흥원 | 악성코드 경유-유포지의 위험도 평가 시스템 및 그 방법 |
CN102768642A (zh) * | 2012-06-25 | 2012-11-07 | 浪潮电子信息产业股份有限公司 | 一种基于源码分析的linux内核可靠性评测系统及其方法 |
CN103257921A (zh) * | 2013-04-16 | 2013-08-21 | 西安电子科技大学 | 一种基于改进随机森林算法的软件故障预测系统及其方法 |
CN103559303A (zh) * | 2013-11-15 | 2014-02-05 | 南京大学 | 一种对数据挖掘算法的评估与选择方法 |
CN105630660A (zh) * | 2014-10-27 | 2016-06-01 | 青岛金讯网络工程有限公司 | 一种软件设计质量的评价和强制实行 |
CN106447144A (zh) * | 2015-08-07 | 2017-02-22 | 阿里巴巴集团控股有限公司 | 一种目标对象的评估方法及装置 |
CN105335157A (zh) * | 2015-10-29 | 2016-02-17 | 武汉大学 | 一种整合主观和客观评估的需求优先级排序方法及系统 |
US9558098B1 (en) * | 2016-03-02 | 2017-01-31 | King Fahd University Of Petroleum And Minerals | Method, apparatus, and non-transitory computer readable media for the assessment of software products |
CN106021410A (zh) * | 2016-05-12 | 2016-10-12 | 中国科学院软件研究所 | 一种基于机器学习的源代码注释质量评估方法 |
CN107665172A (zh) * | 2017-10-20 | 2018-02-06 | 北京理工大学 | 一种基于复杂加权软件网络的软件缺陷预测方法 |
Non-Patent Citations (7)
Title |
---|
RETICULA: Real-Time Code Quality Assessment;Luigi Frunzio;《https://ieeexplore.ieee.org/document/8330256》;1-5 * |
基于多层次属性加权的代码混淆有效性量化评估;谢鑫;《计算机科学》;20150415;167-173 * |
基于源代码的软件可维护性度量系统的研究与实现;殷翔;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;I138-129 * |
基于组合分类算法的源代码注释质量评估方法;余海等;《计算机应用》;20161210(第12期);1-4 * |
开放源代码软件成熟度评估(上);陈越;《信息技术与标准化》;1-6 * |
源代码分析注释的质量评价框架;高晓伟;杜晶;王青;;计算机系统应用(第10期);1-5 * |
源代码结构质量评估子系统的研究与实现;罗杨洋;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20150115;I138-147 * |
Also Published As
Publication number | Publication date |
---|---|
WO2020039075A1 (en) | 2020-02-27 |
CN110858176A (zh) | 2020-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110858176B (zh) | 代码质量评估方法、装置、系统及存储介质 | |
CN110765265B (zh) | 信息分类抽取方法、装置、计算机设备和存储介质 | |
US11526675B2 (en) | Fact checking | |
CN109829629B (zh) | 风险分析报告的生成方法、装置、计算机设备和存储介质 | |
CN109872162B (zh) | 一种处理用户投诉信息的风控分类识别方法及系统 | |
US20120259801A1 (en) | Transfer of learning for query classification | |
JP2021510429A (ja) | 知識および自然言語処理を統合するための機械学習 | |
CN108491406B (zh) | 信息分类方法、装置、计算机设备和存储介质 | |
CN110377631B (zh) | 案件信息处理方法、装置、计算机设备和存储介质 | |
EP4363993A1 (en) | Ai-augmented auditing platform including techniques for automated document processing | |
CN110401545B (zh) | 聊天群组创建方法、装置、计算机设备和存储介质 | |
CN112183994B (zh) | 一种设备状态的评估方法、装置、计算机设备和存储介质 | |
CN107291775B (zh) | 错误样本的修复语料生成方法和装置 | |
CN110166522B (zh) | 服务器识别方法、装置、可读存储介质和计算机设备 | |
CN110858353B (zh) | 获取案件裁判结果的方法和系统 | |
US10467221B2 (en) | Software function verification system and software function verification method | |
CN117271767A (zh) | 基于多智能体的运维知识库的建立方法 | |
US20150286945A1 (en) | Artificial Intelligence System and Method for Making Decisions About Data Objects | |
CN113449011A (zh) | 基于大数据预测的信息推送更新方法及大数据预测系统 | |
US11887059B2 (en) | Apparatus and methods for creating a video record | |
CN115495553A (zh) | 查询文本排序方法、装置、计算机设备及存储介质 | |
Zhong et al. | Toward automated multiparty privacy conflict detection | |
CN116958622A (zh) | 数据的分类方法、装置、设备、介质及程序产品 | |
CN117911039A (zh) | 售后服务系统的控制方法、设备及存储介质 | |
CN113886548A (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 |