CN117472737A - 面向增量代码的质量检测方法及其系统 - Google Patents
面向增量代码的质量检测方法及其系统 Download PDFInfo
- Publication number
- CN117472737A CN117472737A CN202311279778.6A CN202311279778A CN117472737A CN 117472737 A CN117472737 A CN 117472737A CN 202311279778 A CN202311279778 A CN 202311279778A CN 117472737 A CN117472737 A CN 117472737A
- Authority
- CN
- China
- Prior art keywords
- code
- text information
- quality
- entity
- incremental
- 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
- 238000001514 detection method Methods 0.000 title claims abstract description 26
- 238000013441 quality evaluation Methods 0.000 claims abstract description 29
- 238000012545 processing Methods 0.000 claims description 20
- 238000012549 training Methods 0.000 claims description 10
- 238000001303 quality assessment method Methods 0.000 claims description 9
- 238000000034 method Methods 0.000 claims description 8
- 238000012360 testing method Methods 0.000 claims description 8
- 238000013528 artificial neural network Methods 0.000 claims description 7
- 238000007689 inspection Methods 0.000 claims 1
- 238000003058 natural language processing Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012706 support-vector machine Methods 0.000 description 1
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
- 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
- G06N3/0455—Auto-encoder networks; Encoder-decoder networks
-
- 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/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了一种面向增量代码的质量检测方法及其系统。本发明首先针对指定时间区间内的代码,根据代码提交记录确定其增量代码段落;进而,本发明构造和训练代码质量检测器,该质量检测器通过对注释和命名等文本信息进行深入的语义分析和质量评估,能够更准确地识别出潜在的错误和不规范的代码,帮助开发人员优化代码质量。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种面向增量代码的质量检测方法及其系统。
背景技术
在软件开发过程中,注释和变量命名等文本信息对于代码的理解和维护具有重要意义。然而,现有的软件代码质量检测方法往往只关注代码本身的语法和结构,而忽视了注释和命名等文本信息的质量。这导致了一些潜在的问题,如函数没有注释、命名不规范等,影响了代码的可读性、可维护性和可理解性。
目前,虽然已经有一些软件代码质量检测方法使用了自然语言处理技术来分析注释和命名等文本信息,但这些方法仍然存在一些问题。例如,现有的方法往往只关注注释和命名的表面信息,没有对其进行深层次的语义分析;另外,现有方法对于注释和命名的质量评估也比较简单,只是通过一些规则或启发式算法进行判断,缺乏准确性和全面性。另外,对于每次质量检测的增量代码,可能存在于原代码的重复或者代码风格不一致而导致检测的混淆和错误。
发明内容
(一)发明目的
鉴于上述问题,本发明的目的是提出一种面向增量代码的质量检测方法及其系统。本发明首先针对指定时间区间内的代码,根据代码提交记录确定其增量代码段落;进而,本发明构造和训练代码质量检测器,该质量检测器通过对注释和命名等文本信息进行深入的语义分析和质量评估,能够更准确地识别出潜在的错误和不规范的代码,帮助开发人员优化代码质量。
(二)技术方案
为了解决以上技术问题,本发明公开了以下技术方案。
作为本发明的第一方面,本发明公开了一种面向增量代码的质量检测方法,其特征在于,包括:
针对指定时间区间内的代码,根据代码提交记录确定其增量代码段落;
构造和训练代码的质量检测器,该质量检测器用于对代码文本信息执行语义分析和质量评估;
基于所述构造和训练好的模型,对测试集中的注释和命名等文本信息进行质量评估,得到质量评估结果。
优选的是,所述针对指定时间区间内的代码,根据代码提交记录确定其增量代码段落,具体包括:获取用于指定时间区间的commit指令信息,所述commit指令信息确定了指定时间区间的开始时间和结束时间;进而,获得指定时间区间内的全部代码提交记录;根据所述代码递交记录确定其中增量代码段落。
优选的是,所述构造和训练代码的质量检测器,具体包括:
从非增量代码中,收集软件代码及其对应文本信息的数据集;
对于数据集中的文本信息,通过质量检测器基于自然语言模型执行文本信息语义处理;
基于文本信息语义处理的结果,通过质量检测器建立实体标注的功能类型和相互关系之间的逻辑关联;
根据软件代码及其文本信息的所述逻辑关联,所述质量检测器确定符合所述逻辑关联的特征的质量评估指标,并对测试集中的软件代码及其文本信息进行质量评估。
优选的是,所述数据集包括源代码文件和注释文件以及相应的命名文件。
优选的是,所述文本信息包括软件代码对应的相关注释和命名。
优选的是,所述文本信息语义处理具体包括:
利用词向量模型将所述文本信息转换为向量表示形式;
利用BERT模型,输入向量表示形式的所述文本信息,输出对文本信息中的实体类型的实体标注及实体关系。
优选的是,所述通过质量检测器建立实体标注的功能类型和相互关系之间的逻辑关联,具体包括:采用R-GNN神经网络的编码器,针对实体标注中的每个表示实体的标注计算该标注的特征表示;采用标注归类的Softmax分类层,根据所述特征表示,确定属于同一类的标注,对相应的实体标注中归类为同一实体,从而建立实体标注之间的逻辑关联。
优选的是,所述质量评估指标包括语法检查、命名的一致性检查。
进而,本发明公开的一种面向增量代码的质量检测系统,包括:
增量代码确定模块,用于针对指定时间区间内的代码,根据代码提交记录确定其增量代码段落;
质量检测器,用于对代码文本信息执行语义分析和质量评估。
其中,所述质量检测器具体包括:
文本信息语义处理模块,用于对于软件代码的文本信息,基于自然语言模型执行文本信息语义处理,输出对文本信息中的实体标注;
编码器,采用R-GNN神经网络,用于基于文本信息语义处理的结果,建立实体标注的功能类型和相互关系之间的逻辑关联;
质量评估模型模块,用于确定符合所述逻辑关联的特征的质量评估指标,对软件代码及其文本信息生成质量评估结果。
(三)有益效果
本发明通过引入自然语言处理技术,对软件代码的注释和命名等文本信息进行语义分析和质量评估,提高了代码质量检测的准确性和全面性,本发明应用语义分析和逻辑关联的方法,通过深入分析注释和命名等文本信息的语义特征,提高了质量评估的准确性,具有广泛的应用前景,可以应用于软件开发过程中的代码质量检测和优化。
附图说明
以下参考附图描述的实施例是示例性的,旨在用于解释和说明本发明,而不能理解为对本发明的保护范围的限制。
图1是本发明公开的一种面向增量代码的质量检测方法流程图;
图2是本发明公开的构造和训练代码的质量检测器的具体流程图;
图3是本发明公开的一种面向增量代码的质量检测系统结构图。
具体实施方式
为使本发明实施的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行更加详细的描述。
需要说明的是:在附图中,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施例是本发明一部分实施例,而不是全部的实施例,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
鉴于上述问题,本发明的目的是提出一种面向增量代码的质量检测方法及其系统。
下面参考图1,详细描述本发明公开的一种面向增量代码的质量检测方法,主要包括以下步骤。
S100、针对指定时间区间内的代码,根据代码提交记录确定其增量代码段落。
本步骤中,首先获取用于指定时间区间的commit指令信息,所述commit指令信息确定了指定时间区间的开始时间和结束时间;进而,获得指定时间区间内的全部代码提交记录;所述提交记录包括用户名、提交时间、代码提交文件、改动行数等信息;根据所述代码递交记录确定其中增量代码段落。
S200、构造和训练代码的质量检测器,该质量检测器用于对代码文本信息执行语义分析和质量评估。
参见图2,步骤S200包括以下子步骤S201-S20
S201、从非增量代码中,收集软件代码及其对应文本信息的数据集,所述文本信息包括软件代码相关注释和命名等;并对数据集进行预处理,最后将其分成训练集和测试集。
具体来说,收集数据集的步骤中,需要收集软件代码及其相关注释和命名等文本信息;数据集应包括源代码文件和注释文件,以及相应的命名文件。对数据集进行预处理,包括去除无效字符、标点符号和空白字符,以便后续的处理和分析。将处理后的数据集分成训练集和测试集,用于训练和评估算法模型。
S202、对于数据集中的文本信息,通过质量检测器基于自然语言模型(NLP)执行文本信息语义处理。通过本步骤中对注释和命名等文本信息进行NLP处理,以便后续的语义分析和质量评估。
具体来说,在本步骤中,利用词向量模型(如Word2Vec)将注释和命名等文本信息转换为向量表示形式,以便后续的语义处理。进而,对注释和命名等文本信息进行实体标注,以获取更详细的语义信息;可以利用BERT模型,输入向量表示形式的所述文本信息,从而该模型输出对文本信息中的注释、命名等实体类型的实体标注。BERT模型还可以进一步提取文本信息中的注释、命名等实体类型的实体关系,所述实体关系根据代码编写的逻辑相对应,反映了注释、命名等实体之间的相互逻辑关系。
S203、基于文本信息语义处理的结果,通过质量检测器建立实体标注的功能类型和相互关系之间的逻辑关联。
具体来说,本步骤中,采用R-GNN神经网络的编码器。编码器表示为fE(G,θE),其中G表示输入该编码器的实体标注;θE是该编码器的R-GNN神经网络各网络层的所有参数矩阵构成的参数向量,该编码器共计L层网络层,每一层网络层的参数矩阵列表示为其中l=1,2,...,L。编码器针对实体标注G中的每个表示实体的标注vi,i=1,2,...,n,在其第l层网络层计算该标注的特征表示:/>这里/>是标注vi的编码器第l层的输出特征,/>表示激活函数,/>表示和标注vi有关联关系r的实体的标注集合,/>表示集合/>元素的个数。
该编码器的输出,也即其第L层网络层的输出连接到一个用于标注归类的Softmax分类层。Softmax分类层的输出向量/>是K维的一个向量,其中第k个元素/>i=1,2,…,n,k=1,2,…,K,K是标注的类型数目,表示的是第i个标注属于第k类的概率。对于经Softmax分类层确定属于同一类的标注,可以对相应的实体标注中归类为同一实体,从而建立实体标注之间的逻辑关联。
S204、根据软件代码及其文本信息的所述逻辑关联,所述质量检测器确定符合所述逻辑关联的特征的质量评估指标,并对测试集中的软件代码及其文本信息进行质量评估。根据逻辑关联的特征,设计相应的质量评估指标,如语法检查、命名的一致性检查等。基于训练集的数据,通过机器学习算法(如决策树、支持向量机)训练质量评估模型,模型的输入包括软件代码及其文本信息的特征,输出为质量评估结果。
S300、基于所述构造和训练好的模型,对测试集中的注释和命名等文本信息进行质量评估,得到质量评估结果。
进而,本发明公开的一种面向增量代码的质量检测系统,如图3所示,包括:
增量代码确定模块,用于针对指定时间区间内的代码,根据代码提交记录确定其增量代码段落;
质量检测器,用于对代码文本信息执行语义分析和质量评估。
其中,所述质量检测器具体包括:
文本信息语义处理模块,用于对于软件代码的文本信息,基于自然语言模型执行文本信息语义处理,输出对文本信息中的实体标注;
编码器,采用R-GNN神经网络,用于基于文本信息语义处理的结果,建立实体标注的功能类型和相互关系之间的逻辑关联;
质量评估模型模块,用于确定符合所述逻辑关联的特征的质量评估指标,对软件代码及其文本信息生成质量评估结果。
本发明通过引入自然语言处理技术,对软件代码的注释和命名等文本信息进行语义分析和质量评估,提高了代码质量检测的准确性和全面性,本发明应用语义分析和逻辑关联的方法,通过深入分析注释和命名等文本信息的语义特征,提高了质量评估的准确性,具有广泛的应用前景,可以应用于软件开发过程中的代码质量检测和优化。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种面向增量代码的质量检测方法,其特征在于,包括:
针对指定时间区间内的代码,根据代码提交记录确定其增量代码段落;
构造和训练代码的质量检测器,该质量检测器用于对代码文本信息执行语义分析和质量评估;
基于所述构造和训练好的模型,对测试集中的注释和命名等文本信息进行质量评估,得到质量评估结果。
2.根据权利要求1所述的面向增量代码的质量检测方法,其特征在于,所述针对指定时间区间内的代码,根据代码提交记录确定其增量代码段落,具体包括:获取用于指定时间区间的commit指令信息,所述commit指令信息确定了指定时间区间的开始时间和结束时间;进而,获得指定时间区间内的全部代码提交记录;根据所述代码递交记录确定其中增量代码段落。
3.根据权利要求2所述的面向增量代码的质量检测方法,其特征在于,所述构造和训练代码的质量检测器,具体包括:
从非增量代码中,收集软件代码及其对应文本信息的数据集;
对于数据集中的文本信息,通过质量检测器基于自然语言模型执行文本信息语义处理;
基于文本信息语义处理的结果,通过质量检测器建立实体标注的功能类型和相互关系之间的逻辑关联;
根据软件代码及其文本信息的所述逻辑关联,所述质量检测器确定符合所述逻辑关联的特征的质量评估指标,并对测试集中的软件代码及其文本信息进行质量评估。
4.根据权利要求3所述的面向增量代码的质量检测方法,其特征在于,所述数据集包括源代码文件和注释文件以及相应的命名文件。
5.根据权利要求4所述的面向增量代码的质量检测方法,其特征在于,所述文本信息包括软件代码对应的相关注释和命名。
6.根据权利要求5所述的面向增量代码的质量检测方法,其特征在于,所述文本信息语义处理具体包括:
利用词向量模型将所述文本信息转换为向量表示形式;
利用BERT模型,输入向量表示形式的所述文本信息,输出对文本信息中的实体类型的实体标注及实体关系。
7.根据权利要求6所述的面向增量代码的质量检测方法,其特征在于,所述通过质量检测器建立实体标注的功能类型和相互关系之间的逻辑关联,具体包括:采用R-GNN神经网络的编码器,针对实体标注中的每个表示实体的标注计算该标注的特征表示;采用标注归类的Softmax分类层,根据所述特征表示,确定属于同一类的标注,对相应的实体标注中归类为同一实体,从而建立实体标注之间的逻辑关联。
8.根据权利要求7所述的面向增量代码的质量检测方法,其特征在于,所述质量评估指标包括语法检查、命名的一致性检查。
9.一种面向增量代码的质量检测系统,用于执行权利要求1-8中任一项所述的质量检测方法,其特征在于,包括:
增量代码确定模块,用于针对指定时间区间内的代码,根据代码提交记录确定其增量代码段落;
质量检测器,用于对代码文本信息执行语义分析和质量评估。
10.根据权利要求9所述的面向增量代码的质量检测系统,其特征在于,所述质量检测器具体包括:
文本信息语义处理模块,用于对于软件代码的文本信息,基于自然语言模型执行文本信息语义处理,输出对文本信息中的实体标注;
编码器,采用R-GNN神经网络,用于基于文本信息语义处理的结果,建立实体标注的功能类型和相互关系之间的逻辑关联;
质量评估模型模块,用于确定符合所述逻辑关联的特征的质量评估指标,对软件代码及其文本信息生成质量评估结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311279778.6A CN117472737A (zh) | 2023-09-28 | 2023-09-28 | 面向增量代码的质量检测方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311279778.6A CN117472737A (zh) | 2023-09-28 | 2023-09-28 | 面向增量代码的质量检测方法及其系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117472737A true CN117472737A (zh) | 2024-01-30 |
Family
ID=89630242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311279778.6A Pending CN117472737A (zh) | 2023-09-28 | 2023-09-28 | 面向增量代码的质量检测方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117472737A (zh) |
-
2023
- 2023-09-28 CN CN202311279778.6A patent/CN117472737A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gong et al. | A survey on dataset quality in machine learning | |
CN109446341A (zh) | 知识图谱的构建方法及装置 | |
CN113191148B (zh) | 一种基于半监督学习和聚类的轨道交通实体识别方法 | |
CN110516256A (zh) | 一种中文命名实体提取方法及其系统 | |
CN113987199B (zh) | 一种规范自动解译的bim智能审图方法、系统和介质 | |
CN113127339B (zh) | 一种Github开源平台数据的获取方法及源代码缺陷修复系统 | |
CN113254507B (zh) | 一种数据资产目录智能构建盘点方法 | |
CN116245107B (zh) | 电力审计文本实体识别方法、装置、设备及存储介质 | |
JP2018147351A (ja) | 知識モデル構築システム及び知識モデル構築方法 | |
CN117009422B (zh) | 便利业务人员进行数据导入的实现方法 | |
CN117648093A (zh) | 基于大模型和自定制需求模板的rpa流程自动化生成方法 | |
CN115965020A (zh) | 一种面向广域地理信息知识图谱构建的知识抽取方法 | |
CN116561264A (zh) | 一种基于知识图谱的智能问答系统的构建方法 | |
Yuan et al. | Java code clone detection by exploiting semantic and syntax information from intermediate code-based graph | |
CN117435777B (zh) | 一种产业链图谱自动构建方法与系统 | |
CN111680082B (zh) | 基于数据整合的政府财政数据采集系统及数据采集方法 | |
Jubair et al. | A multi‐agent K‐means with case‐based reasoning for an automated quality assessment of software requirement specification | |
CN113642291B (zh) | 上市公司报告的逻辑结构树构建方法、系统、存储介质及终端 | |
CN117472737A (zh) | 面向增量代码的质量检测方法及其系统 | |
CN115373982A (zh) | 基于人工智能的测试报告分析方法、装置、设备及介质 | |
CN115204128A (zh) | 一种配置文件生成方法、装置和计算机可读存储介质 | |
CN118170933B (zh) | 一种面向科学领域多模态语料数据的构建方法和装置 | |
CN118132738B (zh) | 针对桥梁检评文本的抽取式问答方法 | |
Azeroual | A text and data analytics approach to enrich the quality of unstructured research information | |
CN116989838B (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 |