一种基于版本库比较的PC-Lint代码检查结果筛选方法

文档序号:6543346阅读:122来源:国知局
一种基于版本库比较的PC-Lint代码检查结果筛选方法
【专利摘要】一种基于版本库比较的PC-Lint代码检查结果筛选方法,涉及软件测试【技术领域】,包括以下步骤:通过命令行方式调用控制台程序;获取传入的参数的配置文件;再对配置文件进行分析,获取输出结果格式化的字符串;根据所述字符串的格式来定义正则表达式;将所述传入的参数传递给PC-Lint后台检查,然后截获其检查结果;通过与版本库对比,获取代码差异信息,当所述分段信息中获取的代码行号属于改动行时,将该行代码的分段信息纳入输出序列;待整个输出结果筛选完成后,将输出序列中的分段信息呈现给用户。由于利用控制台程序预先对PC-Lint的检查结果进行了筛选,最终只显示与改动行代码相关的检查结果,因此简单直观,有利于提高代码编写质量与效率。
【专利说明】—种基于版本库比较的PC-Lint代码检查结果筛选方法
【技术领域】
[0001]本发明涉及软件测试【技术领域】,具体的说是一种基于版本库比较的PC-Lint代码检查结果筛选方法。
【背景技术】
[0002]PC-Lint是一款优秀的C/C++软件代码静态检查工具,它不仅能够对程序进行全局分析,识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针以及冗余的代码,还能够有效地帮你提出许多程序在空间利用、运行效率上的改进点。其运行模式为控制台模式,输出内容可通过管道命令存入文本文件中,或被调用它的程序进行捕获输出。
[0003]在C语言软件产品开发过程中,经常会用到PC-Lint工具对编写的代码进行检查,来找出代码中潜在的问题。PC-Lint在对代码检查时,会对编译所需要的代码都进行检查,但是在开发时,经常会用到第三方代码,而这部分代码的检查结果我们并不需要,也不会对这部分代码进行修改。因此,在PC-Lint的输出结果中包含大量的第三方代码,导致无法快速准确的找到与修改过的代码相关的内容。

【发明内容】

[0004]针对现有技术中存在的缺陷,本发明的目的在于提供一种基于版本库比较的PC-Lint代码检查方法,用于方便查看改动代码相关的静态检查结果。
[0005]为达到以上目的,本发明采取的技术方案是:一种基于版本库比较的PC-Lint代码检查结果筛选方法,包括以下步骤:步骤1:通过命令行方式调用控制台程序,所述控制台程序的调用方式与PC-Lint的调用方式相同;步骤2:所述控制台程序获取传入的参数的配置文件;再对配置文件进行分析,获取输出结果格式化的字符串;步骤3:所述控制台程序根据所述字符串的格式来定义正则表达式,并通过变量记录所述字符串中的文件名称和代码行号出现的顺序;步骤4:所述控制台程序将所述传入的参数传递给PC-Lint后台检查,然后截获其检查结果,通过所述正则表达式计算所述检查结果,将检查结果中的信息进行分段,然后通过所述变量所记录的顺序,从所述分段信息中获取文件名称和代码行号;步骤5:所述控制台程序通过版本库与所述分段信息中获取的文件名称和代码行号对比,获取代码差异信息,当所述分段信息中获取的代码行号属于改动行时,将该行代码的分段信息纳入输出序列;步骤6:待整个输出结果筛选完成后,将输出序列中的分段信息呈现给用户。
[0006]在上述技术方案的基础上,所述步骤2中,所述传入的参数包括配置文件参数和非配置文件参数,所述配置文件参数不包含短横线,所述非配置文件参数必须包含短横线。
[0007]在上述技术方案的基础上,所述步骤2中,所述配置文件为逐层嵌套形式,即所述配置文件至少包含2层,其中内层的配置文件依次嵌套在外层的配置文件中。
[0008]在上述技术方案的基础上,所述步骤2中,递归读取所述配置文件,获取输出结果格式化的字符串。
[0009]在上述技术方案的基础上,所述获取输出结果格式化的字符串的具体步骤如下:S201:读取配置文件;S202:获取输出结果格式化的字符串;S203:判断所述配置文件是否包含其他的配置文件,若否,则进入S204 ;若是,则进入S201 ;S204:配置文件是否结束,若否,则进入S201 ;若是,则进入S205 ;S205:确定输出结果格式化的字符串。
[0010]在上述技术方案的基础上,所述步骤2中,若所述配置文件中不包含输出结果格式化的字符串,则使用默认的输出格式。
[0011]在上述技术方案的基础上,所述步骤5中,当通过版本库获取代码差异信息发生错误时,将该检查结果全部纳入输出序列。
[0012]在上述技术方案的基础上,所述步骤5中,所述版本库是指存放软件代码的文件数据库。
[0013]在上述技术方案的基础上,所述步骤5中,当分段信息中获取的代码行号不属于改动行时,忽略该行代码的分段信息。
[0014]本发明的有益效果在于:
[0015]1、由于本发明基于版本库比较的PC-Lint代码检查方法,由于利用控制台程序预先对PC-Lint的检查结果进行了筛选,最终只显示与改动行代码相关的检查结果,因此简单直观,有利于提高代码编写质量与效率。
[0016]2、由于本发明基于版本库比较的PC-Lint代码检查方法,所述控制台程序的调用方式与PC-Lint的调用方式相同,因此用户能够保持原有操作习惯。
【专利附图】

