CN108920182A - 一种新型源代码统计分析方法和系统 - Google Patents

一种新型源代码统计分析方法和系统 Download PDF

Info

Publication number
CN108920182A
CN108920182A CN201810712446.5A CN201810712446A CN108920182A CN 108920182 A CN108920182 A CN 108920182A CN 201810712446 A CN201810712446 A CN 201810712446A CN 108920182 A CN108920182 A CN 108920182A
Authority
CN
China
Prior art keywords
code
source code
statistical analysis
server
file
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.)
Withdrawn
Application number
CN201810712446.5A
Other languages
English (en)
Inventor
胡石
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hefei Weishangquan Information Technology Co ltd
Original Assignee
Hefei Weishangquan Information Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hefei Weishangquan Information Technology Co ltd filed Critical Hefei Weishangquan Information Technology Co ltd
Priority to CN201810712446.5A priority Critical patent/CN108920182A/zh
Publication of CN108920182A publication Critical patent/CN108920182A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及计算机软件开发技术,特别涉及一种新型源代码统计分析方法和系统,按照本发明一个实施例的源代码统计分析方法包括下列步骤:第一服务器根据接收自客户端的源代码统计分析请求生成统计分析参数,所述统计分析参数包含待分析的代码模块及其所属代码库的标识符;所述第一服务器选定相应的第二服务器,所述相应的第二服务器存储与所述待分析的代码模块相关联的源代码文件;所述相应的第二服务器在本地对所述相关联的源代码文件进行统计分析;以及所述相应的第二服务器经所述第一服务器将统计分析结果返回给所述客服端。

Description

