I use many automated tools to guide my hacking.
1) LCOV/GCOV coverage tests
I've run lcov on POPT head yesterday, the results are here:
http://jbj.org/files/popt/lcov-1.17/
Note that function coverage at 100% is an immediate benefit
of doing ISPRAS "shallow" testing. But click through
/X/src/popt
if you want to see what code is actually exercised by "make check".
2) mccabe metrics
I use mccabe metrics mostly to confirm what I already know, where
the "cesspools" are located.
Here are the 4 worst offenders from popt-1.16. (the 1st column is the metric,
lower is better, a metric of 30 tends to have a 50% chance of having a "bug"
through real world correlation testing):
80 80 160 1299 253 popt.c(1299): poptGetNextOpt
53 63 138 307 205 popthelp.c(307): singleOptionHelp
48 48 103 263 127 poptconfig.c(263): poptConfigLine
29 30 37 578 69 popt.c(579): findOption
And the same for POPT head:
74 76 171 1422 273 popt.c(1422): poptGetNextOpt
53 63 140 314 207 popthelp.c(314): singleOptionHelp
48 48 103 263 127 poptconfig.c(263): poptConfigLine
29 30 37 601 69 popt.c(602): findOption
The reduction from 80 -> 74 is due to a rewrite to handle
POPT_ERROR_UNWANTEDARG.
I'll have the mccabe "cholestrol" count down below 50 before I'm done.
Meanwhile I'm going yo have to move from POPT -> RPM hacking for a bit, I
have rpm-5.3.2 to get out on 7/1, and I also need to try and see what
damage I've done by using POPT head under RPM for a bit.
73 de Jeff
______________________________________________________________________
POPT Library http://rpm5.org
Developer Communication List [email protected]