c源代码检查工具splint使用问题及方案

    splint使用时,可以使用splint  -help查看需要帮助的项目,然后针对需要了解的项目可以splint  -help  [项目]查看具体的帮助。

    在splint使用过程中,老是出现Parse Error,下面是问题可能解决的方案:

1.splint将检查给定c源文件Simple.c的所有依赖关系。比如Simple.c包含或间接包含的头文件。
2.为了知道Simple.c间接或直接包含的头文件,可以使用gcc -M Simple.c。这里对-M和-MM选项做如下解释:

       gcc的-M选项,可以看出Simple.c中直接或是间接包含的头文件。-MM选项与-M选项的区别是,-MM选项并不列出对于系统头文件的依赖关系,比如stdio.h就属于系统头文件。其道理是,绝大多数情况我们并不会改变系统的头文件,而只会对自己项目的头文件进行更改。

3.根据上面头文件路径,如下使用splint:

splint   -I/usr/include   -I/usr/include/sys   -I/usr/include/bit (similarly all the directories on which ur C file depends)          -skipposixheaders   -skipisoheaders   +D__gnuc_va_list=int   +D__builtin_va_list=int   Simple.c

       当然,如果提示还需要库,那么还可以加上+posixlib 或 +unixlib选项。另外,如果不是使用的标准gnu,还可以加上+gnuextensions选项试一试。

4.splint将对c源文件进行严格的检查,也就是说首先是对一个变量的声明和定义进行检查。splint也不支持C99标准。

另外,对于一些posix标准函数不能解析,需要加上+posixlib选项。
5.如果上面还是无法解决,可以尝试+trytorecover跳过Parse Error,但一般情况下都不成功。最后感觉splint有bug。毕竟是免费的东西。


版权声明:本文为fengel_cs原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。