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

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

Info

Publication number
CN103942143A
CN103942143A CN201410142242.4A CN201410142242A CN103942143A CN 103942143 A CN103942143 A CN 103942143A CN 201410142242 A CN201410142242 A CN 201410142242A CN 103942143 A CN103942143 A CN 103942143A
Authority
CN
China
Prior art keywords
code
lint
configuration file
check result
comparison
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.)
Granted
Application number
CN201410142242.4A
Other languages
English (en)
Other versions
CN103942143B (zh
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.)
Fiberhome Telecommunication Technologies Co Ltd
Original Assignee
Fiberhome Telecommunication Technologies 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 Fiberhome Telecommunication Technologies Co Ltd filed Critical Fiberhome Telecommunication Technologies Co Ltd
Priority to CN201410142242.4A priority Critical patent/CN103942143B/zh
Publication of CN103942143A publication Critical patent/CN103942143A/zh
Application granted granted Critical
Publication of CN103942143B publication Critical patent/CN103942143B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

一种基于版本库比较的PC-Lint代码检查结果筛选方法,涉及软件测试技术领域,包括以下步骤:通过命令行方式调用控制台程序;获取传入的参数的配置文件;再对配置文件进行分析,获取输出结果格式化的字符串;根据所述字符串的格式来定义正则表达式;将所述传入的参数传递给PC-Lint后台检查,然后截获其检查结果;通过与版本库对比,获取代码差异信息,当所述分段信息中获取的代码行号属于改动行时,将该行代码的分段信息纳入输出序列;待整个输出结果筛选完成后,将输出序列中的分段信息呈现给用户。由于利用控制台程序预先对PC-Lint的检查结果进行了筛选,最终只显示与改动行代码相关的检查结果,因此简单直观,有利于提高代码编写质量与效率。

Description

