PMP ,专注于WEB功能测试、性能测试、安全测试的研究,从事全面质量管理工作。曾任多家公司测试经理、测试主管。在电子政务、银行、电商、跨境电商、直播电商领域工作多年,曾获得某龙头集团公司公测一等奖,曾任职某头部直播电商公司测试团队负责人,具有业务敏感性,擅长从0到1搭建测试团队,具有海外工作经历,以及质量管理体系搭建。邮箱:89233502@qq.com

lint,splint的使用

上一篇 / 下一篇  2013-08-07 08:49:24 / 个人分类:工具地址

lint简史

  1979年,贝尔实验室SteveJohnson于1979在PCC(PortableCCompiler)基础上开发的出了代码分析工具Lint,可以检查出很多的不符合规范的的错误(如将“==”写成了“=”)以及函数接口参数不一致性的问题等,完成代码健壮性的检查。Lint后来形成了一系列的工具,包括PC-Lint/FlexeLint(Gimpel),LintPlus(Cleanscape)以及Splint.

  功能

  通常C/C++编译器假设程序是正确的,Lint恰好相反,因此它有优于编译器执行的一般性的代码检查。Lint还可以在多个文件之间执行错误检查和代码分析。下面是一些Lint可以检查出来的部分的错误列表:

  可能的空指针

  在释放内存后使用了指向该内存的指针

  赋值次序问题

  拼写错误

  被0除

  失败的case语句(遗漏了break语句)

  不可移植的代码(依赖了特定的机器实现)

  宏参数没有使用圆括号

  符号的丢失

  异常的表达式

  变量没有初始化

  可疑的判断语句(例如,if(x=0))

  printf/scanf的格式检查

  现有的Lint程序主要有两个版本:①PC-Lint,由GimpelSoftware提供的支持C/C++的商用程序。官方地址:http://www.gimpel.com/html/pcl.htm②Splint(原来的LCLint)是一个有GNU免费授权的Lint程序,只支持c,而不支持c++.官方地址:http://www.splint.org/

  由于PC-lint是商业软件,虽说功能强大,但是容易获取。这里主要介绍GNU的splint工具。

  开源的代码静态分析工具SP-lint

  Splint是一个动态检查C语言程序安全弱点和编写错误的一个程序,会进行多种错误检查:未使用变量,类型不一致,使用未定义的变量,无法执行的代码,忽略返回值,执行路径没有返回,无限循环等错误。

  Splint的安装

  1.在Linux下的安装

  1.1rpm安装:

  rpm-ivh splint.xxx.rpm

  rpm安装包是著名的Linux发行商Redhat推出的基于源代码的软家包方式。这种安装方式的缺点是如软件依赖项有很多并且你没有安装那些依赖项时,哈哈,恭喜你,你有事忙了,需要满互联网的找到那些依赖项并安装好;如果依赖项还有依赖项并且你又没有安装,我只能说,哥们你中彩了。

  1.2Ubuntu或者Debian下安装

  sudoapt-get install splint

  这种安装最省事,唯一的缺点是,安装的软件的版本可能不是最新的,以及总是按照默认的配置来安装的软件的---不够灵活

  1.3源代码安装(通用)

tar -zxvf splint-3.1.2.src.gz
cd xxx/splint-3.1.2
./configure
make
makeinstall

  2.在window下安装

  可以使用源代码安装的方式.最新的官网提供了window下的软件安装包(msi格式),地址是:https://github.com/maoserr/splint_win32/downloads

  由于本人使用的是Ubuntu12.04LTS,splint安装使用的是apt-get的安装方式,splint的版本是3.1.2,以下的介绍都是以次为基础的。

  3.splint的应用

  空引用错误:/*@null@*/--splint支持的注释类型,表明其后跟随的值可能为null

  实例程序,null.c:

/*Program:null.c -- a example code for null reference error*/
//'/*@null@*/'is a special annotation the splint tool supported
char firstChar1(/*@null@*/char*s){
 return *s;
}
char firstChar2(/*@null@*/char*s){
 if(s ==NULL) return '\0';
 return *s;
}

TAG:

 

评分:0

我来说两句

Open Toolbar