diff options
| -rw-r--r-- | Jamfile.jam | 10 | ||||
| -rw-r--r-- | tests/gcov-filter.pl | 23 | 
2 files changed, 32 insertions, 1 deletions
diff --git a/Jamfile.jam b/Jamfile.jam index 15a0e63..df8d5be 100644 --- a/Jamfile.jam +++ b/Jamfile.jam @@ -43,7 +43,15 @@ if ( $(toolset:I=^mingw) || $(toolset:I=^gcc) )  {  	CCFLAGS = -fprofile-arcs -ftest-coverage ;  	LDFLAGS = -fprofile-arcs ; -	GCOVFLAGS = -n ; + +	if $(fullcoverage) +	{ +		GCOVFLAGS = --branch-probabilities --function-summaries ; +	} +	else +	{ +		GCOVFLAGS = --no-output ; +	}  }  # build folder diff --git a/tests/gcov-filter.pl b/tests/gcov-filter.pl index c68aa1f..f0d2019 100644 --- a/tests/gcov-filter.pl +++ b/tests/gcov-filter.pl @@ -1,10 +1,33 @@  #!/usr/bin/perl +sub funcinfo +{ +	my ($name, $info) = @_; + +	return if ($info =~ /No executable lines/); + +	my $lines = ($info =~ /Lines executed:([^%]+)%/) ? $1 : 100; +	my $calls = ($info =~ /Calls executed:([^%]+)%/) ? $1 : 100; +	my $branches = ($info =~ /Branches executed:([^%]+)%/) ? $1 : 100; +	my $taken = ($info =~ /Taken at least once:([^%]+)%/) ? $1 : 100; + +	return if ($lines == 100 && $calls == 100 && $branches == 100 && $taken == 100); + +	return "Function $name: L $lines, C $calls, B $branches, BT $taken\n"; +} +  $prefix = join(' ', @ARGV);  $prefix .= ' ' if ($prefix ne '');  $lines = join('', <STDIN>); + +# merge file information  $lines =~ s/File (.+)\nLines (.+)\n(.+\n)*\n/$1 $2\n/g; + +# merge function information +$lines =~ s/Function (.+)\n((.+\n)*)\n/funcinfo($1, $2)/eg; + +# remove include information  $lines =~ s/.+include\/c\+\+.+\n//g;  foreach $line (split /\n/, $lines)  | 