一种基于版本库比较的PC-Lint代码检查结果筛选方法
技术领域
本发明涉及软件测试技术领域,具体的说是一种基于版本库比较的PC-Lint代码检查结果筛选方法。
背景技术
PC-Lint是一款优秀的C/C++软件代码静态检查工具,它不仅能够对程序进行全局分析,识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针以及冗余的代码,还能够有效地帮你提出许多程序在空间利用、运行效率上的改进点。其运行模式为控制台模式,输出内容可通过管道命令存入文本文件中,或被调用它的程序进行捕获输出。
在C语言软件产品开发过程中,经常会用到PC-Lint工具对编写的代码进行检查,来找出代码中潜在的问题。PC-Lint在对代码检查时,会对编译所需要的代码都进行检查,但是在开发时,经常会用到第三方代码,而这部分代码的检查结果我们并不需要,也不会对这部分代码进行修改。因此,在PC-Lint的输出结果中包含大量的第三方代码,导致无法快速准确的找到与修改过的代码相关的内容。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种基于版本库比较的PC-Lint代码检查方法,用于方便查看改动代码相关的静态检查结果。
为达到以上目的,本发明采取的技术方案是:一种基于版本库比较的PC-Lint代码检查结果筛选方法,包括以下步骤:步骤1:通过命令行方式调用控制台程序,所述控制台程序的调用方式与PC-Lint的调用方式相同;步骤2:所述控制台程序获取传入的参数的配置文件;再对配置文件进行分析,获取输出结果格式化的字符串;步骤3:所述控制台程序根据所述字符串的格式来定义正则表达式,并通过变量记录所述字符串中的文件名称和代码行号出现的顺序;步骤4:所述控制台程序将所述传入的参数传递给PC-Lint后台检查,然后截获其检查结果,通过所述正则表达式计算所述检查结果,将检查结果中的信息进行分段,然后通过所述变量所记录的顺序,从所述分段信息中获取文件名称和代码行号;步骤5:所述控制台程序通过版本库与所述分段信息中获取的文件名称和代码行号对比,获取代码差异信息,当所述分段信息中获取的代码行号属于改动行时,将该行代码的分段信息纳入输出序列;步骤6:待整个输出结果筛选完成后,将输出序列中的分段信息呈现给用户。
在上述技术方案的基础上,所述步骤2中,所述传入的参数包括配置文件参数和非配置文件参数,所述配置文件参数不包含短横线,所述非配置文件参数必须包含短横线。
在上述技术方案的基础上,所述步骤2中,所述配置文件为逐层嵌套形式,即所述配置文件至少包含2层,其中内层的配置文件依次嵌套在外层的配置文件中。
在上述技术方案的基础上,所述步骤2中,递归读取所述配置文件,获取输出结果格式化的字符串。
在上述技术方案的基础上,所述获取输出结果格式化的字符串的具体步骤如下:S201:读取配置文件;S202:获取输出结果格式化的字符串;S203:判断所述配置文件是否包含其他的配置文件,若否,则进入S204;若是,则进入S201;S204:配置文件是否结束,若否,则进入S201;若是,则进入S205;S205:确定输出结果格式化的字符串。
在上述技术方案的基础上,所述步骤2中,若所述配置文件中不包含输出结果格式化的字符串,则使用默认的输出格式。
在上述技术方案的基础上,所述步骤5中,当通过版本库获取代码差异信息发生错误时,将该检查结果全部纳入输出序列。
在上述技术方案的基础上,所述步骤5中,所述版本库是指存放软件代码的文件数据库。
在上述技术方案的基础上,所述步骤5中,当分段信息中获取的代码行号不属于改动行时,忽略该行代码的分段信息。
本发明的有益效果在于:
1、由于本发明基于版本库比较的PC-Lint代码检查方法,由于利用控制台程序预先对PC-Lint的检查结果进行了筛选,最终只显示与改动行代码相关的检查结果,因此简单直观,有利于提高代码编写质量与效率。
2、由于本发明基于版本库比较的PC-Lint代码检查方法,所述控制台程序的调用方式与PC-Lint的调用方式相同,因此用户能够保持原有操作习惯。
附图说明
图1是本发明基于版本库比较的PC-Lint代码检查方法的流程图;
图2是递归读取配置文件的逻辑示意图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图1所示,一种基于版本库比较的PC-Lint代码检查结果筛选方法,包括以下步骤:
步骤1:通过命令行方式调用控制台程序,所述控制台程序的调用方式与PC-Lint的调用方式相同。
步骤2:所述控制台程序对传入的参数逐个进行分析,获取其中的配置文件;所述传入的参数包括配置文件参数和非配置文件参数,所述配置文件参数不包含短横线,所述非配置文件参数必须包含短横线。所述配置文件为逐层嵌套形式,即所述配置文件至少包含2层,其中内层的配置文件依次嵌套在外层的配置文件中。所述控制台程序递归读取所述配置文件,对配置文件进行分析,获取输出结果格式化的字符串。若所述配置文件中不包含输出结果格式化的字符串,则使用默认的输出格式。
步骤3:所述控制台程序根据所述字符串的格式来定义正则表达式,并通过变量记录所述字符串中的文件名称和代码行号出现的顺序;其中,任何所述配置文件中都可以包含“-format”的输出格式字符串定义,用来决定每一行的代码检查结果字段的排列顺序,但只有最后一个“-format”才会起作用,之前读取的“-format”配置会被忽略。
步骤4:所述控制台程序将所述传入的参数传递给PC-Lint后台检查,然后截获其检查结果,通过所述正则表达式计算所述检查结果,将检查结果中的信息进行分段,然后通过所述变量所记录的顺序,从所述分段信息中获取文件名称和代码行号。
步骤5:所述控制台程序通过版本库与所述分段信息中获取的文件名称和代码行号对比,所述版本库是指存放软件代码的文件数据库,获取代码差异信息,当所述分段信息中获取的代码行号属于改动行时,将该行代码的分段信息纳入输出序列;当分段信息中获取的代码行号不属于改动行时,忽略该行代码的分段信息。当通过版本库获取代码差异信息发生错误时,将该检查结果全部纳入输出序列。
步骤6:待整个输出结果筛选完成后,将输出序列中的分段信息呈现给用户。
如图2所示,所述控制台程序递归读取所述配置文件是指顺序读取配置文件,当配置文件的某一行中有定义另外一个配置文件时就先读取该配置文件中的所有行,之后再继续读取当前配置文件中后面的行。具体步骤如下:
S201:读取配置文件。
S202:获取输出结果格式化的字符串。
S203:判断所述配置文件是否包含其他的配置文件,若否,则进入S204;若是,则进入S201。
S204:配置文件是否结束,若否,则进入S201;若是,则进入S205。
S205:确定输出结果格式化的字符串。
下面结合具体实施例对本发明作进一步说明。
对采用subversion(以下简称svn)进行版本管理的软件代码的PC-Lint代码检查结果进行筛选显示。
本实施例中涉及到的svn的命令如下:
命令:svn diff
命令说明:svn diff–r arg1:arg2[arg6]>arg3
              svn diff–r{arg4}:{arg5}[arg6]>arg3
