掌桥专利:专业的专利平台
掌桥专利
首页

多维度可视化统计代码行数的方法及系统

文献发布时间:2023-06-19 19:30:30


多维度可视化统计代码行数的方法及系统

技术领域

本发明涉及数据统计技术领域,具体地,涉及一种多维度可视化统计代码行数的方法及系统。

背景技术

目前已有使用代码统计工具进行自动代码统计的方式,但是没有与代码开发语言等信息结合进行多维度分析,也没有进行可视化展示,不能满足多维度分析展示整体代码变化情况的需求。

公开号为CN108446135A的专利文献公开了一种代码行数统计方法及装置,所述方法包括在满足预定的代码行数统计条件时,生成代码行数统计指令,并通过以下处理过程响应该指令:基于所述目标分支代码对应的版本树,获得所述目标分支代码的第一版本文件及第二版本文件,统计所述第二版本文件相比于所述第一版本文件的差异代码行的行数,并将统计出的代码行数与所述第二版本文件的提交人员信息进行关联。但是该专利文献统计内容较为单一,仅为结合员工信息的代码行数变化情况,没有整体进行多维度的分析,也没有可视化展示统计内容。

公开号为CN112000362A的专利文献公开了一种统计Java源文件代码行数的方法及系统,包括如下步骤:(1)当Java虚拟机开始加载类文件,实时获取已被加载的类文件数组;(2)根据目标类文件的特征参数判断已获取到的所述类文件数组中是否包含有所述目标类文件,若是,则进入步骤(3),若否,则返回步骤(1),其中所述目标类文件是需要统计代码行数的源文件编译后的类文件,所述目标类文件的特征参数被预先添加在Java虚拟机;(3)获取所述目标类文件中所有实例方法和静态方法的字节码信息,并从所述字节码信息中得到对应的行号字段值并比较出最大行号值,进而得到需要统计代码行数的源文件的代码行数。但是该专利文献仍然存在没有整体进行多维度的分析的缺陷。

发明内容

针对现有技术中的缺陷,本发明的目的是提供一种多维度可视化统计代码行数的方法及系统。

根据本发明提供的一种多维度可视化统计代码行数的方法,包括如下步骤:

步骤1:维护代码库信息;

步骤2:根据所述代码库信息,搭建代码统计环境;

步骤3:在所述代码统计环境下,定时统计代码行数,获得代码行数统计数据;

步骤4:多维度分析可视化展示所述代码行数统计数据。

优选的,所述步骤1包括如下步骤:

步骤1.1:维护需要统计的所述代码库信息,将所述代码库信息在系统进行注册登记;

步骤1.2:提供查询代码库信息的接口,返回需要统计代码行数的步骤1.1中所述的代码库信息。

优选的,所述步骤1.1中,所述代码库信息包括代码库地址、账号、密码、分支、以及代码库类型。

优选的,所述步骤2包括如下步骤:

步骤2.1:根据所述代码库信息,搭建jenkins环境,以jenkins作为执行代码统计任务的载体;

步骤2.2:在步骤2.1搭建的所述jenkins环境中,集成cloc代码统计工具,使用所述cloc代码统计工具统计代码行数。

优选的,所述步骤3包括如下步骤:

步骤3.1:提供保存代码统计数据的接口,所述接口将采集日期、代码库、开发语言、代码行数以及注释数保存到数据库中;

步骤3.2:在步骤2.1中所述jenkins环境中,创建jenkins任务;

步骤3.3:在所述jenkins环境中设置步骤3.2创建的所述jenkins任务的触发周期为每天触发,持续采集代码行数。

优选的,所述步骤3.2中,所述jenkins任务通过编写jenkins pipeline脚本实现。

优选的,所所述jenkins pipeline脚本内容为:

步骤3.2.1:调用步骤1.2提供的查询代码库信息的接口,获取代码库信息;

步骤3.2.2:循环处理获取到的所有所述的代码库信息,调用jenkins pipeline的语法实现代码拉取;

