Re: TPF Devel::Cover grant report Week 18

Ovid <[email protected]>
Newsgroups gmane.comp.lang.perl.quality-assurance
Message-ID <[email protected]>
Hi Paul,

I'm very happy to see the great work you've been doing for Devel::Cover.

I've been meaning to ask: have you considered adding basis path coverage information? Devel::Cover appears to be tracking all of the relevant data. It seems that now it would merely be a matter of writing the algorithm to generate the basis coverage. Many other languages have automated tools for generating the requisite cyclomatic complexity and basic path information. It would be awesome if Perl had this too :)
 
For others: yes, I know that PPI offers cyclomatic complexity information. I would like to see all code coverage information provided in "one-stop shopping" for Perl rather than relying on a separate tool (and I don't know that PPI exposes the control-flow graph used to calculate the cyclomatic complexity. Does it?).

Cheers,
Ovid
--
Twitter - http://twitter.com/OvidPerl/
Buy my book - http://bit.ly/beginning_perl
Buy my other book - http://www.oreilly.com/catalog/perlhks/
Live and work overseas - http://www.overseas-exile.com/


>________________________________
> From: Paul Johnson <[email protected]>
>To: [email protected] 
>Cc: Florian Ragwitz <[email protected]>; Ricardo Signes <[email protected]> 
>Sent: Saturday, 22 September 2012, 3:14
>Subject: TPF Devel::Cover grant report Week 18
> 
>In accordance with the terms of my grant from TPF this is the report for
>week 18 of my work on improving Devel::Cover.
>
>This report covers 15.09 to 21.09.
>
>This week I released Devel::Cover version 0.94.
>
>I was finally able to get back to doing some grant related work this week, and
>the first thing I did was catch up on some of the Devel::Cover related mail I
>have received whilst installing perl-5.16.1 and perl-5.17.3.
>
>I had already installed 5.16.1 as my default perl via perlbrew, but I have a
>suite of perl versions that I use to test every Devel::Cover release
>candidate, and those perl versions aren't installed via perlbrew.  I have
>tried, but I couldn't get perlbrew to automatically apply appropriate patches
>to old perls so they could be built today, although perlbrew's
>install-patchperl seems to suggest that that should be possible.
>
>If anyone knows how to do that, I'd love a hint.  Or better yet, a pull
>request against build() in
>https://github.com/pjcj/Devel--Cover/blob/master/utils/all_versions
>
>And if anyone is interested in my current regression testing solution, it's
>basically that file above plus https://github.com/pjcj/buildperls to build the
>perl versions.  It's not overly pretty, but it does mean that I can build new
>perls simply by dropping a tarball into a src directory and running a command.
>And not having to think about stuff like that is always a win.
>
>Having built those perl versions I ran them on Devel::Cover and, as expected,
>saw that Devel::Cover fails its tests on 5.17.3.  This is something I knew
>about from discussions with Father Chrysostomos on p5p and also from failing
>cpantesters reports.  (Thanks again cpantesters!)
>
>The failure was purely cosmetic and brought about by Father Chrysostomos
>fixing up loopexes.  The details are in
>https://rt.perl.org/rt3//Public/Bug/Display.html?id=113684 and the explanation
>of why the cosmetic change exists are in
>https://rt.perl.org/rt3//Public/Bug/Display.html?id=106892#txn-1043534
>
>That seemed sufficient for a new release, so I let 0.94 roam the CPAN mirrors.
>
>Whilst all that was going on, I also set cpancover running against an official
>5.16.1 release (The previous run was against an RC).  The results are
>available at http://cpancover.com, as usual.
>
>I investigated github ticket 15: issue with Moo attribute which is Moo object.
>
>This turned out to be another of those longstanding bugs that I knew a bit
>about but had never been able to find the time to put in sufficient effort to
>crack.  Thanks to the grant I was able to crack it.
>
>The problem was with condition coverage, and in particular when the first
>operand of a LOGOP called (directly or indirectly) a subroutine in a file for
>which coverage was not being collected.  This meant that at the time
>Devel::Cover decided whether or not to collect coverage data for the LOGOP the
>last COP seen was indicating that coverage shouldn't be collected.  The
>solution was to check PL_curcop at appropriate times.
>
>In conjunction with this I was able to add numerous test cases from RT and
>github and close out various tickets.
>
>
>Closed RT tickets:
>
>  63090 conditionals where one element is data from a Moose attrib are not evaluated
>  63698 Math::BigInt ':constant' confuses branch coverage
>  72027 Devel::Cover does not detect branch coverage with DBM::Deep
>  38258 inclusion/exclusion options to cover not reflected in summary row
>  34327 Condition coverage for constants
>
>Closed Github tickets:
>
>  15 issue with Moo attribute which is Moo object
>
>Merged pull requests:
>
>  20 failing test for branching coverage of Moo attributes
>
>Fixed cpantesters reports:
>
>  http://www.cpantesters.org/cpan/report/ceee4f36-de73-11e1-a876-575485400d13
>  http://www.cpantesters.org/cpan/report/f296fa46-de73-11e1-bc68-855885400d13
>  http://www.cpantesters.org/cpan/report/abe8c2d2-de73-11e1-bad3-055385400d13
>
>You can see the commits at https://github.com/pjcj/Devel--Cover/commits/master
>
>Hours worked:
>
>  17.09   4:45
>  19.09   9:00
>  20.09   3:25
>
>  Total  17:10
>
>-- 
>Paul Johnson - [email protected]
>http://www.pjcj.net
>
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.