[Maria-developers] Rev 2747: Gcov support improvements in file:///home/psergey/dev/maria-5.1-table-elim-r11-gcov/
![](https://secure.gravatar.com/avatar/bccaf81a23eecaecd9feaf01c7c42ff4.jpg?s=120&d=mm&r=g)
At file:///home/psergey/dev/maria-5.1-table-elim-r11-gcov/
------------------------------------------------------------
revno: 2747
revision-id: psergey@askmonty.org-20090825150255-46i5gvl2ctd0jcm2
parent: psergey@askmonty.org-20090825145915-rxwmfczgqe69r5ju
committer: Sergey Petrunya
![](https://secure.gravatar.com/avatar/99fde0c1dfd216326aae0aff30d493f1.jpg?s=120&d=mm&r=g)
Sergey Petrunya
At file:///home/psergey/dev/maria-5.1-table-elim-r11-gcov/
------------------------------------------------------------ revno: 2747 revision-id: psergey@askmonty.org-20090825150255-46i5gvl2ctd0jcm2 parent: psergey@askmonty.org-20090825145915-rxwmfczgqe69r5ju committer: Sergey Petrunya
branch nick: maria-5.1-table-elim-r11-gcov timestamp: Tue 2009-08-25 18:02:55 +0300 message: Gcov support improvements - add process-gcov-annotations.pl script that processes .gcov files according to purecov annotations in source code - add --gcov-src-dir=subdir option to mysql-test-run so that one can do gcov processing only for source files in a certain directory.
Nice additions!
=== modified file 'mysql-test/lib/mtr_gcov.pl' --- a/mysql-test/lib/mtr_gcov.pl 2009-04-25 09:04:38 +0000 +++ b/mysql-test/lib/mtr_gcov.pl 2009-08-25 15:02:55 +0000
@@ -62,6 +64,7 @@ $dir_reported= 1; } system("$gcov $f 2>>$start_dir/$gcov_err >>$start_dir/$gcov_msg"); + system("perl $basedir/mysql-test/lib/process-purecov-annotations.pl $f.gcov");
Better do something like this: system("perl", "$basedir/mysql-test/lib/process-purecov-annotations.pl", "$f.gcov"); as it is robust to spaces and other shell metachars in the data.
=== added file 'mysql-test/lib/process-purecov-annotations.pl' --- a/mysql-test/lib/process-purecov-annotations.pl 1970-01-01 00:00:00 +0000 +++ b/mysql-test/lib/process-purecov-annotations.pl 2009-08-25 15:02:55 +0000
+ # Besides purecov annotations, also remove uncovered code mark from cases + # like the following: + # + # -: 211:*/ + # -: 212:class Field_value : public Value_dep + # #####: 213:{ + # -: 214:public: + # + # I have no idea why would gcov think there is uncovered code there
Maybe generated default constructor, destructor, or the like that was not run?
+ # + my @arr= split(/:/, $line); + if ($skipping || $line =~ /purecov: *(inspected|deadcode)/ || + $arr[2] =~ m/^{ */)
Note that m/^{ */ matches the same lines as m/^{/. Maybe you intended to use m/^{ *$/ to require the line to be empty except for a starting brace? Or else just use m/^{/.
+ { + # Change '####' to '-'. + $arr[0] =~ s/#####/ -/g; + $line= join(":", @arr); + } + print OUT $line; + } + close(IN); + close(OUT); + system("cat $out_file_name > $in_file_name"); + system("rm $out_file_name");
system("mv", "-f", $out_file_name, $in_file_name); (or cp / rm with multi-argument system()).
=== modified file 'mysql-test/mysql-test-run.pl' --- a/mysql-test/mysql-test-run.pl 2009-06-22 08:06:35 +0000 +++ b/mysql-test/mysql-test-run.pl 2009-08-25 15:02:55 +0000 @@ -169,6 +169,7 @@ our $opt_mem= $ENV{'MTR_MEM'};
our $opt_gcov; +our $opt_gcov_src_dir;
Don't you need to initialise to empty string '' to avoid a warning with undefined value? (Or maybe getopt handles it?). - Kristian.
![](https://secure.gravatar.com/avatar/bccaf81a23eecaecd9feaf01c7c42ff4.jpg?s=120&d=mm&r=g)
On Thu, Aug 27, 2009 at 01:36:06PM +0200, Kristian Nielsen wrote:
Sergey Petrunya
writes: At file:///home/psergey/dev/maria-5.1-table-elim-r11-gcov/
------------------------------------------------------------ revno: 2747 revision-id: psergey@askmonty.org-20090825150255-46i5gvl2ctd0jcm2 parent: psergey@askmonty.org-20090825145915-rxwmfczgqe69r5ju committer: Sergey Petrunya
branch nick: maria-5.1-table-elim-r11-gcov timestamp: Tue 2009-08-25 18:02:55 +0300 message: Gcov support improvements - add process-gcov-annotations.pl script that processes .gcov files according to purecov annotations in source code - add --gcov-src-dir=subdir option to mysql-test-run so that one can do gcov processing only for source files in a certain directory.
(Addressed all the omitted review feedback)
+ # Besides purecov annotations, also remove uncovered code mark from cases + # like the following: + # + # -: 211:*/ + # -: 212:class Field_value : public Value_dep + # #####: 213:{ + # -: 214:public: + # + # I have no idea why would gcov think there is uncovered code there
Maybe generated default constructor, destructor, or the like that was not run?
IIRC it wasn't the constructor (as it was used at some point and the warning was still there). It could be the destructor - objects were never delete'd. I'd prefer the removal to be still there though as it doesn't seem that we're at a point where we'll go and add default constructor, copy constructor, and destructor declaration to every class. For MySQL/Maria codebase, I don't remember a single case where there was an error that would have been prevented by such safeguards. BR Sergey -- Sergey Petrunia, Software Developer Monty Program AB, http://askmonty.org Blog: http://s.petrunia.net/blog
participants (2)
-
Kristian Nielsen
-
Sergey Petrunya