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                       popt-devel@rpm5.org

Reply via email to