Splint就是一款强大而且应用广泛的开源lint工具。它的强大的代码检查能力固然让人称道,但是让我更欣赏的却是它提供的'Annotations机制。 Splint可以让程序员在自己的代码中嵌入相应的Anotations,这些Anotations作为Splint分析代码时的输入以帮助Splint 产生对程序员更有用的信息。
看一下下面的代码(当然包括错误,以检验splint的功能):

现在可以用splint来检查一下,为了检验是否可以检测到数组越界,使用+bounds选项。
splint hi.c +bounds
输出结果:

现在详细看一下结果:
检查结果1:

这些应该是splint检测到变量c和d没有声明。
检查结果2:

这些是检查存在数组越界,因为吧b[8]的最大数组序号应该是7,而不是9,所以出现requires 7 >= 9;
检查结果3:

这些表明argc和argv变量声明了,但是没有使用。这个不是什么问题。
如果小心使用splint,应该对于c语言的程序编写有非常大的辅助作用!
