静态程序分析工具—Splint
admin 于 2021年05月15日 发表在 windows软件开发

1. 两种安装方式

1.1 windows本地安装

访问官网下载windows平台安装包,如:splint-3.1.1.win32.zip 。

下载后,解压到特定路径,并将bin路径(如:D:\ProgramData\splint-3.1.2\bin)添加到系统path。然后启动cmd,输入“ splint -help ”,终端会输出相关信息,说明安装完成。

1.2 cygwin中安装

为了方便,笔者采用cygwin对一些工具包进行统一管理,在cygwin安装包中搜索相应的程序,安装即可。

安装完成后,打开 Cygwin64 Terminal 输入“ splint -help ”,终端会输出相关信息,说明安装完成。

注:如果想在windows平台下调用cygwin中的splint,则将cygwin安装目录(如: D:\ProgramData\cygwin64\bin) 添加到系统path。

2. 代码检查

2.1 编译代码

以example文件为例example.zip,进行介绍。

由于Makefile已写好,直接运行make命令即可,生成main.exe,且程序能够正常运行。

2.2 调用splint

(1)静态程序分析

静态程序分析((Static program analysis))是指使用自动化工具软件对程序源代码进行检查,以分析程序行为的技术,应用于程序的正确性检查、安全缺陷检测、程序优化等。它的特点就是不执行程序,相反,通过在真实或模拟环境中执行程序进行分析的方法称为“动态程序分析(Dynamic program analysis)”;

(2)splint使用

splint是一个能够静态检查C程序安全漏洞及编程错误的开源工具。其检查项,主要覆盖以下几个方面:

  • Null Dereferences :针对空指针缺乏健壮性判断

  • Undefined Values :未初始化数据

  • Types : 转换类型不一致等

  • Memory Management : 内存管理检测,如内存泄露,内存释放和重分配,引用计数器

  • Sharing : 共享存储空间安全性检测

  • Function Interfaces : 函数接口检测,参数传递,全局变量处理等

  • Control Flow : 函数执行流分支检测等

  • Buffer Sizes :缓冲区边界管理、越界检查

  • Extensible Checking : 

  • Macros :宏隐患检测

  • Naming Conventions : 命名空间检测

  • Completeness :完整性检测,包括未使用变量,未使用函数等

  • Libraries and Header File Inclusion : 库和头文件检测,如是否为posix库函数等

以example为例,运行检查指令,会看到终端输出一堆检查结果提醒。

splint main.c

关于splint的更多操作方法,可访问官网文档: http://splint.org/documentation/

参考来源:

https://www.cnblogs.com/hejing-swust/p/9452070.html

注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。 标签:splint,静态程序分析