On 12/21/2013 10:10 AM, Roy Smith wrote:

On the last large C++ project I worked on, we decided (i.e. obeyed a
corporate mandate) to start using Coverity's static analysis tool on our
15 year old codebase.  I learned a few things about static analysis then.

CPython was about that old when Coverity started giving us reports on the C part of CPython (about 400000 loc). CPython is now essentially free of errors detected by Coverity.

1) It finds bugs you would never find yourself.

Coverity apparently found several for CPython.

2) If your code does tricky things, you can fool the static analyzer,
leading to false positives.

One can define code patterns that are false positives, to silence such reports.

 Presumably, it also leads to false
negatives, but you don't know about those :-(

We use unit tests to find logic bugs ;-).

3) If you're going to use static analysis, probably the best way is to
start using it from day one.  Trying to duct-tape a static analysis step
into your development process for a legacy codebase is probably more
effort than it's worth.

Some of the C coders on the development team thought it *was* for CPython. The fact that CPython has been compiled for, say, 20 different systems may have meant that it already depended less on 'implementation-defined' behavior.

--
Terry Jan Reedy

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to