splint代码静态分析工具window下的安装与配置

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

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值