Overall I think the idea of extending splint to additional
non-pOSIX API's is perfectly sane and useful Static annotations
have a usage case, for automated QA testing, for detecting
mis-use of API's and more.
But there are gonna be gotchas:
1) API's change in the "real world"
Whatever you carry in splint MUST be maintained somehow.
There's the additional pain of whatever works on, say
rhel6 with sqlite-3.6.23.1 may not be useful "portably".
C'est la vie (but you need to warn users up front).
2) Manually applying annotations is quite a chore
Literally months if not years of my life has
been spent staring at splint spewage. Like all
lint-like approaches there's an _ENORMOUS_ amount
of warnings that need to be studied if working carefully.
Automated tools (like what ISPRAS is doing, also sensitive to
' splint annotations) are gonna be needed to succeed in populating
a store of statically annotated API's imho.
3) the splint C parser has some issues still
Finding which file had "parser errors" by bisecting
the file inputs using splint, while much improved, still
has a ways to go to Just Work. You other additions to
splint (seen while annotating) are quite nice, get a new
release out for splint, you have nothing to be embarrased about imho.
(aside)
ISPRAS == Institute of System Programming, Russian Academy of Sciences
These are the people who are putting meat & muscle into LSB "standard"
interface testing. The tools ISPRAS is developing are quite pleasant to
use, with web displays and low barriers to entry. See this link
http://linuxtesting.org/upstream-tracker/
for one extremely useful (imho) tool tracking ABI's through versions.
I can attest to the quality of the tool because two interfaces
that I am responsible for creating/maintaining RPM & POPT are there.
The tool does indeed find problem areas accurately.
Another tool is their "shallow testing" scripts (which are quite easy
to extend with pre- and post- code snippet templates in XML called
abi-compliance-checker.pl
api-sanity-autotest.pl
which you can find a copy of in scripts/ from a top level check-out from
cvs -d :ext:[email protected]:/v/rpm/cvs get rpm
in the scripts/ sub-directory (I'm too lazy to find the link through
linuxfoundation atm -- I posted here on the splint mailing list
a couple months back).
With a little work at automation, and perhaps asking LSB or ISPRAS
to start generating splint files that Just Drop In automagically,
I think you have a very very sound approach to using splint
on OSS software.
hth
73 de Jeff
_______________________________________________
splint-discuss mailing list
[email protected]
http://www.cs.virginia.edu/mailman/listinfo/splint-discuss