In accordance with the terms of my grant from TPF this is the monthly
report for my work on improving Devel::Cover covering January 2013.

If you were watching closely you'll have noticed that I finished my December
report with exactly 200 hours worked on the grant.  The reason for that was
that that completed the first half of the grant.

>From my point of view the first half has been rather successful.  I won't go
through the accomplishments in detail, they're in the monthly reports if you
want to look, but I'm happy to have been able to have the opportunity to solve
a number of tricky bugs which have been around for a long time.

I'm pleased to be able to report that we've agreed to continue with the second
half of the grant.  This is likely to continue in a similar vein to the first
half but we've decided that, in conjunction with the monthly reports, the
weekly reports are overkill so there'll be just the one official report per
month unless I do a bit more work than usual one month.

I'd like to publicly thank Ricardo Signes and Florian Ragwitz for their help
and support in managing the first half of the grant.  I'm well aware that
neither of them has really got anything better to do, but I'm grateful
nevertheless.  I'm happy to announce that that Christian Walde (Mithaldu) has
agreed to manage the second half of the grant in Florian's stead, and I look
forward to working with him.

January started with fixing a segmentation fault which occurred when an xor
operator was optimised away through constant folding.  Then I looked into a
couple of cpantesters reports which showed a problem on Windows.  I couldn't
repeat the failures, and it seemed that only one tester had the problem, on
version 0.98.  Version 0.99 seems not to have shown any failures, so I'll
chalk that up to cosmic rays or something.

There was a problem reported on perlmonks
(http://www.perlmonks.org/?node_id=1011058) which turned out to be a bug in
Devel::Cover.  The code to check whether we are collecting coverage in a file
calls into Perl code from within hijacked ops.  Hijacked ops are perl ops
where Devel::Cover changes the op's function pointer so it can do some work
before continuing on with what perl needs to do.

When collecting coverage with tainting turned on, this could leave things
tainted when they shouldn't have been.  The fairly simple solution was to get
the tainting status before calling the Perl subroutine and restore that status
afterwards, but this was one of those bugs where all the effort was spent in
locating the problem, which involved getting fairly intimate with gdb and
PL_tainted.

David Cantrell added JavaScript to filter results in html_basic and sent me a
pull request.  This is a useful option if your coverage run includes many
files.  I merged the pull request and also added an option to the report to
control whether or not the filter is available.  The option defaults to on,
but it might be worth making that dependent on the number of files in the
report.

I tested Devel::Cover against the newly released 5.17.8 which didn't show up
any problems.

I started preparing a release and decided that I should finally finish off and
document the "uncoverable" options - the ability to flag a section of code
that cannot be covered.  In doing so, I came across a bug, not in that code,
but in the code for condition coverage.  This is probably the most complicated
section of the Devel::Cover code.

I narrowed down the problem somewhat, and it seems to be caused by a change in
perl's opcode handling, but I didn't come to any firm conclusions.  Hopefully
there will be more news on this in February's report.

Closed RT tickets:

Closed Github tickets:

  40 0.99 Segmentation fault for xor eval'ed operator
  41 Spurious tainting errors.

Merged pull requests:

  42 Add Javascript filtery thing to Html_basic reports

You can see the commits at https://github.com/pjcj/Devel--Cover/commits/master

Hours worked:

  05.01   9:20
  19.01   2:30
  23.01   1:15
  26.01   8:25

  Total  21:30

Total hours worked on grant: 221:30

-- 
Paul Johnson - p...@pjcj.net
http://www.pjcj.net

Reply via email to