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:anonym...@rpm5.org:/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
splint-discuss@mail.cs.virginia.edu
http://www.cs.virginia.edu/mailman/listinfo/splint-discuss

Reply via email to