[igt-dev] [PATCH 6/6] scripts/code_cov_parse_info: print common coverage and extra per function
Mauro Carvalho Chehab
mauro.chehab at linux.intel.com
Thu Sep 22 08:46:18 UTC 2022
From: Mauro Carvalho Chehab <mchehab at kernel.org>
While analyzing the data, it is nice to have a quick summary about
how much each set of the analyzed data contributes to the total.
So, generate a function summary report with the interception of
all the sets ("common function coverage"), plus the difference
that an individual test group contributes.
This is useful to provide a quick feedback on several situations:
- When comparing FULL with BAT:
- how many functions are added on FULL?
- are there functions that are only on BAT?
- When comparing different machines:
- How many functions each individual machine has over
the common group?
- When comparing a group of tests:
- How many functions an individual test adds for the
coverage that weren't covered at the common group yet?
Signed-off-by: Mauro Carvalho Chehab <mchehab at kernel.org>
---
To avoid mailbombing on a large number of people, only mailing lists were C/C on the cover.
See [PATCH 0/6] at: https://lore.kernel.org/all/cover.1663836123.git.mchehab@kernel.org/
scripts/code_cov_parse_info | 81 +++++++++++++++++++++++++++++++++++++
1 file changed, 81 insertions(+)
diff --git a/scripts/code_cov_parse_info b/scripts/code_cov_parse_info
index 7f3e1f9ef116..72a1e8c2b0ad 100755
--- a/scripts/code_cov_parse_info
+++ b/scripts/code_cov_parse_info
@@ -574,6 +574,8 @@ sub generate_report($)
%used_source = ();
%files = ();
%test_names = ();
+ my @all_func_keys;
+ my %info_files_with_func;
foreach my $f (@info_files) {
foreach my $source (keys(%{$report{$f}{"all_line"}})) {
@@ -586,6 +588,14 @@ sub generate_report($)
foreach my $file (keys(%{$report{$f}{"all_func"}{$func}})) {
$all_func{$func}{$file}->{ln} = $report{$f}{"all_func"}{$func}{$file}->{ln};
$used_func{$func}->{$file} = 1 if ($report{$f}{"used_func"}{$func}->{$file});
+ if ($report{$f}{"used_func"}{$func}->{$file}) {
+ $used_func{$func}->{$file} = 1;
+ if (!$info_files_with_func{"$file $func"}) {
+ $info_files_with_func{"$file $func"} = 1;
+ } else {
+ $info_files_with_func{"$file $func"}++;
+ }
+ }
}
}
foreach my $source (keys(%{$report{$f}{"all_branch"}})) {
@@ -603,6 +613,25 @@ sub generate_report($)
}
gen_stats();
+ # Gen code coverage set comparision counters
+ my $common_func_count = 0;
+ foreach my $k (keys %info_files_with_func) {
+ $common_func_count++ if ($info_files_with_func{$k} == scalar (@info_files));
+ }
+ foreach my $f (@info_files) {
+ $report{$f}{"more_func"} = 0;
+ $report{$f}{"uniq_func"} = 0;
+ foreach my $func (keys(%{$report{$f}{"all_func"}})) {
+ foreach my $file (keys(%{$report{$f}{"all_func"}{$func}})) {
+ next if (!$report{$f}{"used_func"}{$func}->{$file});
+ next if ($info_files_with_func{"$file $func"} == scalar (@info_files));
+
+ $report{$f}{"more_func"}++;
+ $report{$f}{"uniq_func"}++ if ($info_files_with_func{"$file $func"} == 1);
+ }
+ }
+ }
+
# Colors for the html output
my $red = "style=\"background-color:#ffb3b3\"";
@@ -720,6 +749,58 @@ sub generate_report($)
}
print OUT " </tr>\n</table><p/>\n\n";
+ # Print function diff
+ print OUT " <h2>Differences on function coverage</h2>\n";
+ print OUT "<table width=\"100%\" border=1 cellspacing=0 cellpadding=0>\n <tr>\n";
+ print OUT " <th></th>\n";
+ print OUT " <th>Common to all</th>\n";
+ foreach my $f (@info_files) {
+ print OUT " <th>$f</th>\n";
+ }
+ print OUT " <th>TOTAL</th>\n";
+
+ print OUT " </tr><tr>\n";
+ print OUT " <td>#Functions per category</td>\n";
+
+ printf OUT " <td>%d</td>\n", $common_func_count;
+
+ foreach my $f (@info_files) {
+ my %st = %{$report{$f}{"stats"}};
+ if ($st{"func_count"}) {
+ printf OUT " <td>%d</td>\n", $st{"func_used"};
+
+ }
+ }
+ print OUT " <td>" . $stats{"func_count"} . "</td>\n";
+
+ print OUT " </tr><tr>\n";
+ print OUT " <td>#functions not in common</td>\n";
+ print OUT " <td></td>\n";
+ foreach my $f (@info_files) {
+ my %st = %{$report{$f}{"stats"}};
+ if ($st{"func_count"}) {
+ printf OUT " <td>%d</td>\n", $report{$f}{"more_func"};
+
+ }
+ }
+ print OUT " <td></td>\n";
+
+ print OUT " </tr><tr>\n";
+ print OUT " <td>Unique functions</td>\n";
+ print OUT " <td></td>\n";
+ foreach my $f (@info_files) {
+ my %st = %{$report{$f}{"stats"}};
+ if ($st{"func_count"}) {
+ printf OUT " <td>%d</td>\n", $report{$f}{"uniq_func"};
+
+ }
+ }
+ print OUT " <td></td>\n";
+
+ print OUT " </tr>\n</table><p/>\n\n";
+
+ # Print the filters applied when generating the report
+
if ($filter_str ne "") {
printf OUT "<p>Filters: %s.</p>\n", $filter_str;
} else {
--
2.37.2
More information about the igt-dev
mailing list