lclint

A lint-like ANSI C source checker from MIT. If formal specifications are supplied (in a separate file), lclint can do more powerful checking to detect inconsistencies between specifications and code. Adding specifications enables further checking, types can be defined as abstract and lclint can detect inconsistent use of global variables; undocumented modification of client-visible state; inconsistent use of an uninitialised formal parameter; or failure to initialise an actual parameter.

http://larch-www.lcs.mit.edu:8001/larch/lclint.html.