功能说明:根据版本号或日期段生成变更日志
参数说明:
arg1:需要统计的起始版本号;
arg2:需要统计的最后版本号;
arg3:生成的变更日志文件的路径和文件名(相对路径);
arg4:需要统计的起始日期;
arg5:需要统计的最后日期;
arg6:要统计的源代码路径,可使用服务器路径,若本地有代码拷贝可使用本地路径(可选参数),默认为当前目录。
实施本发明的控制台程序,直接复制到PC-Lint执行文件所在文件夹或任意其它本地文件夹即可使用,使用时将原先调用PC-Lint的命令行改为调用控制台程序即可,这样相关命令参数将先传送到控制台程序,再由控制台程序传递给PC-Lint运行。
控制台程序对传入的参数进行逐条分析,并找到第一个不带“-”(短横线)的参数做为配置文件名称。载入该配置文件,并逐条进行读取,当配置条目为“-format”开头时,记录输出结果格式化的字符串;当配置条目为“.lnt”扩展名的配置文件名称时(PC-Lint配置文件后缀名均为“.lnt”),递归载入该配置文件,并按上述方法进行分析,当所有配置行读取完成后,根据所述字符串确定正则表达式,并通过变量记录所述字符串中文件名称和代码行号出现的顺序;若配置文件中不包含输出结果格式化的字符串,则使用默认的输出格式,参考逻辑如下:
控制台程序对PC-Lint的检查结果进行逐行分析,使用上述正则表达式进行判断,若满足条件,则获取其中的文件名及涉及代码行号。根据文件名,使用svn diff命令获取当前工作副本下的文件与版本库基版本文件的改动行号列表。svn提供的差异文件信息有如下特点:
“---”开头的行,为修改前的文件信息;
“+++”开头的行,为修改后的文件信息;
“”开头的行,为下面将要列出的修改代码段的起始行号,和总行数信息;
空格开头的行,为未修改的实际代码内容;
“+”开头的行,为修改后或增加的行;
“-”开通的行,为修改前或移除的行;
以上标识符为svn固定输出格式。
通过上述特点可对改动代码行号进行计算,参考逻辑如下:
若当前分段信息涉及的代码行号,存在于上述运行结果的输出结果队列中,则该行的分段信息属于需要输出的内容,将该行复制到最终输出结果队列中即可。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

Claims (9)

1.一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于,包括以下步骤:
步骤1:通过命令行方式调用控制台程序,所述控制台程序的调用方式与PC-Lint的调用方式相同;
步骤2:所述控制台程序获取传入的参数的配置文件;再对配置文件进行分析,获取输出结果格式化的字符串;
步骤3:所述控制台程序根据所述字符串的格式来定义正则表达式,并通过变量记录所述字符串中的文件名称和代码行号出现的顺序;
步骤4:所述控制台程序将所述传入的参数传递给PC-Lint后台检查,然后截获其检查结果,通过所述正则表达式计算所述检查结果,将检查结果中的信息进行分段,然后通过所述变量所记录的顺序,从所述分段信息中获取文件名称和代码行号;
步骤5:所述控制台程序通过版本库与所述分段信息中获取的文件名称和代码行号对比,获取代码差异信息,当所述分段信息中获取的代码行号属于改动行时,将该行代码的分段信息纳入输出序列;
步骤6:待整个输出结果筛选完成后,将输出序列中的分段信息呈现给用户。
2.如权利要求1所述的一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于:所述步骤2中,所述传入的参数包括配置文件参数和非配置文件参数,所述配置文件参数不包含短横线,所述非配置文件参数必须包含短横线。
3.如权利要求2所述的一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于:所述步骤2中,所述配置文件为逐层嵌套形式,即所述配置文件至少包含2层,其中内层的配置文件依次嵌套在外层的配置文件中。
4.如权利要求3所述的一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于:所述步骤2中,递归读取所述配置文件,获取输出结果格式化的字符串。
5.如权利要求4所述的一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于:所述获取输出结果格式化的字符串的具体步骤如下:
S201:读取配置文件;
S202:获取输出结果格式化的字符串;
S203:判断所述配置文件是否包含其他的配置文件,若否,则进入S204;若是,则进入S201;
S204:配置文件是否结束,若否,则进入S201;若是,则进入S205;
S205:确定输出结果格式化的字符串。
6.如权利要求1所述的一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于:所述步骤2中,若所述配置文件中不包含输出结果格式化的字符串,则使用默认的输出格式。
7.如权利要求1所述的一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于:所述步骤5中,当通过版本库获取代码差异信息发生错误时,将该检查结果全部纳入输出序列。
8.如权利要求1所述的一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于:所述步骤5中,所述版本库是指存放软件代码的文件数据库。
9.如权利要求1所述的一种基于版本库比较的PC-Lint代码检查结果筛选方法,其特征在于:所述步骤5中,当分段信息中获取的代码行号不属于改动行时,忽略该行代码的分段信息。
CN201410142242.4A 2014-04-09 2014-04-09 一种基于版本库比较的PC‑Lint代码检查结果筛选方法 Active CN103942143B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410142242.4A CN103942143B (zh) 2014-04-09 2014-04-09 一种基于版本库比较的PC‑Lint代码检查结果筛选方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410142242.4A CN103942143B (zh) 2014-04-09 2014-04-09 一种基于版本库比较的PC‑Lint代码检查结果筛选方法