步骤3.2.3:调用cloc--json命令对拉取的代码进行代码行数的统计,指定输出为json格式的统计数据;

步骤3.2.4:将所述json格式的统计数据作为参数,调用步骤3.1提供的保存代码统计数据的接口,将相关信息保存到数据库中;

步骤3.2.5:调用jenkins pipeline的语法实现已完成处理的代码的清理工作。

优选的,所述步骤4包括如下步骤:

步骤4.1:基于步骤3获得的代码行数统计数据,进行多维度分析,得到代码总行数、整体开发语言占比以及近期代码趋势变化;

步骤4.2:使用数据可视化框架echarts,将步骤4.1得到的数据以折线图、柱状图等图形方式可视化展现出来。

优选的,所述步骤4.1中,根据代码库和代码行数进行相关排行,得到代码总行数排行和本月新增代码行数排行。

本发明还提供一种多维度可视化统计代码行数的系统,包括如下模块:

维护模块:维护代码库信息;

搭建模块:根据所述代码库信息,搭建代码统计环境;

统计模块:在所述代码统计环境下,定时统计代码行数,获得代码行数统计数据;

展示模块:多维度分析可视化展示所述代码行数统计数据。

与现有技术相比,本发明具有如下的有益效果:

1、本发明通过通过定时采集代码行数信息,将采集到的信息存储到数据库中,在此基础上进行多维度数据统计,进而对整体的多维度分析;

2、本发明的统计过程不需要人工参与,具有高效的统计效率;

3、本发明的统计结果能多维度进行分析,以图形化方式可视化展示,更为生动直观。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明的多维度可视化统计代码行数的方法的流程图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

实施例1:

本实施例提供一种多维度可视化统计代码行数的方法,包括如下步骤:

步骤1:维护代码库信息,包括如下步骤:

步骤1.1:维护需要统计的代码库信息,代码库信息包括代码库地址、账号、密码、分支、以及代码库类型,将代码库信息在系统进行注册登记;

步骤1.2:提供查询代码库信息的接口,返回需要统计代码行数的步骤1.1中的代码库信息。

步骤2:根据代码库信息,搭建代码统计环境,包括如下步骤:

步骤2.1:根据代码库信息,搭建jenkins环境,以jenkins作为执行代码统计任务的载体;

步骤2.2:在步骤2.1搭建的jenkins环境中,集成cloc代码统计工具,使用cloc代码统计工具统计代码行数。

步骤3:在代码统计环境下,定时统计代码行数,获得代码行数统计数据,包括如下步骤:

步骤3.1:提供保存代码统计数据的接口,接口将采集日期、代码库、开发语言、代码行数以及注释数保存到数据库中;

步骤3.2:在步骤2.1中jenkins环境中,创建jenkins任务,jenkins任务通过编写jenkins pipeline脚本实现;jenkins pipeline脚本内容为:

步骤3.2.1:调用步骤1.2提供的查询代码库信息的接口,获取代码库信息;

步骤3.2.2:循环处理获取到的所有的代码库信息,调用jenkins pipeline的语法实现代码拉取;

步骤3.2.3:调用cloc--json命令对拉取的代码进行代码行数的统计,指定输出为json格式的统计数据;

步骤3.2.4:将json格式的统计数据作为参数,调用步骤3.1提供的保存代码统计数据的接口,将相关信息保存到数据库中;

步骤3.2.5:调用jenkins pipeline的语法实现已完成处理的代码的清理工作;

步骤3.3:在jenkins环境中设置步骤3.2创建的jenkins任务的触发周期为每天触发,持续采集代码行数。

步骤4:多维度分析可视化展示代码行数统计数据,包括如下步骤:

步骤4.1:基于步骤3获得的代码行数统计数据,进行多维度分析,得到代码总行数、整体开发语言占比以及近期代码趋势变化,根据代码库和代码行数进行相关排行,得到代码总行数排行和本月新增代码行数排行;