一种新型源代码统计分析方法和系统
发明领域
本发明涉及计算机软件开发技术,特别涉及一种新型源代码统计分析方法和系统。
背景技术
随着计算机技术广泛应用到社会生活的各个领域,软件开发需求 持续攀升。软件开发是根据用户要求建造出软件系统或者系统中的软 件部分的过程,其包括需求分析、设计、实现和测试等环节。随着软 件日益复杂,开发过程中管理的重要性愈来愈重要。
现有的软件项目开发过程一般借助通用的源码版本管理软件进 行代码管理。Microsoft Visual SourceSafe是美国微软公司出品的一 种版本控制系统,其旨在解决软件开发中面临的版本管理问题,以便 有效地对项目程序进行管理。该控制系统将所有的项目源代码文件 (包括各种文件类型)以特有的方式存入数据库,开发组成员不能对 该数据库中的文件进行直接的修改,而是由该版本管理器将该项目的 源程序或是子项目的源程序拷贝到各个成员自己的工作目录下进行 调试和修改,然后将修改后的项目文件作Checkin提交给VSS,由它 进行综合更新。CVS(Concurrent Version System)是另一种常用的代 码版本控制软件,其主要用于在多人开发环境下的源码的维护。实际 上CVS可以维护任意文档的开发和使用,例如共享文件的编辑修改, 而不仅仅局限于程序设计。CVS维护的文件类型可以是文本类型也 可以是二进制类型。CVS基于客户端/服务器的行为使其可容纳多个 用户。这一特性使得CVS成为位于不同地点的人同时处理数据文件 (特别是程序的源代码)时的首选。
代码行统计分析是项目管理过程中对开发工作量、效率及质量评 估的一项重要手段,但是上述代码管理系统无法快速、全面和准确地 获得源代码的统计分析信息。
发明内容
本发明的一个目的是提供一种源代码统计分析方法,其能够快 速、全面和准确地获得源代码的统计分析结果。
按照本发明一个实施例的源代码统计分析方法包括下列步骤:
第一服务器根据接收自客户端的源代码统计分析请求生成统计 分析参数,所述统计分析参数包含待分析的代码模块及其所属代码库 的标识符;
所述第一服务器选定相应的第二服务器,所述相应的第二服务器 存储与所述待分析的代码模块相关联的源代码文件;
所述相应的第二服务器在本地对所述相关联的源代码文件进行 统计分析;以及
所述相应的第二服务器经所述第一服务器将统计分析结果返回 给所述客服端。
优选地,在上述源代码统计分析方法中,所述统计分析参数还包 含所述待分析的代码模块的指定生成日期或指定版本号,并且所述相 应的第二服务器按照下列方式在本地对所述相关联的源代码文件进 行统计分析:
通过扫描代码库索引获取与具有所述指定生成日期或指定版本 号的待分析的代码模块相关联的文件列表;
对于所述文件列表中的每个源代码文件,将其加载到本地内存中 并且根据其所属的源代码类型调用相应的语法分析器统计其中的有 效代码行、注释行和空行的数量;
将所述每个源代码文件中的有效代码行、注释行和空行的数量分 类汇总以生成所述统计分析结果。
更好地,在上述源代码统计分析方法中,通过开启多线程来并行 地统计多个源代码文件的有效代码行、注释行和空行的数量。
优选地,在上述源代码统计分析方法中,所述统计分析参数还包 含所述待分析的代码模块的指定时间起点和终点,并且所述相应的第 二服务器按照下列方式在本地对所述相关联的源代码文件进行统计 分析:
通过扫描代码库索引获取与生成日期在所述指定时间起点与终 点之间的待分析的代码模块相关联的文件列表;
对于所述文件列表中的每个源代码文件,将其加载到本地内存中 并且根据其所属的源代码类型调用相应的语法分析器统计该源代码 文件的有效代码行、注释行和空行的数量变化;
将所述每个源代码文件中的有效代码行、注释行和空行的数量变 化分类汇总以生成所述统计分析结果。
更好地,在上述源代码统计分析方法中,通过开启多线程来并行 地获取所述文件列表中的文件。
本发明的还有一个目的是提供一种源代码统计分析系统,其能够 快速、全面和准确地获得源代码的统计分析结果。
按照本发明一个实施例的源代码统计分析系统包括第一服务器 和与所述第一服务器相连的第二服务器,其中,所述第一服务器配置 为从客户端接收源代码统计分析请求,并且根据由所述源代码统计分 析请求生成的统计分析参数选定相应的第二服务器,所述统计分析参 数包含待分析的代码模块及其所属代码库的标识符,所述相应的第二 服务器存储与所述待分析的代码模块相关联的源代码文件,所述相应 的第二服务器配置为在本地对所述相关联的源代码文件进行统计分 析并且所述第一服务器将统计分析结果返回给所述客服端。
在现有技术中。待分析的源代码首先需要从服务器端拷贝到客户 端,然后由用户通过图形界面选定本地代码文件路径和代码类型,最 后才能得到出源代码文件中的有效代码行、注释行及空行数量或变化 等分析结果。按照本发明的上述实施例,对源代码的统计分析在服务 器端进行,因此不仅降低了网络传输耗时,而且也提高了源代码管理 的安全性和统计分析结果的精准度。特别是对于不同标签及版本之间 的源代码改动情况,按照本发明的上述实施例能够准确统计出新增代 码行、修改代码行、删除代码行数,从而为软件的优化和修改提供所 需的数据统计分析结果。
附图说明
从结合附图的以下详细说明中,将会使本发明的上述和其它目的 及优点更加完全清楚。
图1为按照本发明一个实施例的源代码统计分析系统的架构示 意图。
图2为按照本发明一个实施例的源代码统计分析方法的流程图。
图3为按照本发明另一个实施例的源代码统计分析方法的流程 图。
具体实施方式
下面参照其中图示了本发明示意性实施例的附图更为全面地说 明本发明。但本发明可以按不同形式来实现,而不应解读为仅限于本 文给出的各实施例。给出的上述各实施例旨在使本文的披露全面完 整,从而使对本发明保护范围的理解更为全面和准确。
诸如“包含”和“包括”之类的用语表示除了具有在说明书和权 利要求书中有直接和明确表述的单元和步骤以外,本发明的技术方案 也不排除具有未被直接或明确表述的其它单元和步骤的情形。
诸如“第一”和“第二”之类的用语并不表示单元在时间、空间、 大小等方面的顺序而仅仅是作区分各单元之用。
以下借助附图具体描述本发明的实施例。
图1为按照本发明一个实施例的源代码统计分析系统的架构示 意图。
如图1所示,按照本发明一个实施例的源代码统计分析系统10 包括一个第一服务器110和多个第二服务器120。示例性地,图中包 含1个第一服务器110和3个第二服务器120,但是第一和第二服务 器的数量并不局限于此,实际上其可以是其它的数字。
在本实施例中,第一服务器110与客户端20和第二服务器120 相连,客户端20向第一服务器110发送源代码统计分析请求,作为 响应,第一服务器110对统计分析请求进行解析并且将统计分析任务 分配给合适的第二服务器120。另一方面,当第二服务器120完成统计分析操作后,统计分析结果由第一服务器110返回所请求的客户 端。第一服务器110具有与各种类型终端的客户端20进行交互的能 力,可用的客户端类型例如包括但不限于PC机、笔记本电脑和手机 等。优选地,第一服务器110可以是Web服务器,用户可借助客户 端20上运行的浏览器访问第一服务器110提供的Web页面。当用户 成功登录第一服务器110后即可输入统计分析请求。该请求例如可以 包括待分析的代码模块名称和统计口径。统计口径例如包括下列中的 至少一项:待分析代码模块的指定生成日期、标签(版本号)、需要 比较变化情况的指定时间段的起点和终点等。
在本实施例中,第一服务器110由接受自客户端20的源代码统 计分析请求生成统计分析参数。这里的统计分析参数包含待分析的代 码模块及其所属代码库的标识符,由此,第一服务器110可确定存储 与待分析的代码模块相关联的源代码文件的第二服务器120。
当需要特定日期或特定版本的代码模块的统计分析结果时,第一 服务器110将待分析代码模块的指定生成日期或指定版本号发送给 第二服务器120。作为响应,第二服务器120例如通过扫描代码库索 引,根据指定生成日期或指定版本号生成文件列表,随后调取文件列 表中的源代码文件进行统计分析以生成统计分析结果并经第一服务 器110返回给客户端20。
另一方面,当需要关于待分析代码模块在指定时间段内的变化的 统计分析结果时,第一服务器110将指定时间段的时间起点和终点发 送给第二服务器120。作为响应,第二服务器120通过扫描代码库索 引,根据指定的时间起点和终点生成文件列表,随后调取文件列表中 的源代码文件进行统计分析以生成统计分析结果并且经第一服务器 110将结果返回给客户端20。
在本实施例中,统计分析结果例如可以是与待分析模块相关联的 每个源代码文件中的有效代码行、注释行和空行的数量或其变化情况 的分类汇总信息。
在本实施例中,第二服务器120可以通过开启多线程,并行地获 取文件列表中的多个文件。
图2为按照本发明一个实施例的源代码统计分析方法的流程图。 示例性地,这里假设采用图1所示的源代码统计分析系统的结构,但 是从下面的描述中将会认识到,本实施例的方法并不依赖于特定的结 构。
如图2所示,在步骤S201,第一服务器110接收用户经客户端 20发送的源代码统计分析请求,该请求例如可以包括待分析的代码 模块名称和统计口径。在本实施例中,统计口径为待分析代码模块的 指定生成日期或标签(版本号)。
接着进入步骤S202,第一服务器110对统计分析请求进行解析 以提取待分析代码模块的名称及其所属的代码库、指定生成日期或版 本号,并且确定存储了所提取的代码模块和代码库的第二服务器120 的IP地址。
随后进入步骤S203,第一服务器110将待分析代码模块和所属 代码库的标识符、指定生成日期或版本号发送给在步骤S202中确定 的第二服务器120。
作为响应,在步骤S204中,第二服务器120例如通过扫描代码 库索引,根据指定生成日期或版本号生成文件列表并且获取文件列表 中的文件。优选地,第二服务器120可以通过开启多线程,并行地获 取文件列表中的文件,其中,线程数可根据文件列表中的文件数量以 及服务器的CPU数量等确定。
随后进入步骤S205,第二服务器120确定文件列表中是否存在 尚未统计分析的文件,如果存在,则进入步骤S206,否则,则进入 步骤S207。
在步骤S206,第二服务器120判断当前被分析的文件是否为文 本文件,如果是文本文件,则表明其可能是源代码文件,因此进入步 骤S208,否则,则返回步骤S205。
在步骤S208,第二服务器120根据当前被分析文件的后缀名确 定其所属的编程语言类型。
随后进入步骤S209,第二服务器120将当前被分析文件加载到 其自身的内存中,并且调用相应的语法分析器(比如C语言分析器、 Java语言分析器等)对该文件进行分析,从而得到该文件的有效代 码行、注释行和空行数。
接着进入步骤S210,第二服务器120对语法分析器得到的分析 结果进行分类汇总。具体而言,例如将当前被分析文件的有效代码行、 注释行和空行数累加到各自的统计项目下,从而得到待分析代码模块 的源代码的总计有效代码行、总计注释行和总计空行数等。
完成步骤S210之后,图2所示的流程将返回步骤S205。
现在考察步骤S205的另一个分支,即步骤S207。在该步骤中, 第一服务器110从第二服务器120接收分类汇总结果并且返回所请求 的客户端20。
图3为按照本发明另一个实施例的代码行统计分析方法的流程 图。示例性地,这里假设采用图1所示的源代码统计分析系统来实现 本实施例,但是从下面的描述中将会认识到,本实施例的方法并不依 赖于特定结构的源代码统计分析系统。
如图3所示,在步骤S301,第一服务器110接收用户经客户端 20发送的源代码统计分析请求,该请求例如可以包括待分析的代码 模块名称和统计口径。在本实施例中,统计口径为在指定时间段(这 里以时间起点和终点表示)内待分析代码模块的变化情况等。
接着进入步骤S302,第一服务器110对统计分析请求进行解析 以提取待分析代码模块的名称及其所属的代码库、指定时间段的起点 和终点,并且确定存储了所提取的代码模块和代码库的第二服务器 120的IP地址。
随后进入步骤S303,第一服务器110将待分析代码模块和所属 代码库的标识符、指定时间段的起点和终点等发送给在步骤S302中 确定的第二服务器120。
作为响应,在步骤S304中,第二服务器120例如通过扫描代码 库索引,根据指定时间段的起点和终点生成文件列表并且获取文件列 表中的文件。同样,第二服务器120可以根据文件列表中的文件数量 以及服务器的CPU数量等开启多个线程,从而并行地获取文件列表 中的文件。
随后进入步骤S305,第二服务器120确定文件列表中是否存在 尚未统计分析的文件,如果存在,则进入步骤S306,否则,则进入 步骤S307。
在步骤S306,第二服务器120判断当前被分析的文件是否为文 本文件,如果是文本文件,则表明其可能是源代码文件,因此进入步 骤S308,否则,则返回步骤S305。
在步骤S308,第二服务器120判断当前被分析文件的属性是属 于新增文件类型、修改文件类型还是删除文件类型,如果属于新增文 件类型,则进入步骤S309A,如果属于修改文件类型,则进入步骤 S310A,如果属于删除文件类型,则进入步骤S311A。
在步骤S309A中,第二服务器120将当前被分析文件的对应于时 间终点的版本加载到其自身的内存中,并且调用相应的语法分析器 (比如C语言分析器、Java语言分析器等)统计该版本的总的代码 行数量,从而得到新增代码行数量。随后进入步骤S309B,第二服务 器120将语法分析器得到的新增代码行数量累加到相应的统计项目 下。
在步骤S310A中,第二服务器120将当前被分析文件对应于时间 起点的版本和对应于时间终点的版本都加载到其自身的内存中,并且 调用相应的差异分析器对两个文件进行比较分析,从而得到在后版本 相对于在前版本的新增代码行数量、删除代码行数量和被修改代码行 数量。随后进入步骤S310B,第二服务器120对步骤S310A得到的新 增代码行数量、删除代码行数量和被修改代码行数量分别累加到相应 的统计项目下。
在步骤S311A中,第二服务器120将当前被分析文件的对应于时 间起点的版本加载到其自身的内存中,并且调用相应的语法分析器 (比如C语言分析器、Java语言分析器等)统计该版本的总的代码 行数量,从而得到被删除代码行数量。随后进入步骤S311B,第二服 务器120将语法分析器得到的被删除代码行量累加到相应的统计项 目下。
如图3所示,步骤S309B、S310B和S311B完成之后流程都返回 步骤S305。
现在考察步骤S305的另一个分支,即步骤S307。在该步骤中, 第一服务器110从第二服务器120接收分类汇总结果并且返回所请求 的客户端20。
本发明的实施例具有下列优点。
由于统计分析均在代码库服务器端完成,因此节省了网络带宽和 本地存储空间。
需要用户输入的信息少,统计过程无需人工参与,可按要求输出 统计结果,且结果准确。
多线程处理技术的引入使得程序性能大大提升,耗时仅需人工统 计的1/10到1/100。
由于可以在不背离本发明基本精神的情况下,以各种形式实施本 发明,因此上面描述的具体实施方式仅是说明性的而不是限制性的。 本发明的范围由所附权利要求定义,对上面描述方式所作的各种变化 或变动都属于所附权利要求的保护范围。