Publications (2)

Publication Number Publication Date
CN103942143A true CN103942143A (zh) 2014-07-23
CN103942143B CN103942143B (zh) 2017-03-15

Family

ID=51189816

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410142242.4A Active CN103942143B (zh) 2014-04-09 2014-04-09 一种基于版本库比较的PC‑Lint代码检查结果筛选方法

Country Status (1)

Country Link
CN (1) CN103942143B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105260303A (zh) * 2015-10-10 2016-01-20 浪潮电子信息产业股份有限公司 一种基于自动化测试的敏捷测试方案
CN105335196A (zh) * 2015-11-02 2016-02-17 深圳市新国都支付技术有限公司 一种pos终端程序增量下载的方法
CN107688618A (zh) * 2017-08-08 2018-02-13 平安科技(深圳)有限公司 数据对比方法、装置、计算机设备和存储介质
CN108108425A (zh) * 2017-12-18 2018-06-01 苏州蜗牛数字科技股份有限公司 文本处理比较方法以及装置
CN109491923A (zh) * 2018-12-14 2019-03-19 东软集团股份有限公司 新增异常代码的确定方法、装置、介质及电子设备
CN109710508A (zh) * 2018-08-20 2019-05-03 平安普惠企业管理有限公司 测试方法、测试装置、测试设备及计算机可读存储介质
CN109871313A (zh) * 2018-12-30 2019-06-11 贝壳技术有限公司 基于特定时间的代码检查方法及装置
CN110502443A (zh) * 2019-08-22 2019-11-26 深圳前海环融联易信息科技服务有限公司 冗余代码检测方法、检测模块、电子设备及计算机存储介质
CN110795326A (zh) * 2018-08-01 2020-02-14 武汉斗鱼网络科技有限公司 一种代码拦截检测方法、存储介质、电子设备及系统
CN111552476A (zh) * 2020-04-24 2020-08-18 烽火通信科技股份有限公司 一种代码静态检查的方法与设备
CN112506557A (zh) * 2020-12-08 2021-03-16 合肥非度信息技术有限公司 基于svn日志差异文件分析的代码量计算的方法
CN112835565A (zh) * 2021-01-29 2021-05-25 山东浪潮通软信息科技有限公司 一种生成组件配置器的方法、设备和存储介质
US11429360B1 (en) 2021-05-17 2022-08-30 International Business Machines Corporation Computer assisted programming with targeted visual feedback

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040260734A1 (en) * 2003-06-20 2004-12-23 Liwei Ren Processing software images for use in generating difference files
CN102096632A (zh) * 2009-12-10 2011-06-15 Sap股份公司 代码变化与测试之间的桥接
CN103440231A (zh) * 2013-09-02 2013-12-11 北京网秦天下科技有限公司 用于比较文本的设备和方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040260734A1 (en) * 2003-06-20 2004-12-23 Liwei Ren Processing software images for use in generating difference files
CN102096632A (zh) * 2009-12-10 2011-06-15 Sap股份公司 代码变化与测试之间的桥接
CN103440231A (zh) * 2013-09-02 2013-12-11 北京网秦天下科技有限公司 用于比较文本的设备和方法

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105260303A (zh) * 2015-10-10 2016-01-20 浪潮电子信息产业股份有限公司 一种基于自动化测试的敏捷测试方案
CN105335196A (zh) * 2015-11-02 2016-02-17 深圳市新国都支付技术有限公司 一种pos终端程序增量下载的方法
CN107688618A (zh) * 2017-08-08 2018-02-13 平安科技(深圳)有限公司 数据对比方法、装置、计算机设备和存储介质
CN107688618B (zh) * 2017-08-08 2019-03-12 平安科技(深圳)有限公司 数据对比方法、装置、计算机设备和存储介质
CN108108425A (zh) * 2017-12-18 2018-06-01 苏州蜗牛数字科技股份有限公司 文本处理比较方法以及装置
CN110795326A (zh) * 2018-08-01 2020-02-14 武汉斗鱼网络科技有限公司 一种代码拦截检测方法、存储介质、电子设备及系统
CN109710508A (zh) * 2018-08-20 2019-05-03 平安普惠企业管理有限公司 测试方法、测试装置、测试设备及计算机可读存储介质
CN109710508B (zh) * 2018-08-20 2024-03-15 天航长鹰(江苏)科技有限公司 测试方法、测试装置、测试设备及计算机可读存储介质
CN109491923B (zh) * 2018-12-14 2021-11-12 东软集团股份有限公司 新增异常代码的确定方法、装置、介质及电子设备
CN109491923A (zh) * 2018-12-14 2019-03-19 东软集团股份有限公司 新增异常代码的确定方法、装置、介质及电子设备
CN109871313A (zh) * 2018-12-30 2019-06-11 贝壳技术有限公司 基于特定时间的代码检查方法及装置
CN110502443A (zh) * 2019-08-22 2019-11-26 深圳前海环融联易信息科技服务有限公司 冗余代码检测方法、检测模块、电子设备及计算机存储介质
CN111552476A (zh) * 2020-04-24 2020-08-18 烽火通信科技股份有限公司 一种代码静态检查的方法与设备
CN112506557A (zh) * 2020-12-08 2021-03-16 合肥非度信息技术有限公司 基于svn日志差异文件分析的代码量计算的方法
CN112835565A (zh) * 2021-01-29 2021-05-25 山东浪潮通软信息科技有限公司 一种生成组件配置器的方法、设备和存储介质
US11429360B1 (en) 2021-05-17 2022-08-30 International Business Machines Corporation Computer assisted programming with targeted visual feedback