步骤4.2:使用数据可视化框架echarts,将步骤4.1得到的数据以折线图、柱状图等图形方式可视化展现出来。

实施例2:

本实施例提供一种多维度可视化统计代码行数的系统,其特征在于,包括如下模块:

维护模块:维护代码库信息。维护需要统计的代码库信息,代码库信息包括代码库地址、账号、密码、分支、以及代码库类型,将代码库信息在系统进行注册登记,提供查询代码库信息的接口,返回需要统计代码行数的上述的代码库信息。

搭建模块:根据代码库信息。搭建代码统计环境,根据代码库信息,搭建jenkins环境,以jenkins作为执行代码统计任务的载体,在上述的jenkins环境中,集成cloc代码统计工具,使用cloc代码统计工具统计代码行数。

统计模块:在代码统计环境下。定时统计代码行数,获得代码行数统计数据,提供保存代码统计数据的接口,接口将采集日期、代码库、开发语言、代码行数以及注释数保存到数据库中,在上述的jenkins环境中,创建jenkins任务,jenkins任务通过编写jenkinspipeline脚本实现。jenkins pipeline脚本内容为:调用上述提供的查询代码库信息的接口,获取代码库信息;循环处理获取到的所有的代码库信息,调用jenkins pipeline的语法实现代码拉取;调用cloc--json命令对拉取的代码进行代码行数的统计,指定输出为json格式的统计数据;将json格式的统计数据作为参数,调用上述提供的保存代码统计数据的接口,将相关信息保存到数据库中;调用jenkins pipeline的语法实现已完成处理的代码的清理工作;在jenkins环境中设置上述创建的jenkins任务的触发周期为每天触发,持续采集代码行数。

展示模块:多维度分析可视化展示代码行数统计数据。基于上述获得的代码行数统计数据,进行多维度分析,得到代码总行数、整体开发语言占比以及近期代码趋势变化,根据代码库和代码行数进行相关排行,得到代码总行数排行和本月新增代码行数排行;使用数据可视化框架echarts,将上述得到的数据以折线图、柱状图等图形方式可视化展现出来。

本实施例提供的一种多维度可视化统计代码行数的系统,通过定时采集代码行数信息,包括开发语言、注释行数、代码行数、文件数等内容,将采集到的信息存储到数据库中,在此基础上进行多维度数据统计,计算代码总行数,另外通过可视化报表,展示整体开发语言占比、近期代码量趋势变化、本月新增代码行数排行、代码总行数排行等信息;通过集成jenkins流水线以及使用cloc代码统计工具,可以自动化实现拉取代码、统计代码行数、解析统计数据、保存统计数据、清理代码的整个过程,无需人工参与,且采集的代码行数数据可以进行多维度分析、可视化展示。

实施例3:

本领域技术人员可以将本实施例理解为实施例1、实施例2的更为具体的说明。

如图1所示,本实施例提供一种多维度可视化统计代码行数的方法,包括如下步骤:

步骤1:维护代码库信息。代码库信息包括代码库地址、分支、代码库类型(git、svn等)、代码库账号以及密码。代码库是存放源代码的中央仓库,主流的代码库根据类型可以区分为git或者svn,git是一个分布式版本控制系统,svn是集中式版本控制系统,两者都可以进行源代码的管理。根据实际使用情况,将需要统计代码的代码库信息在系统进行维护,同时提供查询代码库信息的接口,返回所有需要统计代码的代码库信息。

步骤2:搭建代码统计环境。以jenkins作为载体,集成cloc代码统计工具,进行代码统计。jenkins是一个可扩展的持续集成引擎,可以持续构建软件项目。利用jenkins可定时构建软件项目的特性,可作为持续统计代码行数任务的实现工具。cloc(count lines ofcode),是一款使用Perl语言开发的开源代码统计工具,支持多平台使用、多语言识别,能够计算指定目标文件或文件夹中的文件数(files)、空白行数(blank)、注释行数(comment)和代码行数(code)。cloc能够从源码文件中识别编程语言注释定义,允许通过语言和项目来分开统计计算,能够以纯文本、xml、yaml、json等多样化的格式生成统计结果。利用cloc完善的特性,可以直接使用进行代码统计相关工作。