Claims (5)

1. 一种新型源代码统计分析方法和系统,其特征在于,包括下列步骤:第一服务器根据接收自客户端的源代码统计分析请求生成统计 分析参数,所述统计分析参数包含待分析的代码模块及其所属代码库 的标识符;所述第一服务器选定相应的第二服务器,所述相应的第二服务器 存储与所述待分析的代码模块相关联的源代码文件;所述相应的第二服务器在本地对所述相关联的源代码文件进行 统计分析;以及所述相应的第二服务器经所述第一服务器将统计分析结果返回 给所述客服端。
2.根据权利要求1所述的一种新型源代码统计分析方法和系统,其中,所述统计 分析参数还包含所述待分析的代码模块的指定生成日期或指定版本 号,并且所述相应的第二服务器按照下列方式在本地对所述相关联的 源代码文件进行统计分析:通过扫描代码库索引获取与具有所述指定生成日期或指定版本 号的待分析的代码模块相关联的文件列表;对于所述文件列表中的每个源代码文件,将其加载到本地内存中 并且根据其所属的源代码类型调用相应的语法分析器统计其中的有 效代码行、注释行和空行的数量;将所述每个源代码文件中的有效代码行、注释行和空行的数量分 类汇总以生成所述统计分析结果。
3.根据权利要求1所述的一种新型源代码统计分析方法和系统,其中,通过开启 多线程来并行地统计多个源代码文件的有效代码行、注释行和空行的 数量。
4.根据权利要求1所述的一种新型源代码统计分析方法和系统,其中,所述统计 分析参数还包含所述待分析的代码模块的指定时间起点和终点,并且 所述相应的第二服务器按照下列方式在本地对所述相关联的源代码 文件进行统计分析:通过扫描代码库索引获取与生成日期在所述指定时间起点与终 点之间的待分析的代码模块相关联的文件列表;对于所述文件列表中的每个源代码文件,将其加载到本地内存中 并且根据其所属的源代码类型调用相应的语法分析器统计该源代码 文件的有效代码行、注释行和空行的数量变化;将所述每个源代码文件中的有效代码行、注释行和空行的数量变 化分类汇总以生成所述统计分析结果。
5.根据权利要求1所述的一种新型源代码统计分析方法和系统,其中,通过开启 多线程来并行地获取所述文件列表中的文件。
CN201810712446.5A 2018-06-29 2018-06-29 一种新型源代码统计分析方法和系统 Withdrawn CN108920182A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810712446.5A CN108920182A (zh) 2018-06-29 2018-06-29 一种新型源代码统计分析方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810712446.5A CN108920182A (zh) 2018-06-29 2018-06-29 一种新型源代码统计分析方法和系统