Also Published As

Publication number Publication date
CN103942143B (zh) 2017-03-15

Similar Documents

Publication Publication Date Title
CN103942143A (zh) 一种基于版本库比较的PC-Lint代码检查结果筛选方法
Galkovskyi et al. GiA Roots: software for the high throughput analysis of plant root system architecture
CN104932973B (zh) 一种版本兼容测试方法和装置
CN105893259B (zh) 代码检测系统、方法及装置
Kirbas et al. The relationship between evolutionary coupling and defects in large industrial software
CN107015908A (zh) 一种计算机应用软件测试系统及方法
CN104182335A (zh) 软件测试方法和装置
CN105446864B (zh) 缓存文件删除影响的校验方法、装置及移动终端
EP3161641B1 (en) Methods and apparatuses for automated testing of streaming applications using mapreduce-like middleware
CN105912458A (zh) 一种用于动态检测c/c++内存泄露的方法及系统
CN103425584A (zh) 基于Java字节码的大型应用回归测试信息处理方法
CN103970659A (zh) 基于插桩技术的安卓应用软件自动化测试方法
CN107451112B (zh) 表格工具数据检查方法、装置、终端设备及存储介质
CN104572463A (zh) 测试接口信息的方法及装置
CN105068921A (zh) 基于App对比分析的Android应用商店可信度评价方法
CN108255702A (zh) 一种测试用例创建方法、装置、设备及存储介质
CN104899016A (zh) 调用堆栈关系获取方法及装置
CN112612813B (zh) 一种测试数据的生成方法和装置
CN106203007A (zh) 一种代码处理方法、装置及计算设备
CN115827895A (zh) 一种漏洞知识图谱处理方法、装置、设备及介质
US10830818B2 (en) Ensuring completeness of interface signal checking in functional verification
WO2014157056A1 (ja) ソースプログラム解析システム、ソースプログラム解析方法およびプログラムを記録した記録媒体
CN112241370B (zh) 一种api接口类的校验方法、系统及装置
CN111897727A (zh) 软件测试方法、装置、计算机设备及存储介质
US10073938B2 (en) Integrated circuit design verification

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant