本文作者:kaifamei

代码注释率的确定方法、装置、设备及存储介质与流程

更新时间:2025-12-16 03:00:49 0条评论

代码注释率的确定方法、装置、设备及存储介质与流程



1.本技术涉及软件工程领域,尤其涉及一种代码注释率的确定方法、装置、设备及存储介质。


背景技术:



2.随着软件工程产业的发展,软件的生命周期越来越长。而在软件的生命周期中,软件维护的工作量占据了整个生命周期的70%以上,软件维护的过程中,主要由软件维护人员通过软件源代码以及相关的代码注释来理解软件的设计与实现,从而对软件进行维护。
3.为了提高软件的可维护性以及软件维护人员对于软件的理解效率,软件在编写过程中需要有较高的代码注释率。因此,软件更新换代过程中以及甲方评估乙方提供的软件时,如何对源文件中的代码进行检测,并确定代码注释率尤为重要。


技术实现要素:



4.本技术提供一种代码注释率的确定方法、装置、设备及存储介质,用于对源文件程序中的代码注释率进行确定。
5.为了达到上述目的,本技术采用如下技术方案:
6.第一方面,提供一种代码注释率的确定方法,该方法包括:代码注释率的确定装置识别待检测源文件的后缀名;并根据待检测源文件的后缀名确定待检测源文件对应的注释符号。进一步的,代码注释率的确定装置确定待检测源文件中的代码总行数;并根据注释符号,确定待检测源文件中的注释总行数。最后,代码注释率的确定装置根据代码总行数以及注释总行数,确定待检测源文件的代码注释率。
7.在本技术提供的代码注释率的确定方法中,代码注释率的确定装置在获取待检测源文件后,通过智能匹配源程序中多种语言的注释符号特点,在确定到待检测源文件的注释总行数以及代码总行数后,自动地识别并计算出多种语言的代码注释率情况,实现了多种语言环境下的代码注释率确定。
8.一种可能的设计中,上述确定待检测源文件中的代码总行数,包括:代码注释率的确定装置确定待检测源文件中每一行的扫描结果。进一步的,代码注释率的确定装置在第一扫描结果为空行的情况下,代码总行数以及注释总行数不变,第一扫描结果为待检测源文件中任意一行的扫描结果;代码注释率的确定装置在第一扫描结果为非空行的情况下,基于预设增量调整代码总行数。该设计中提高了代码注释率的确定装置确定代码总行数的准确性。
9.一种可能的设计中,上述根据注释符号,确定待检测源文件中的注释总行数,包括:代码注释率的确定装置在第一扫描结果为非空行的情况下,确定第一扫描结果中包括的注释符号。代码注释率的确定装置在注释符号为单行注释符号或多行注释结束符号的情况下,基于预设增量调整注释总行数。该设计中提高了代码注释率的确定装置确定注释总行数的准确性。
10.一种可能的设计中,代码注释率的确定装置获取待检测源文件所包括的多个注释语句,并基于多个注释语句中的每个注释语句,以及预设聚类模型,确定每个注释语句对应的注释分数。进一步的,代码注释率的确定装置根据每个注释语句对应的注释分数确定待检测源文件的注释指标,注释指标用于表征待检测源文件的注释的质量。该设计中通过检测源文件中每个注释语句对应的注释分数,进而得到用于表征源文件注释质量的注释指标,在确定代码注释率的基础上,能够实现评估待检测源文件中的代码注释质量,有助于运维人员对于低质量的代码注释进行调整,提高源文件的可读性。
11.一种可能的设计中,代码注释率的确定装置在代码注释率小于预设阈值的情况下,确定待检测源文件中包括的函数的函数名。进一步的,代码注释率的确定装置显示代码注释率,以及待检测源文件中包括的函数的函数名。该设计中实现了代码注释率的确定装置将代码注释率较低的源文件中的函数进行显示,以帮助运维人员对主要函数的注释进行补充。
12.一种可能的设计中,代码注释率的确定装置确定待检测源文件夹中的第一源文件是否为异常文件类型,第一源文件为待检测源文件夹所包括的多个源文件中的任意一个。进一步的,代码注释率的确定装置在第一源文件为异常文件类型的情况下,发出告警;在第一源文件不为异常文件类型的情况下,将第一源文件确定为待检测源文件。该设计中实现了代码注释率的确定装置从源文件夹中获取用于检测的源文件。
13.一种可能的设计中,代码注释率的确定装置确定第一源文件的编码类型;进一步的,代码注释率的确定装置根据第一源文件的编码类型,确定第一源文件是否为异常文件类型。该设计中提供了一种确定源文件是否为异常文件类型的方法。
14.第二方面,提供了一种代码注释率的确定装置,包括处理单元以及确定单元。处理单元用于识别待检测源文件的后缀名。确定单元用于根据待检测源文件的后缀名,确定待检测源文件对应的注释符号。确定单元还用于确定待检测源文件中的代码总行数。确定单元还用于根据注释符号,确定待检测源文件中的注释总行数。确定单元还用于根据代码总行数以及注释总行数,确定待检测源文件的代码注释率。
15.一种可能的设计中,确定单元具体用于确定待检测源文件中每一行的扫描结果。在第一扫描结果为空行的情况下,代码总行数以及注释总行数不变,第一扫描结果为待检测源文件中任意一行的扫描结果。在第一扫描结果为非空行的情况下,基于预设增量调整代码总行数。
16.一种可能的设计中,确定单元具体用于在第一扫描结果为非空行的情况下,确定第一扫描结果中包括的注释符号。在注释符号为单行注释符号或多行注释结束符号的情况下,基于预设增量调整注释总行数。
17.一种可能的设计中,代码注释率的确定装置还包括获取单元。获取单元用于获取待检测源文件所包括的多个注释语句。确定单元还用于基于多个注释语句中的每个注释语句,以及预设聚类模型,确定每个注释语句对应的注释分数。确定单元还用于根据每个注释语句对应的注释分数确定待检测源文件的注释指标,注释指标用于表征待检测源文件的注释的质量。
18.一种可能的设计中,代码注释率的确定装置还包括显示单元。确定单元还用于在代码注释率小于预设阈值的情况下,确定待检测源文件中包括的函数的函数名。显示单元
用于显示代码注释率,以及待检测源文件中包括的函数的函数名。
19.一种可能的设计中,代码注释率的确定装置还包括告警单元。确定单元还用于确定待检测源文件夹中的第一源文件是否为异常文件类型,第一源文件为待检测源文件夹所包括的多个源文件中的任意一个。告警单元用于在第一源文件为异常文件类型的情况下,发出告警。确定单元还用于在第一源文件不为异常文件类型的情况下,将第一源文件确定为待检测源文件。
20.一种可能的设计中,确定单元具体用于确定第一源文件的编码类型。根据第一源文件的编码类型,确定第一源文件是否为异常文件类型。
21.第三方面,提供了一种代码注释率的确定设备,该代码注释率的确定设备包括存储器和处理器;存储器和处理器耦合,该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令,当处理器执行该计算机指令时,该代码注释率的确定设备执行如第一方面或其任一种可能的设计提供的代码注释率的确定方法。
22.第四方面,提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当指令在代码注释率的确定设备上运行时,使得该代码注释率的确定设备执行如第一方面或其任一种可能的实现方式提供的代码注释率的确定方法。
附图说明
23.图1为本技术的实施例提供的一种代码注释率的确定系统结构示意图;
24.图2为本技术的实施例提供的一种代码注释率的确定方法流程示意图一;
25.图3为本技术的实施例提供的一种代码注释率的确定方法流程示意图二;
26.图4为本技术的实施例提供的一种代码注释率的确定方法流程示意图三;
27.图5为本技术的实施例提供的一种代码注释率的确定方法流程示意图四;
28.图6为本技术的实施例提供的一种代码注释率的确定方法流程示意图五;
29.图7为本技术的实施例提供的一种代码注释率的确定方法流程示意图六;
30.图8为本技术的实施例提供的一种代码注释率的确定装置结构示意图;
31.图9为本技术的实施例提供的一种代码注释率的确定设备结构示意图一;
32.图10为本技术的实施例提供的一种代码注释率的确定设备结构示意图二。
具体实施方式
33.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
34.在本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
35.在本技术的描述中,除非另有说明,“/”表示“或”的意思,例如,a/b可以表示a或b。本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。此外,“至少一个”“多个”是指两个或两个以上。“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
36.为了提高软件的可维护性以及软件维护人员对于软件的理解效率,软件在编写过程中需要有较高的代码注释率。因此,软件更新换代过程中以及甲方评估乙方提供的软件时,如何对源文件中的代码进行检测,并确定代码注释率尤为重要。
37.为解决上述问题,本技术提出一种代码注释率的确定方法、装置、设备及存储介质,代码注释率的确定装置识别待检测源文件的后缀名;并根据待检测源文件的后缀名确定待检测源文件对应的注释符号。进一步的,代码注释率的确定装置确定待检测源文件中的代码总行数;并根据注释符号,确定待检测源文件中的注释总行数。最后,代码注释率的确定装置根据代码总行数以及注释总行数,确定待检测源文件的代码注释率。这样一来,代码注释率的确定装置在获取待检测源文件后,通过智能匹配源程序中多种语言的注释符号特点,在确定到待检测源文件的注释总行数以及代码总行数后,自动地识别并计算出多种语言的代码注释率情况,实现了多种语言环境下的代码注释率确定。
38.图1示出一种代码注释率的确定系统,本技术实施例提供的代码注释率的确定方法可以适用于如图1所示的代码注释率的确定系统,用于实现确定源文件中的代码注释率。如图1所示,代码注释率的确定系统10中包括代码注释率的确定装置11以及服务器12。
39.其中,代码注释率的确定装置11与服务器12连接,可以采用有线方式连接,也可以采用无线方式连接,本技术实施例对此不作限定。
40.在一些实施例中,代码注释率的确定装置11从服务器12获取待检测源文件,进一步对待检测源文件的代码注释率进行检测确定。
41.在另外一些实施例中,代码注释率的确定装置11与存在待检测源文件的设备连接,进一步直接从存在待检测源文件的设备中,获取待检测源文件,从而实现对待检测源文件的代码注释率进行检测确定。
42.代码注释率的确定装置11可以用于在从服务器12获取到待检测源文件后,识别待检测源文件的后缀名,并根据待检测源文件的后缀名,确定该待检测源文件的编程语言,从而将该编程语言中的注释符号,确定为该待检测源文件对应的注释符号。
43.代码注释率的确定装置11还可以用于确定待检测源文件中代码总行数,以及根据注释符号确定待检测源文件中的注释总行数。
44.代码注释率的确定装置11还可以用于根据确定到的代码总行数以及注释总行数,确定待检测源文件的代码注释率。
45.图2是根据一些示例性实施例示出的一种代码注释率的确定方法的流程示意图。在一些实施例中,上述代码注释率的确定方法可以应用到如图1所示的代码注释率的确定系统10中的代码注释率的确定装置11。以下,本技术实施例以代码注释率的确定方法应用于代码注释率的确定装置11为例,对上述代码注释率的确定方法进行说明。
46.如图2所示,本技术实施例提供的代码注释率的确定方法,包括下述s201-s205。
47.s201、代码注释率的确定装置识别待检测源文件的后缀名。
48.作为一种可能的实现方式,代码注释率的确定装置在获取到待检测源文件后,识别获取到的待检测源文件的后缀名。
49.s202、代码注释率的确定装置根据待检测源文件的后缀名,确定待检测源文件对应的注释符号。
50.作为一种可能的实现方式,代码注释率的确定装置基于上述步骤s201中识别到的
待检测源文件的后缀名,以及源文件后缀名与编程语言的对应关系,确定待检测源文件对应的编程语言。进一步的,代码注释率的确定装置根据编程语言与注释符号的对应关系,确定待检测源文件对应的注释符号。
51.需要说明的,源文件后缀名与编程语言的对应关系,和编程语言与注释符号的对应关系预先存储于代码注释率的确定装置中。
52.示例性的,源文件后缀名与编程语言的对应关系如下表1所示。
53.表1:源文件后缀名与编程语言的对应关系表
[0054][0055][0056]
示例性的,编程语言与注释符号的对应关系如下表2所示。
[0057]
表2:编程语言与注释符号的对应关系表
[0058]
编程语言注释符号c语言“//”、“/*和*/”、c++语言“//”、“/*和*/”java语言“//”、“/*和*/”、“/**和*/”python语言“#”、
“””””

“”””””””
[0059]
示例性的,若代码注释率的确定装置确定到的待检测源文件的后缀名为.py,则通过源文件后缀名与编程语言的对应关系表确定待检测源文件为通过python语言进行编译得到的。进一步的,代码注释率的确定装置通过编程语言与注释符号的对应关系表确定python语言对应的注释符号为“#”、
“””””

“”””””””

[0060]
作为另外一种可能的实现方式,代码注释率的确定装置在基于上述步骤s201中识别到的待检测源文件的后缀名,以及源文件后缀名与编程语言、注释符号的对应关系,直接确定待检测源文件对应的注释符号。
[0061]
示例性的,源文件后缀名与编程语言、注释符号的对应关系可以如下表3所示。
[0062]
表3:源文件后缀名与编程语言、注释符号的对应关系表
[0063]
源文件后缀名编程语言注释符号.cc语言“//”、“/*和*/”、.cppc++语言“//”、“/*和*/”.javajava语言“//”、“/*和*/”、“/**和*/”.pypython语言“#”、
“””””

“”””””””
[0064]
示例性的,若代码注释率的确定装置确定到的待检测源文件的后缀名为.py,则通过源文件后缀名与编程语言、注释符号的对应关系表确定待检测源文件对应的注释符号为“#”、
“””””

“”””””””

[0065]
s203、代码注释率的确定装置确定待检测源文件中的代码总行数。
[0066]
作为一种可能的实现方式,代码注释率的确定装置扫描待检测源文件,确定待检测源文件包括的行数为代码总行数。
[0067]
s204、代码注释率的确定装置根据注释符号,确定待检测源文件中的注释总行数。
[0068]
作为一种可能的实现方式,代码注释率的确定装置基于上述步骤s202中确定到的注释符号,在扫描待检测源文件时,检测包括注释符号的行,统计为注释总行数。
[0069]
s205、代码注释率的确定装置根据代码总行数以及注释总行数,确定待检测源文件的代码注释率。
[0070]
作为一种可能的实现方式,代码注释率的确定装置基于上述步骤s203获取到的代码总行数,以及步骤s204中获取到的注释总行数,将注释总行数与代码总行数的比值,确定为待检测源文件的代码注释率。
[0071]
需要说明的,代码注释率的确定装置确定待检测源文件的代码注释率可以根据如下公式计算。
[0072][0073]
其中,p为代码注释率,s为注释总行数,d为代码总行数。
[0074]
在一些实施例中,代码注释率的确定装置在确定待检测源文件的代码注释率后,基于树的数据结构遍历待检测源文件所属的文件夹中所有源文件的代码注释率,并将每个源文件的代码注释率以文件的形式输出。
[0075]
在一些实施例中,代码注释率的确定装置确定待检测源文件所属的文件夹内,所有源文件的注释总行数,以及代码总行数,并确定所属文件夹中的总注释总行数以及总代码总行数。进一步的,代码注释率的确定装置根据总注释总行数以及总代码总行数,确定所属文件夹的代码注释率。
[0076]
需要说明的,代码注释率的确定装置确定文件夹的代码注释率也可以采用上述公式,将总注释总行数替代上述注释总行数,将总代码总行数替换上述代码总行数,即可得到该文件夹的代码注释率。
[0077]
可以理解的,本技术提供的代码注释率的确定方法中,代码注释率的确定装置在获取待检测源文件后,通过智能匹配源程序中多种语言的注释符号特点,在确定到待检测源文件的注释总行数以及代码总行数后,自动地识别并计算出多种语言的代码注释率情况,实现了多种语言环境下的代码注释率确定。
[0078]
在一种设计中,为了使确定到的代码总行数更加准确,本技术实施例提供的代码注释率的确定方法,如图3所示,还包括s301-s302。
[0079]
s301、代码注释率的确定装置确定待检测源文件中每一行的扫描结果。
[0080]
其中,扫描结果中包括该行是否为空行。
[0081]
作为一种可能的实现方式,代码注释率的确定装置在扫描待检测源文件程序中的每一行,通过检查每一行是否存在字符确定该行是否为空行。
[0082]
s302、代码注释率的确定装置在第一扫描结果为非空行的情况下,基于预设增量调整代码总行数。
[0083]
其中,第一扫描结果为待检测源文件中任意一行的扫描结果。
[0084]
作为一种可能的实现方式,代码注释率的确定装置在确定第一扫描结果对应的行为非空行的情况下,确定该行存在字符,进而在前确定代码总行数的基础上基于预设增量调整代码总行数,得到统计该行代码行数之后的代码总行数。
[0085]
需要说明的,在第一扫描结果为空行的情况下,代码总行数以及注释总行数不变。
[0086]
需要说明的,预设增量可以由代码注释率的确定装置的运维人员预先在代码注释率的确定装置中设置,本技术实施例对此不作具体限定。示例性的,预设增量可以为1,在扫描结果为非空行的情况下,代码总行数加1。
[0087]
在一种设计中,为了使确定到的注释总行数更加准确,本技术实施例提供的代码注释率的确定方法,如图4所示,还包括s401-s402。
[0088]
s401、代码注释率的确定装置在第一扫描结果为非空行的情况下,确定第一扫描结果中包括的注释符号。
[0089]
作为一种可能的实现方式,代码注释率的确定装置在扫描行为非空行的情况下,进一步识别改行中存在的字符是否有上述步骤s202中确定到的注释符号。
[0090]
示例性的,若代码注释率的确定装置在上述步骤s202中确定到的注释符号包括“//”、“/*和*/”、“/**和*/”,在确定到扫描结果指示待检测源文件中的行为非空行的情况下,代码注释率的确定装置基于注释符号“//”、“/*和*/”、“/**和*/”与该行存在的字符进行匹配,若匹配到相应符号,则将匹配到的字符确定为第一扫描结果中包括的注释符号。
[0091]
s402、代码注释率的确定装置在注释符号为单行注释符号或多行注释结束符号的情况下,基于预设增量调整注释总行数。
[0092]
作为一种可能的实现方式,代码注释率的确定装置确定上述步骤s402中确定到的注释符号是否为该编程语言的单行注释符号或多行注释结束符号。进一步的,代码注释率的确定装置在确定注释符号为单行注释符号或多行注释结束符号的情况下,在前确定注释总行数的基础上基于预设增量调整注释总行数,得到统计该行注释行数之后的注释总行数。
[0093]
需要说明的,由于多行注释也是用于注释一行代码,且为了避免在多行注释中,存在空行,或者多行中的某些行中仅有简单的一两个字符,故在多行注释的情况下,在识别到多行注释结束符号才统计为一行注释。
[0094]
可以理解的,本技术实施例提供的代码注释率的确定方法中,通过上述注释总行数的统计规则,能够确定出更准确的注释总行数。
[0095]
在一种设计中,为了检测代码的注释质量,本技术实施例提供的代码注释率的确定方法,如图5所示,还包括s501-s503。
[0096]
s501、代码注释率的确定装置获取待检测源文件包括的多个注释语句。
[0097]
作为一种可能的实现方式,代码注释率的在确定待检测源文件的代码注释率后,已确定了待检测源文件中存在的注释语句,从待检测源文件中调取注释语句。
[0098]
示例性的,若代码注释率的确定装置在确定待检测源文件的代码注释率时,确定待检测源文件中的第6、10、15、17行存在注释语句,则代码注释率的确定装置从待检测源文件的程序中第6、10、15、17行调取注释符号后的注释语句。
[0099]
s502、代码注释率的确定装置基于多个注释语句中的每个注释语句,以及预设聚类模型,确定每个注释语句对应的注释分数。
[0100]
作为一种可能的实现方式,代码注释率的确定装置将待检测源文件中的多个注释语句输入预设聚类模型。在预设聚类模型中,将多个注释语句分为优良簇和非优良簇,进一步的,确定优良簇中的每个注释语句与优良簇之间的平均欧式距离,以及非优良簇中的每个注释语句与非优良簇之间的平均欧式距离。进一步的,代码注释率的确定装置在得到每个注释语句与所属簇之间的平均欧式距离后,根据得到的平均欧式距离以及预设相似度阈值,确定每个注释语句对应的的注释分数。
[0101]
需要说明的,上述预设聚类模型可以采用k均值聚类算法,该预设聚类模型的训练过程如下s1-s3所示。
[0102]
s1、获取样本数据。
[0103]
将从知名软件企业发布的开源项目中,得到的代码注释数据集,确定为优良样本;将从不受监管的代码管理平台以及初学者代码管理平台,得到的代码注释数据集,确定为非优良样本。
[0104]
s2、数据预处理。
[0105]
从优良样本以及非优良样本中,分别随机选取75%的注释语句用于训练集,以实现对于预设聚类模型的初始训练;剩余25%的注释语句用于测试集,用于在对预设聚类模型的初始训练后,对预设聚类模型进行测试,并将测试结果反馈与预设聚类模型,进而实现优化预设聚类模型。
[0106]
s3、建立模型。
[0107]
基于无监督学习的机器学习算法,在训练结束后,得到聚类为两类(优良、非优良)的预设聚类模型。
[0108]
需要说明的,上述确定优良簇中的每个注释语句与优良簇之间的平均欧式距离,以及非优良簇中的每个注释语句与非优良簇之间的平均欧式距离,可以采用如下公式进行确定。
[0109][0110]
其中,σ为注释语句到所属簇的平均欧式距离,x为注释语句经预设聚类模型转化后的点,yi为注释语句所属簇中的每个注释语句经预设聚类模型转化后的点,n为注释语句所属簇中注释语句的数量。
[0111]
需要说明的,在优良簇中,平均欧式距离越小代码注释质量越高,在非优良簇中,平均欧式距离越小代码注释质量越差。
[0112]
上述代码注释率的确定装置根据得到的平均欧式距离以及预设相似度阈值,确定每个注释语句对应的注释分数,具体包括:在优良簇中,若注释语句的平均欧式距离小于或等于预设相似度阈值,则确定该注释语句的注释质量为极好,对应的注释分数为100分,若注释语句的平均欧式距离大于于预设相似度阈值,则认为该注释语句的注释质量为好,对应的注释分数为80分。在非优良簇中,若注释语句的平均欧式距离小于或等于预设相似度阈值,则确定该注释语句的注释质量为极差,对应的注释分数为40分,若注释语句的平均欧式距离大于于预设相似度阈值,则认为该注释语句的注释质量为差,对应的注释分数为60分。
[0113]
s503、代码注释率的确定装置根据每个注释语句对应的注释分数确定待检测源文
件的注释指标。
[0114]
其中,注释指标用于表征待检测源文件的注释的质量。
[0115]
作为一种可能的实现方式,代码注释率的确定装置在得到待检测源文件多个注释语句中每个注释语句对应的注释分数后,确定多个注释语句的平均注释分数,并将该平均注释分数确定为待检测源文件的注释指标。
[0116]
可以理解的,本技术实施例提供的代码注释率的确定方法中,通过检测源文件中每个注释语句对应的注释分数,进而得到用于表征源文件注释质量的注释指标,在确定代码注释率的基础上能够确定代码注释质量,有助于运维人员对于低质量的代码注释进行调整,提高源文件的可读性。
[0117]
在一种设计中,为了帮助开发人员及乙方对代码注释率较低的源文件中补充注释,本技术实施例提供的代码注释率的确定方法中,如图6所示,还包括s601-s602。
[0118]
s601、代码注释率的确定装置在代码注释率小于预设阈值的情况下,确定待检测源文件中包括的函数的函数名。
[0119]
作为一种可能的实现方式,代码注释率的确定装置基于s205中确定到的待检测源文件的代码注释率,以及预设阈值,判断代码注释率是否小于预设阈值。进一步的,代码注释率的确定装置在待检测源文件的代码注释率小于预设阈值的情况下,确定待检测源文件中包括的函数,并确定函数的函数名。
[0120]
在一些实施例中,为避免代码注释率的确定装置确定待检测源文件中包括的函数时,被空行影响而无法检测到所有函数,故首先将待检测源文件中的空行替换为空。进一步的,扫描字符串为正则表达式(.*)+{.*}结构的字符串,并确定该正则表达式前的字符串是否为for或if。进一步的,代码注释率的确定装置将正则表达式前不为for或if的字符串确定为待检测源文件中包括的函数的函数名。
[0121]
s602、代码注释率的确定装置显示代码注释率,以及待检测源文件中包括的函数的函数名。
[0122]
作为一种可能的实现方式,代码注释率的确定装置将识别到的函数名,以列表的形式追加在待检测源文件的检测结果中,检测结果包括待检测源文件的标识、代码注释率、函数名。
[0123]
示例性的,若待检测源文件的标识为a,代码注释率为50%,函数名包括b、c、d、e。则代码注释率的显示内容可以如下表4所示。
[0124]
表4:显示内容表
[0125]
待检测源文件的标识代码注释率函数名a50%b、c、d、e
[0126]
可以理解的,本技术实施例提供的上述代码注释率的确定方法中,在待检测源文件的代码注释率较低的情况下,将该待检测源文件中的函数名输出,以帮助开发人员及乙方对代码注释率较低的代码行主要函数的注释进行补充。
[0127]
在一种设计中,为了获取待检测源文件,本技术实施例提供的代码注释率的确定方法中,如图7所示,还包括s701-s703。
[0128]
s701、代码注释率的确定装置确定待检测源文件夹中的第一源文件是否为异常文件类型。
[0129]
其中,第一源文件为待检测源文件夹所包括的多个源文件中的任意一个。
[0130]
代码注释率的确定装置确定待检测源文件夹中的第一源文件是否为异常文件类型,包括:
[0131]
s7011、代码注释率的确定装置确定第一源文件的编码类型。
[0132]
作为一种可能的实现方式,代码注释率的确定装置通过编译器检测第一源文件的编码类型。
[0133]
示例性的,编码类型可以为美国信息交换标准代码(american standard code for information interchange,ascii)、统一码转换格式(unicode transformation format-8,utf-8)、utf-16、utf32、gb2312等。
[0134]
s7012、代码注释率的确定装置根据第一源文件的编码类型,确定第一源文件是否为异常文件类型。
[0135]
作为一种可能的实现方式,代码注释率的确定装置确认内部所配置的编码类型集合。进一步的,代码注释率的确定装置确定第一源文件的编码类型是否包含于内部所配置的编码类型集合中。
[0136]
若第一源文件的编码类型包含于内部所配置的编码类型集合中,则确定第一源文件不为异常文件类型;
[0137]
若第一源文件的编码类型不包含于内部所配置的编码类型集合中,则确定第一源文件为异常文件类型。
[0138]
s702、代码注释率的确定装置在第一源文件为异常文件类型的情况下,发出告警。
[0139]
需要说明的,代码注释率的确定装置在确定第一源文件为异常文件类型时,可以通过连接的显示器发出告警,也可以通过音响设备发出告警,还可以通过向服务器发送指示第一源文件为异常文件类型的指示信息,以使得服务器进行告警。本技术实施例对此不作具体限定。
[0140]
s703、代码注释率的确定装置在第一源文件不为异常文件类型的情况下,将第一源文件确定为待检测源文件。
[0141]
可以理解的,本技术实施例提供的上述代码注释率的确定方法中,通过检测源文件的编码类型是否预先配置,避免在确定代码注释率时,由于编码类型未提前配置而导致识别错误,进而不能确定代码注释率。
[0142]
本技术提供的代码注释率的确定方法中,代码注释率的确定装置在获取待检测源文件后,通过智能匹配源程序中多种语言的注释符号特点,在确定到待检测源文件的注释总行数以及代码总行数后,自动地识别并计算出多种语言的代码注释率情况,实现了多种语言环境下的代码注释率确定。
[0143]
上述主要从方法的角度对本技术实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本技术实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0144]
本技术实施例可以根据上述方法示例对用户设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。可选的,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0145]
图8为本技术实施例提供的一种代码注释率的确定装置的结构示意图。该代码注释率的确定装置用于执行上述代码注释率的确定方法。如图8所示,该代码注释率的确定装置80包括处理单元801以及确定单元802。
[0146]
处理单元801,用于识别待检测源文件的后缀名。例如,如图2所示,处理单元801可以用于执行s201。
[0147]
确定单元802,用于根据待检测源文件的后缀名,确定待检测源文件对应的注释符号。例如,如图2所示,确定单元802可以用于执行s202。
[0148]
确定单元802,还用于确定待检测源文件中的代码总行数。例如,如图2所示,确定单元802可以用于执行s203。
[0149]
确定单元802,还用于根据注释符号,确定待检测源文件中的注释总行数。例如,如图2所示,确定单元802可以用于执行s204。
[0150]
确定单元802,还用于根据代码总行数以及注释总行数,确定待检测源文件的代码注释率。例如,如图2所示,确定单元802可以用于执行s205。
[0151]
可选的,如图8所示,本技术实施例提供的代码注释率的确定装置80中,确定单元802,具体用于确定待检测源文件中每一行的扫描结果。例如,如图3所示,确定单元802可以用于执行s301。
[0152]
在第一扫描结果为空行的情况下,代码总行数以及注释总行数不变,第一扫描结果为待检测源文件中任意一行的扫描结果;
[0153]
在第一扫描结果为非空行的情况下,基于预设增量调整代码总行数。例如,如图3所示,确定单元802可以用于执行s302。
[0154]
可选的,如图8所示,本技术实施例提供的代码注释率的确定装置80中,确定单元802,具体用于在第一扫描结果为非空行的情况下,确定第一扫描结果中包括的注释符号。例如,如图4所示,确定单元802可以用于执行s401。
[0155]
在注释符号为单行注释符号或多行注释结束符号的情况下,基于预设增量调整注释总行数。例如,如图4所示,确定单元802可以用于执行s402。
[0156]
可选的,如图8所示,本技术实施例提供的代码注释率的确定装置80中,还包括获取单元803。
[0157]
获取单元803,用于获取待检测源文件所包括的多个注释语句。例如,如图5所示,获取单元803可以用于执行s501。
[0158]
确定单元802,还用于基于多个注释语句中的每个注释语句,以及预设聚类模型,确定每个注释语句对应的注释分数。例如,如图5所示,确定单元802可以用于执行s502。
[0159]
确定单元802,还用于根据每个注释语句对应的注释分数确定待检测源文件的注释指标,注释指标用于表征待检测源文件的注释的质量。例如,如图5所示,确定单元802可以用于执行s503。
[0160]
可选的,如图8所示,本技术实施例提供的代码注释率的确定装置80中,还包括显示单元804。
[0161]
确定单元802,还用于在代码注释率小于预设阈值的情况下,确定待检测源文件中包括的函数的函数名。例如,如图6所示,确定单元802可以用于执行s601。
[0162]
显示单元804,用于显示代码注释率,以及待检测源文件中包括的函数的函数名。例如,如图6所示,显示单元804可以用于执行s602。
[0163]
可选的,如图8所示,本技术实施例提供的代码注释率的确定装置80中,还包括告警单元805。
[0164]
确定单元,还用于确定待检测源文件夹中的第一源文件是否为异常文件类型,第一源文件为待检测源文件夹所包括的多个源文件中的任意一个。例如,如图7所示,确定单元802可以用于执行s701。
[0165]
告警单元,用于在第一源文件为异常文件类型的情况下,发出告警。例如,如图7所示,告警单元805可以用于执行s702。
[0166]
确定单元,还用于在第一源文件不为异常文件类型的情况下,将第一源文件确定为待检测源文件。例如,如图7所示,确定单元802可以用于执行s703。
[0167]
可选的,如图8所示,本技术实施例提供的代码注释率的确定装置80中,确定单元802,具体用于确定第一源文件的编码类型;根据第一源文件的编码类型,确定第一源文件是否为异常文件类型。
[0168]
在采用硬件的形式实现上述集成的模块的功能的情况下,本技术实施例提供了一种代码注释率的确定设备的一种可能的结构示意图。该代码注释率的确定设备用于执行上述实施例中代码注释率的确定装置执行的代码注释率的确定方法。如图9所示,该代码注释率的确定设备90包括处理器901,存储器902以及总线903。处理器901与存储器902之间可以通过总线903连接。
[0169]
处理器901是代码注释率的确定设备的控制中心,可以是一个处理器,也可以是多个处理元件的统称。例如,处理器901可以是一个通用中央处理单元(central processing unit,cpu),也可以是其他通用处理器等。其中,通用处理器可以是微处理器或者是任何常规的处理器等。
[0170]
作为一种实施例,处理器901可以包括一个或多个cpu,例如图9中所示的cpu 0和cpu 1。
[0171]
存储器902可以是只读存储器(read-only memory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
[0172]
作为一种可能的实现方式,存储器902可以独立于处理器901存在,存储器902可以通过总线903与处理器901相连接,用于存储指令或者程序代码。处理器901调用并执行存储器902中存储的指令或程序代码时,能够实现本技术实施例提供的代码注释率的确定方法。
[0173]
另一种可能的实现方式中,存储器902也可以和处理器901集成在一起。
[0174]
总线903,可以是工业标准体系结构(industry standard architecture,isa)总线、外围设备互连(peripheral component interconnect,pci)总线或扩展工业标准体系结构(extended industry standard architecture,eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0175]
需要指出的是,图9示出的结构并不构成对该代码注释率的确定设备90的限定。除图9所示部件之外,该代码注释率的确定设备90可以包括比图9示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0176]
作为一个示例,结合图8,代码注释率的确定装置80中的处理单元801、确定单元802、获取单元803、显示单元804以及告警单元805实现的功能与图9中的处理器901的功能相同。
[0177]
可选的,如图9所示,本技术实施例提供的代码注释率的确定设备还可以包括通信接口904。
[0178]
通信接口904,用于与其他设备通过通信网络连接。该通信网络可以是以太网,无线接入网,无线局域网(wireless local area networks,wlan)等。通信接口904可以包括用于接收数据的获取单元,以及用于发送数据的发送单元。
[0179]
在一种设计中,本技术实施例提供的代码注释率的确定设备中,通信接口还可以集成在处理器中。
[0180]
图10示出了本技术实施例中代码注释率的确定设备的另一种硬件结构。如图10所示,代码注释率的确定设备100可以包括处理器1001以及通信接口1002。处理器1001与通信接口1002耦合。
[0181]
处理器1001的功能可以参考上述处理器901的描述。此外,处理器1001还具备存储功能,可以参考上述存储器902的功能。
[0182]
通信接口1002用于为处理器1001提供数据。该通信接口1002可以是代码注释率的确定设备的内部接口,也可以是代码注释率的确定设备对外的接口(相当于通信接口904)。
[0183]
需要指出的是,图10中示出的结构并不构成对代码注释率的确定设备的限定,除图10所示部件之外,该代码注释率的确定设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0184]
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能单元的划分进行举例说明。在实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将装置的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0185]
本技术实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当计算机执行该指令时,该计算机执行上述方法实施例所示的方法流程中的各个步骤。
[0186]
本技术的实施例提供一种包含指令的计算机程序产品,当指令在计算机上运行时,使得计算机执行上述方法实施例中的代码注释率的确定方法。
[0187]
其中,计算机可读存储介质,例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷
举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘。随机存取存储器(random access memory,ram)、只读存储器(read-only memory,rom)、可擦式可编程只读存储器(erasable programmable read only memory,eprom)、寄存器、硬盘、光纤、便携式紧凑磁盘只读存储器(compact disc read-only memory,cd-rom)、光存储器件、磁存储器件、或者上述的人以合适的组合、或者本领域数值的任何其他形式的计算机可读存储介质。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于特定用途集成电路(application specific integrated circuit,asic)中。在本技术实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0188]
由于本技术的实施例中的装置、设备计算机可读存储介质、计算机程序产品可以应用于上述方法,因此,其所能获得的技术效果也可参考上述方法实施例,本技术实施例在此不再赘述。
[0189]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应该以权利要求的保护范围为准。