【附图说明】
[0017]图1是本发明基于版本库比较的PC-Lint代码检查方法的流程图;
[0018]图2是递归读取配置文件的逻辑示意图。
【具体实施方式】
[0019]以下结合附图对本发明作进一步详细说明。
[0020]如图1所示,一种基于版本库比较的PC-Lint代码检查结果筛选方法,包括以下步骤:
[0021]步骤1:通过命令行方式调用控制台程序,所述控制台程序的调用方式与PC-Lint的调用方式相同。
[0022]步骤2:所述控制台程序对传入的参数逐个进行分析,获取其中的配置文件;所述传入的参数包括配置文件参数和非配置文件参数,所述配置文件参数不包含短横线,所述非配置文件参数必须包含短横线。所述配置文件为逐层嵌套形式,即所述配置文件至少包含2层,其中内层的配置文件依次嵌套在外层的配置文件中。所述控制台程序递归读取所述配置文件,对配置文件进行分析,获取输出结果格式化的字符串。若所述配置文件中不包含输出结果格式化的字符串,则使用默认的输出格式。
[0023]步骤3:所述控制台程序根据所述字符串的格式来定义正则表达式,并通过变量记录所述字符串中的文件名称和代码行号出现的顺序;其中,任何所述配置文件中都可以包含“-format”的输出格式字符串定义,用来决定每一行的代码检查结果字段的排列顺序,但只有最后一个“-format”才会起作用,之前读取的“-format”配置会被忽略。
[0024]步骤4:所述控制台程序将所述传入的参数传递给PC-Lint后台检查,然后截获其检查结果,通过所述正则表达式计算所述检查结果,将检查结果中的信息进行分段,然后通过所述变量所记录的顺序,从所述分段信息中获取文件名称和代码行号。
[0025]步骤5:所述控制台程序通过版本库与所述分段信息中获取的文件名称和代码行号对比,所述版本库是指存放软件代码的文件数据库,获取代码差异信息,当所述分段信息中获取的代码行号属于改动行时,将该行代码的分段信息纳入输出序列;当分段信息中获取的代码行号不属于改动行时,忽略该行代码的分段信息。当通过版本库获取代码差异信息发生错误时,将该检查结果全部纳入输出序列。
[0026]步骤6:待整个输出结果筛选完成后,将输出序列中的分段信息呈现给用户。
[0027]如图2所示,所述控制台程序递归读取所述配置文件是指顺序读取配置文件,当配置文件的某一行中有定义另外一个配置文件时就先读取该配置文件中的所有行,之后再继续读取当前配置文件中后面的行。具体步骤如下:
[0028]S201:读取配置文件。
[0029]S202:获取输出结果格式化的字符串。
[0030]S203:判断所述配置文件是否包含其他的配置文件,若否,则进入S204 ;若是,则进入S201。
[0031]S204:配置文件是否结束,若否,则进入S201 ;若是,则进入S205。
[0032]S205:确定输出结果格式化的字符串。
[0033]下面结合具体实施例对本发明作进一步说明。
[0034]对采用subversion (以下简称svn)进行版本管理的软件代码的PC-Lint代码检查结果进行筛选显示。
[0035]本实施例中涉及到的svn的命令如下:
[0036]命令:svndiff
[0037]命令说明:svndiff - r argl: arg2 [arg6] >arg3
[0038]svn diff - r{arg4}:{arg5}[arg6]>arg3
[0039]功能说明:根据版本号或日期段生成变更日志
[0040]参数说明:
[0041]argl:需要统计的起始版本号;
[0042]arg2:需要统计的最后版本号;
[0043]arg3:生成的变更日志文件的路径和文件名(相对路径);
[0044]arg4:需要统计的起始日期;
[0045]arg5:需要统计的最后日期;
[0046]arg6:要统计的源代码路径,可使用服务器路径,若本地有代码拷贝可使用本地路径(可选参数),默认为当前目录。
[0047]实施本发明的控制台程序,直接复制到PC-Lint执行文件所在文件夹或任意其它本地文件夹即可使用,使用时将原先调用PC-Lint的命令行改为调用控制台程序即可,这样相关命令参数将先传送到控制台程序,再由控制台程序传递给PC-Lint运行。
[0048]控制台程序对传入的参数进行逐条分析,并找到第一个不带(短横线)的参数做为配置文件名称。载入该配置文件,并逐条进行读取,当配置条目为“-format”开头时,记录输出结果格式化的字符串;当配置条目为lnt”扩展名的配置文件名称时(PC-Lint配置文件后缀名均为“.lnt”),递归载入该配置文件,并按上述方法进行分析,当所有配置行读取完成后,根据所述字符串确定正则表达式,并通过变量记录所述字符串中文件名称和代码行号出现的顺序;若配置文件中不包含输出结果格式化的字符串,则使用默认的输出格式,参考逻辑如下:
[0049]
Public Function GetFormatString(ByVal filename As String) As String
//获取配置文件中自定义格式字符串的递归函数
Dim configsl As New StringList /定义字符串列表,用于载入配置文件
Dim sWorkPath As String = System.10.Directory.GetCurrentDirectory()蔽取当前工作路
Ir
Try
configsl 丄 oadFromFile(filename) /读取配置文件
Giteh ex As Hxception
Hnd Try
[0050]
【权利要求】
1.一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于,包括以下步骤: 步骤1:通过命令行方式调用控制台程序,所述控制台程序的调用方式与PC-Lint的调用方式相同; 步骤2:所述控制台程序获取传入的参数的配置文件;再对配置文件进行分析,获取输出结果格式化的字符串; 步骤3:所述控制台程序根据所述字符串的格式来定义正则表达式,并通过变量记录所述字符串中的文件名称和代码行号出现的顺序; 步骤4:所述控制台程序将所述传入的参数传递给PC-Lint后台检查,然后截获其检查结果,通过所述正则表达式计算所述检查结果,将检查结果中的信息进行分段,然后通过所述变量所记录的顺序,从所述分段信息中获取文件名称和代码行号; 步骤5:所述控制台程序通过版本库与所述分段信息中获取的文件名称和代码行号对t匕,获取代码差异信息,当所述分段信息中获取的代码行号属于改动行时,将该行代码的分段信息纳入输出序列; 步骤6:待整个输出结果筛选完成后,将输出序列中的分段信息呈现给用户。
2.如权利要求1所述的一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于:所述步骤2中,所述传入的参数包括配置文件参数和非配置文件参数,所述配置文件参数不包含短横线,所述非配置文件参数必须包含短横线。
3.如权利要求2所述的一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于:所述步骤2中,所述配置文件为逐层嵌套形式,即所述配置文件至少包含2层,其中内层的配置文件依次嵌套在外层的配置文件中。
4.如权利要求3所述的一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于:所述步骤2中,递归读取所述配置文件,获取输出结果格式化的字符串。
5.如权利要求4所述的一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于:所述获取输出结果格式化的字符串的具体步骤如下: 5201:读取配置文件; 5202:获取输出结果格式化的字符串; 5203:判断所述配置文件是否包含其他的配置文件,若否,则进入S204 ;若是,则进入S201 ; 5204:配置文件是否结束,若否,则进入S201 ;若是,则进入S205 ; 5205:确定输出结果格式化的字符串。
6.如权利要求1所述的一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于:所述步骤2中,若所述配置文件中不包含输出结果格式化的字符串,则使用默认的输出格式。
7.如权利要求1所述的一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于:所述步骤5中,当通过版本库获取代码差异信息发生错误时,将该检查结果全部纳入输出序列。
8.如权利要求1所述的一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于:所述步骤5中,所述版本库是指存放软件代码的文件数据库。
9.如权利要求1所述的一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于:所述步骤5中,当分段信 息中获取的代码行号不属于改动行时,忽略该行代码的分段息
【文档编号】G06F11/36GK103942143SQ201410142242
【公开日】2014年7月23日 申请日期:2014年4月9日 优先权日:2014年4月9日
【发明者】王玮, 夏冉 申请人:烽火通信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1