splint可以在官网https://splint.org/download.html免费下载,下面是在windows系统下的安装步骤。
一、 下载压缩包并解压,例如我的解压路径是C:\splint-3.1.1;
二、 添加环境变量。在用户变量添加以下4个环境变量:
1.LARCH_PATH <splint中的lib路径>
2.LCLIMPORTDIR <splint中的imports路径>
3.include <C语言中包含stdio.h等头文件的include文件夹>
4.还需在用户变量的Path中添加可执行文件splint.exe所在路径,在splint解压路径的bin文件夹。
安装和配置好后,按下win+R,输入cmd进入命令行界面,输入splint -help,输出以下信息说明安装成功。
三、 安装和配置好后测试一下
首先在命令行cd进入C代码所在文件夹,然后输入splint <文件名>.c
在没有进行返回的情况下给出了以下提示
将有符号值转换为无符号值、大范围类型值赋值给小范围类型,程序运行的结果会出乎我们的预料,此时给出了以下提示
四、 可能遇到的问题
在splint *.c时报错Cannot find include file stdio.h on search path
是英文include环境变量里没有增加stdio.h所在的路径。若在第二步中已经添加,则需退出当前用户然后重新登录,或者重启电脑。
五、 检查控制方式以及支持的检查项
splint提供了三种检查的控制方式,分别是.splintrc配置文件、flags标志和格式化注释。
flags:splint支持几百个标志用来控制检查和消息报告,使用时标志前加’+‘或’-’,'+‘标志开启这个标志,’-'表示关闭此标志,下面例子展示了flags标志的用法:
splint -showcol a.c //在检测a.c时,告警消息中列数不被打印
splint -varuse a.c //在检测a.c时,告警消息中未使用变量告警不被打印
.splintrc配置文件:在使用源码安装splint之后,.splintrc文件将被安装在主目录下,.splintrc文件中对一些标志作了默认的设定,命令行中指定的flags标志会覆盖.splintrc文件中的标志。
格式化注释:格式化注释提供一个类型、变量或函数的格外的信息,可以控制标志设置,增加检查效果,所有格式化注释都以/@开始,@/结束,比如在函数参数前加/@null@/,表示该参数可能是NULL,做检测时,splint会加强对该参数的值的检测。
检查项主要覆盖以下几个方面:
● 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库函数等
关于splint的更多操作方法以及更详细的内容请查看splint使用手册
Reference:
https://blog.csdn.net/wchinaw/article/details/6331131
https://www.yyearth.com/article/21-05/283.html
https://www.cnblogs.com/hejing-swust/p/9452070.html
http://splint.org/manual/manual.html#memory