Publications (1)

Publication Number Publication Date
CN108920182A true CN108920182A (zh) 2018-11-30

Family

ID=64424536

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810712446.5A Withdrawn CN108920182A (zh) 2018-06-29 2018-06-29 一种新型源代码统计分析方法和系统

Country Status (1)

Country Link
CN (1) CN108920182A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110442526A (zh) * 2019-08-14 2019-11-12 海闻科技有限公司 一种有效代码的计数方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110442526A (zh) * 2019-08-14 2019-11-12 海闻科技有限公司 一种有效代码的计数方法

Similar Documents

Publication Publication Date Title
CN104750469B (zh) 源代码统计分析方法和系统
US10997531B2 (en) System, method and graphical user interface for workflow generation, deployment and/or execution
CN101620536B (zh) 一种调用功能函数的方法和装置
US20090070121A1 (en) System, Method And Graphical User Interface For Workflow Generation, Deployment And/Or Execution
CN105723335A (zh) 数据流探索
CN103678446B (zh) 基于数据视图和数据库表的改进的模式映射
US7403985B2 (en) Method and system for analyzing electronic service execution
CN109299157A (zh) 一种分布式大单表的数据导出方法及装置
CN109740129B (zh) 基于区块链的报表生成方法、装置、设备及可读存储介质
CN110956269A (zh) 数据模型的生成方法、装置、设备以及计算机存储介质
CN111176867A (zh) 数据共享交换及开放应用平台
CN107301179A (zh) 数据库读写分离的方法和装置
CN113849492B (zh) 为多场景业务提供标准化数据质量校验的系统
CN116048987A (zh) 流程业务的处理方法、装置、电子设备、系统和存储介质
CN113836237A (zh) 对数据库的数据操作进行审计的方法及装置
Rantala et al. Prevalence, contents and automatic detection of KL-SATD
CN112905492B (zh) 验证方法及装置
US9009098B1 (en) Methods and apparatus for creating a centralized data store
CN108920182A (zh) 一种新型源代码统计分析方法和系统
CN113918534A (zh) 一种策略处理系统及方法
CN105630997A (zh) 一种数据并行处理方法、装置及设备
CN101520861A (zh) 数据事件发送方法和装置以及事件处理系统
US9098613B2 (en) Logging of application messages
CN109033196A (zh) 一种分布式数据调度系统及方法
CN113283742A (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
WW01 Invention patent application withdrawn after publication

Application publication date: 20181130

WW01 Invention patent application withdrawn after publication