软件测试实验学习笔记系列2 -- lint,splint的使用

本文介绍了代码静态分析工具Splint的历史、功能,以及如何在Linux和Windows上安装。Splint能够检查C语言程序的安全弱点和错误,如未使用变量、类型不一致等问题。文章详细阐述了Splint的命令、应用实例,如错误检查控制、类型错误和内存检查,强调了Splint在代码质量保障中的作用,并提到其可集成到IDE和makefile中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lint简史

1979年,贝尔实验室SteveJohnson1979PCC(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是商业软件,虽说功能强大,但是容易获取。这里主要介绍GNUsplint工具。

开源的代码静态分析工具Splint

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

官方网站:http://www.splint.org/

Splint的安装

1.Linux下的安装

1.1rpm安装:

rpm -ivh splint.xxx.rpm

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

1.2Ubuntu或者Debian下安装

sudo apt-get install splint

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

1.3源代码安装(通用)

tar -zxvf splint-3.1.2.src.gz

cd splint-3.1.2

./configure

make

make install

2.window下安装

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

1 第1章 软件及其开发过程 1.1 软件的含义 1.2 软件开发过程的特性 1.3 软件测试的重要性 2 22软件测试的基本概念和方法 2.1 软件质量就是客户的满意度 2.2 软件缺陷(Bug)是什么 2.3 软件测试的基本方法 2.4 软件测试的分类和阶段 2.5 软件测试的工作范畴 4 3 第3章 质量保证与测试策略 3.1软件质量保证 3.2测试策略 3.3测试计划 3.4软件质量的可靠性评估 3 3 第4章 软件测试依据和规范 4.1 软件质量标准 4.2 软件测试相关规范 4.3 CMM思想和结构体系 4.4 建立软件测试管理和评判体系 2 4 第5章 单元测试 5.1 什么是单元测试 5.2 单元测试的目标和任务 5.3 静态测试技术的运用 5.4 动态测试技术的运用 5.5 调试与评估 5.6 单元测试的过程与文档管理 5.7 单元测试的常用工具简介 4 5 第6章 集成测试和系统测试 6.1 系统集成的模式与方法 6.2 功能测试 6.3 系统测试 6.4 压力测试、容量测试和性能测试 6.5安全性测试,可靠性和容错性测试 5 6 第7章 验收测试 7.1验收测试的过程和主要内容 7.2产品说明书的验证 7.4兼容性测试 7.5可安装性和可恢复性测试 7.6文档测试 7.7验收测试报告和用户验收测试 2 7 第8章 面向对象软件的测试 8.1 面向对象软件的特点 8.2面向对象测试的层次与数据流 8.3 面向对象的单元测试 8.4面向对象的集成测试 4 8 第9章 应用服务器的测试 9.1 应用服务器的分类和特征 9.2 基于Web服务器应用的测试 9.3 基于数据库应用服务器的测试 9.4 基于J2EE平台的测试 9.5 其他应用服务器应用的测试 4 9 第10章 软件本地化测试 10.1什么是软件本地化 10.2软件本地化的翻译问题 10.3软件本地化测试的技术问题 10.4本地化测试的重点 2 10 第11章 软件测试自动化 11.1测试自动化的内涵 11.2 测试工具的分类和选择 11.3 测试工具的主流产品介绍 11.4 IBM-Rational产品的整体解决方案 11.5 Mercury Interactive产品的整体解决方案 11.6 Compuware产品的整体解决方案 6 11 第12章 组建测试队伍 12.l 测试队伍的地位和责任 12.2测试团队的构成 12.3如何从零开始 12.4测试团队的管理和发展 12.5优秀软件测试工程师的必备素质 2 11 第13章 测试环境的建立 13.1 测试环境的重要性 13.2 测试环境的各要素 13.3 建立测试实验室 13.4 测试环境的维护和管理 2 12 第14章 软件测试用例的设计 14.1 测试用例概述 14.2 白盒测试用例设计方法 14.3 黑盒测试用例设计方法 14.4 测试用例的组织和跟踪 3 13 第15章 报告所发现的软件缺陷 15.l 软件缺陷的描述 15.2 软件缺陷相关的信息 15.3 软件缺陷的处理和跟踪 2 14 第16章 测试和软件质量分析报告 16.1软件产品的质量度量 16.2评估系统测试的覆盖程度 16.3软件缺陷分析方法 16.4 基于缺陷分析的产品质量评估 16.5 测试报告及其模板 4 15 -16 第17章 软件测试项目管理 17.1软件测试项目管理的概述 17.2 软件测试项目的组织 17.3软件测试项目的过程管理 17.4软件测试项目的资源管理 17.5 测试项目的进度管理 17.6 测试项目的风险管理 17.7 测试项目的质量管理和配置管理 17.8 软件测试文档的管理 6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值