技术特征:


1.一种代码注释率的确定方法,其特征在于,所述方法包括:识别待检测源文件的后缀名;根据所述待检测源文件的后缀名,确定所述待检测源文件对应的注释符号;确定所述待检测源文件中的代码总行数;根据所述注释符号,确定所述待检测源文件中的注释总行数;根据所述代码总行数以及所述注释总行数,确定所述待检测源文件的代码注释率。2.根据权利要求1所述的代码注释率的确定方法,其特征在于,所述确定所述待检测源文件中的代码总行数,包括:确定所述待检测源文件中每一行的扫描结果;在第一扫描结果为空行的情况下,所述代码总行数以及所述注释总行数不变,所述第一扫描结果为所述待检测源文件中任意一行的扫描结果;在所述第一扫描结果为非空行的情况下,基于预设增量调整所述代码总行数。3.根据权利要求2所述的代码注释率的确定方法,其特征在于,所述根据所述注释符号,确定所述待检测源文件中的注释总行数,包括:在所述第一扫描结果为非空行的情况下,确定所述第一扫描结果中包括的所述注释符号;在所述注释符号为单行注释符号或多行注释结束符号的情况下,基于所述预设增量调整所述注释总行数。4.根据权利要求1-3中任意一项所述的代码注释率的确定方法,其特征在于,所述方法还包括:获取所述待检测源文件所包括的多个注释语句;基于所述多个注释语句中的每个注释语句,以及预设聚类模型,确定所述每个注释语句对应的注释分数;根据所述每个注释语句对应的注释分数确定所述待检测源文件的注释指标,所述注释指标用于表征所述待检测源文件的注释的质量。5.根据权利要求1-3中任意一项所述的代码注释率的确定方法,其特征在于,所述方法还包括:在所述代码注释率小于预设阈值的情况下,确定所述待检测源文件中包括的函数的函数名;显示所述代码注释率,以及所述待检测源文件中包括的函数的函数名。6.根据权利要求1-3中任意一项所述的代码注释率的确定方法,其特征在于,在所述识别待检测源文件的后缀名之前,所述方法还包括:确定待检测源文件夹中的第一源文件是否为异常文件类型,所述第一源文件为所述待检测源文件夹所包括的多个源文件中的任意一个;在所述第一源文件为异常文件类型的情况下,发出告警;在所述第一源文件不为异常文件类型的情况下,将所述第一源文件确定为所述待检测源文件。7.根据权利要求6所述的代码注释率的确定方法,其特征在于,所述确定待检测源文件夹中第一源文件是否为异常文件类型,包括:
确定所述第一源文件的编码类型;根据所述第一源文件的编码类型,确定所述第一源文件是否为异常文件类型。8.一种代码注释率的确定装置,其特征在于,包括处理单元以及确定单元;所述处理单元,用于识别待检测源文件的后缀名;所述确定单元,用于根据所述待检测源文件的后缀名,确定所述待检测源文件对应的注释符号;所述确定单元,还用于确定所述待检测源文件中的代码总行数;所述确定单元,还用于根据所述注释符号,确定所述待检测源文件中的注释总行数;所述确定单元,还用于根据所述代码总行数以及所述注释总行数,确定所述待检测源文件的代码注释率。9.根据权利要求8所述的代码注释率的确定装置,其特征在于,所述确定单元,具体用于确定所述待检测源文件中每一行的扫描结果;在第一扫描结果为空行的情况下,所述代码总行数以及所述注释总行数不变,所述第一扫描结果为所述待检测源文件中任意一行的扫描结果;在所述第一扫描结果为非空行的情况下,基于预设增量调整所述代码总行数。10.根据权利要求9所述的代码注释率的确定装置,其特征在于,所述确定单元,具体用于在所述第一扫描结果为非空行的情况下,确定所述第一扫描结果中包括的所述注释符号;在所述注释符号为单行注释符号或多行注释结束符号的情况下,基于所述预设增量调整所述注释总行数。11.根据权利要求8-10中任意一项所述的代码注释率的确定装置,其特征在于,所述代码注释率的确定装置还包括获取单元;所述获取单元,用于获取所述待检测源文件所包括的多个注释语句;所述确定单元,还用于基于所述多个注释语句中的每个注释语句,以及预设聚类模型,确定所述每个注释语句对应的注释分数;所述确定单元,还用于根据所述每个注释语句对应的注释分数确定所述待检测源文件的注释指标,所述注释指标用于表征所述待检测源文件的注释的质量。12.根据权利要求8-10中任意一项所述的代码注释率的确定装置,其特征在于,所述代码注释率的确定装置还包括显示单元;所述确定单元,还用于在所述代码注释率小于预设阈值的情况下,确定所述待检测源文件中包括的函数的函数名;所述显示单元,用于显示所述代码注释率,以及所述待检测源文件中包括的函数的函数名。13.根据权利要求8-10中任意一项所述的代码注释率的确定装置,其特征在于,所述代码注释率的确定装置还包括告警单元;所述确定单元,还用于确定待检测源文件夹中的第一源文件是否为异常文件类型,所述第一源文件为所述待检测源文件夹所包括的多个源文件中的任意一个;所述告警单元,用于在所述第一源文件为异常文件类型的情况下,发出告警;所述确定单元,还用于在所述第一源文件不为异常文件类型的情况下,将所述第一源
文件确定为所述待检测源文件。14.根据权利要求13所述的代码注释率的确定装置,其特征在于,所述确定单元,具体用于确定所述第一源文件的编码类型;根据所述第一源文件的编码类型,确定所述第一源文件是否为异常文件类型。15.一种代码注释率的确定设备,其特征在于,包括存储器和处理器;所述存储器和所述处理器耦合;所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令;当所述处理器执行所述计算机指令时,所述代码注释率的确定设备执行如权利要求1-7中任意一项所述的代码注释率的确定方法。16.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,其特征在于,当所述指令在代码注释率的确定设备上运行时,使得所述代码注释率的确定设备执行如权利要求1-7中任意一项所述的代码注释率的确定方法。

技术总结


本申请提供一种代码注释率的确定方法、装置、设备及存储介质,涉及软件工程领域,用于对源文件程序中的代码注释率进行确定,包括:代码注释率的确定装置识别待检测源文件的后缀名;并根据待检测源文件的后缀名确定待检测源文件对应的注释符号。进一步的,代码注释率的确定装置确定待检测源文件中的代码总行数;并根据注释符号,确定待检测源文件中的注释总行数。最后,代码注释率的确定装置根据代码总行数以及注释总行数,确定待检测源文件的代码注释率。释率。释率。


技术研发人员:

王亚 南作用 李莉

受保护的技术使用者:

中讯邮电咨询设计院有限公司

技术研发日:

2022.09.26

技术公布日:

2023/1/19


文章投稿或转载声明

本文链接:http://www.wtabcd.cn/zhuanli/patent-1-79716-0.html

来源:专利查询检索下载-实用文体写作网版权所有,转载请保留出处。本站文章发布于 2023-01-26 13:41:01

发表评论

验证码:
用户名: 密码: 匿名发表
评论列表 (有 条评论
2人围观
参与讨论