源代码统计分析方法和系统的制作方法_2

文档序号:8430507阅读:来源:国知局
客户端20向第一服务器110发送源代码统计分析请求,作为响应,第一服务器110对统计分析请求进行解析并且将统计分析任务分配给合适的第二服务器120。另一方面,当第二服务器120完成统计分析操作后,统计分析结果由第一服务器110返回所请求的客户端。第一服务器110具有与各种类型终端的客户端20进行交互的能力,可用的客户端类型例如包括但不限于PC机、笔记本电脑和手机等。优选地,第一服务器110可以是Web服务器,用户可借助客户端20上运行的浏览器访问第一服务器110提供的Web页面。当用户成功登录第一服务器110后即可输入统计分析请求。该请求例如可以包括待分析的代码模块名称和统计口径。统计口径例如包括下列中的至少一项:待分析代码模块的指定生成日期、标签(版本号)、需要比较变化情况的指定时间段的起点和终点等。
[0035]在本实施例中,第一服务器110由接受自客户端20的源代码统计分析请求生成统计分析参数。这里的统计分析参数包含待分析的代码模块及其所属代码库的标识符,由此,第一服务器110可确定存储与待分析的代码模块相关联的源代码文件的第二服务器120。
[0036]当需要特定日期或特定版本的代码模块的统计分析结果时,第一服务器110将待分析代码模块的指定生成日期或指定版本号发送给第二服务器120。作为响应,第二服务器120例如通过扫描代码库索引,根据指定生成日期或指定版本号生成文件列表,随后调取文件列表中的源代码文件进行统计分析以生成统计分析结果并经第一服务器110返回给客户端20。
[0037]另一方面,当需要关于待分析代码模块在指定时间段内的变化的统计分析结果时,第一服务器110将指定时间段的时间起点和终点发送给第二服务器120。作为响应,第二服务器120通过扫描代码库索引,根据指定的时间起点和终点生成文件列表,随后调取文件列表中的源代码文件进行统计分析以生成统计分析结果并且经第一服务器110将结果返回给客户端20。
[0038]在本实施例中,统计分析结果例如可以是与待分析模块相关联的每个源代码文件中的有效代码行、注释行和空行的数量或其变化情况的分类汇总信息。
[0039]在本实施例中,第二服务器120可以通过开启多线程,并行地获取文件列表中的多个文件。
[0040]图2为按照本发明一个实施例的源代码统计分析方法的流程图。示例性地,这里假设采用图1所示的源代码统计分析系统的结构,但是从下面的描述中将会认识到,本实施例的方法并不依赖于特定的结构。
[0041]如图2所示,在步骤S201,第一服务器110接收用户经客户端20发送的源代码统计分析请求,该请求例如可以包括待分析的代码模块名称和统计口径。在本实施例中,统计口径为待分析代码模块的指定生成日期或标签(版本号)。
[0042]接着进入步骤S202,第一服务器110对统计分析请求进行解析以提取待分析代码模块的名称及其所属的代码库、指定生成日期或版本号,并且确定存储了所提取的代码模块和代码库的第二服务器120的IP地址。
[0043]随后进入步骤S203,第一服务器110将待分析代码模块和所属代码库的标识符、指定生成日期或版本号发送给在步骤S202中确定的第二服务器120。
[0044]作为响应,在步骤S204中,第二服务器120例如通过扫描代码库索引,根据指定生成日期或版本号生成文件列表并且获取文件列表中的文件。优选地,第二服务器120可以通过开启多线程,并行地获取文件列表中的文件,其中,线程数可根据文件列表中的文件数量以及服务器的CPU数量等确定。
[0045]随后进入步骤S205,第二服务器120确定文件列表中是否存在尚未统计分析的文件,如果存在,则进入步骤S206,否则,则进入步骤S207。
[0046]在步骤S206,第二服务器120判断当前被分析的文件是否为文本文件,如果是文本文件,则表明其可能是源代码文件,因此进入步骤S208,否则,则返回步骤S205。
[0047]在步骤S208,第二服务器120根据当前被分析文件的后缀名确定其所属的编程语言类型。
[0048]随后进入步骤S209,第二服务器120将当前被分析文件加载到其自身的内存中,并且调用相应的语法分析器(比如C语言分析器、Java语言分析器等)对该文件进行分析,从而得到该文件的有效代码行、注释行和空行数。
[0049]接着进入步骤S210,第二服务器120对语法分析器得到的分析结果进行分类汇总。具体而言,例如将当前被分析文件的有效代码行、注释行和空行数累加到各自的统计项目下,从而得到待分析代码模块的源代码的总计有效代码行、总计注释行和总计空行数等。
[0050]完成步骤S210之后,图2所示的流程将返回步骤S205。
[0051]现在考察步骤S205的另一个分支,即步骤S207。在该步骤中,第一服务器110从第二服务器120接收分类汇总结果并且返回所请求的客户端20。
[0052]图3为按照本发明另一个实施例的代码行统计分析方法的流程图。示例性地,这里假设采用图1所示的源代码统计分析系统来实现本实施例,但是从下面的描述中将会认识到,本实施例的方法并不依赖于特定结构的源代码统计分析系统。
[0053]如图3所示,在步骤S301,第一服务器110接收用户经客户端20发送的源代码统计分析请求,该请求例如可以包括待分析的代码模块名称和统计口径。在本实施例中,统计口径为在指定时间段(这里以时间起点和终点表示)内待分析代码模块的变化情况等。
[0054]接着进入步骤S302,第一服务器110对统计分析请求进行解析以提取待分析代码模块的名称及其所属的代码库、指定时间段的起点和终点,并且确定存储了所提取的代码模块和代码库的第二服务器120的IP地址。
[0055]随后进入步骤S303,第一服务器110将待分析代码模块和所属代码库的标识符、指定时间段的起点和终点等发送给在步骤S302中确定的第二服务器120。
[0056]作为响应,在步骤S304中,第二服务器120例如通过扫描代码库索引,根据指定时间段的起点和终点生成文件列表并且获取文件列表中的文件。同样,第二服务器120可以根据文件列表中的文件数量以及服务器的CPU数量等开启多个线程,从而并行地获取文件列表中的文件。
[0057]随后进入步骤S305,第二服务器120确定文件列表中是否存在尚未统计分析的文件,如果存在,则进入步骤S306,否则,则进入步骤S307。
[0058]在步骤S306,第二服务器120判断当前被分析的文件是否为文本文件,如果是文本文件,则表明其可能是源代码文件,因此进入步骤S308,否则,则返回步骤S305。
[0059]在步骤S308,第二服务器120判断当前被分析文件的属性是属于新增文件类型、修改文件类型还是删除文件类型,如果属于新增文件类型,则进入步骤S309A,如果属于修改文件类型,则进入步骤S310A,如果属于删除文件类型,则进入步骤S311A。
[0060]在步骤S309A中,第二服务器120将当前被分析文件的对应于时间终点的版本加载到其自身的内存中,并且调用相应的语法分析器(比如C语言分析器、Java语言分析器等)统计该版本的总的代码行数量,从而得到新增代码行数量。随后进入步骤S309B,第二服务器120将语法分析器得到的新增代码行数量累加到相应的统计项目下。
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1