步骤3:定时统计代码行数。在jenkins创建任务,该任务通过编写jenkinspipeline脚本实现,完成代码统计工作。jenkins pipeline的实现方式是一套Groovy DSL(类似Gradle),任何发布流程都可以表述为一段Groovy脚本,通过该脚本执行复杂的构建过程。该脚本的内容包括调用系统接口获取需要统计的代码库信息,从代码库拉取代码,执行cloc命令以json格式生成代码统计结果,将代码统计结果返回系统解析,保存到数据库中。统计完成后进行代码的清理。同时在jenkins设置该统计任务,每天运行一次,以达到持续统计的效果。

步骤4:多维度分析可视化展示代码行数统计数据。基于步骤3采集的代码行数相关数据,包括采集日期、代码库、开发语言、代码行数、注释数等数据,聚合分析可以得到代码总行数、整体开发语言占比、近期代码量趋势变化、本月新增代码行数排行、代码总行数排行等信息,结合数据可视化框架echarts,将相关数据以折线图、柱状图等图形方式可视化展现出来。echarts是一款基于JavaScript的数据可视化图表库,提供直观、生动、可交互、可个性化定制的数据可视化图表。

步骤1包含以下步骤:

步骤1.1:维护需要统计的代码库基本信息,包括代码库地址、账号、密码、分支、代码库类型等信息,在系统进行注册登记;

步骤1.2:提供查询代码库信息的接口,返回需要统计代码行数的代码库信息,即步骤1.1维护的数据信息。

步骤2包含以下步骤:

步骤2.1:搭建jenkins环境,以jenkins作为执行代码统计任务的载体;

步骤2.2:在步骤2.1搭建的jenkins环境中,集成cloc代码统计工具,使用cloc代码统计工具统计代码行数。

步骤3包含以下步骤:

步骤3.1:系统提供保存代码统计数据的接口,该接口作用是将采集日期、代码库、开发语言、代码行数、注释数等数据保存到数据库中;

步骤3.2:在jenkins创建任务,该任务通过编写jenkins pipeline脚本实现,该脚本内容为先调用步骤1.2提供的获取代码库信息的接口,获取代码库信息;循环处理获取到的所有代码库信息,调用jenkins pipeline的语法实现代码拉取;再调用cloc--json命令进行代码行数的统计,指定输出为json格式的统计数据;将该json格式的统计数据作为参数,调用步骤3.1提供的保存代码统计数据的接口,将相关信息保存到数据库中;最后再调用jenkins pipeline的语法实现代码的清理工作;

步骤3.3:在jenkins设置步骤3.2创建的jenkins任务的触发周期为每天触发,达到持续采集代码行数的效果。

步骤4包含以下步骤:

步骤4.1:基于步骤3采集的代码行数数据,进行多维度分析,得到代码总行数、整体开发语言占比、近期代码趋势变化等情况,也可以根据代码库、代码行数进行相关排行,得到代码总行数排行、本月新增代码行数排行等信息;

步骤4.2:使用数据可视化框架echarts,将步骤4.1得到的数据以折线图、柱状图等图形方式可视化展现出来。

本发明通过搭建基于jenkins和cloc代码统计工具的代码行数统计系统,将软件企业的核心资产源代码的行数信息,以自动化的方式持续进行采集,根据采集的代码行数信息,多维度分析统计,以可视化的方式展示统计结果,展示企业代码行数、开发语言、注释行数、文件数等数据的变化情况。整个统计过程不需要人工参与,具有高效的统计效率,且统计结果能多维度进行分析,以图形化方式可视化展示,更为生动直观。

本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

技术分类

06120115930689