Skip to content

Commit

Permalink
scripts: kernel_doc: better handle show warnings logic
Browse files Browse the repository at this point in the history
The logic with inhibits warnings for definitions that is not
output is incomplete: it doesn't cover the cases where
OUTPUT_INTERNAL and OUTPUT_EXPORTED are used.

As the most common case is OUTPUT_ALL, place it first,
in order to optimize a litte bit the check logic.

Fixes: 2defb27 ("scripts: kernel-doc: apply filtering rules to warnings")
Reported-by: Randy Dunlap <[email protected]>
Acked-and-Tested-by: Randy Dunlap <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
Signed-off-by: Jonathan Corbet <[email protected]>
  • Loading branch information
mchehab authored and Jonathan Corbet committed Jan 1, 2018
1 parent 91581e4 commit 85afe60
Showing 1 changed file with 41 additions and 15 deletions.
56 changes: 41 additions & 15 deletions scripts/kernel-doc
Original file line number Diff line number Diff line change
Expand Up @@ -1140,6 +1140,44 @@ sub dump_struct($$) {
}
}


sub show_warnings($$) {
my $functype = shift;
my $name = shift;

return 1 if ($output_selection == OUTPUT_ALL);

if ($output_selection == OUTPUT_EXPORTED) {
if (defined($function_table{$name})) {
return 1;
} else {
return 0;
}
}
if ($output_selection == OUTPUT_INTERNAL) {
if (!($functype eq "function" && defined($function_table{$name}))) {
return 1;
} else {
return 0;
}
}
if ($output_selection == OUTPUT_INCLUDE) {
if (defined($function_table{$name})) {
return 1;
} else {
return 0;
}
}
if ($output_selection == OUTPUT_EXCLUDE) {
if (!defined($function_table{$name})) {
return 1;
} else {
return 0;
}
}
die("Please add the new output type at show_warnings()");
}

sub dump_enum($$) {
my $x = shift;
my $file = shift;
Expand All @@ -1160,11 +1198,7 @@ sub dump_enum($$) {
push @parameterlist, $arg;
if (!$parameterdescs{$arg}) {
$parameterdescs{$arg} = $undescribed;
if (($output_selection == OUTPUT_ALL) ||
($output_selection == OUTPUT_INCLUDE &&
defined($function_table{$declaration_name})) ||
($output_selection == OUTPUT_EXCLUDE &&
!defined($function_table{$declaration_name}))) {
if (show_warnings("enum", $declaration_name)) {
print STDERR "${file}:$.: warning: Enum value '$arg' not described in enum '$declaration_name'\n";
}
}
Expand All @@ -1173,11 +1207,7 @@ sub dump_enum($$) {

while (my ($k, $v) = each %parameterdescs) {
if (!exists($_members{$k})) {
if (($output_selection == OUTPUT_ALL) ||
($output_selection == OUTPUT_INCLUDE &&
defined($function_table{$declaration_name})) ||
($output_selection == OUTPUT_EXCLUDE &&
!defined($function_table{$declaration_name}))) {
if (show_warnings("enum", $declaration_name)) {
print STDERR "${file}:$.: warning: Excess enum value '$k' description in '$declaration_name'\n";
}
}
Expand Down Expand Up @@ -1385,11 +1415,7 @@ sub push_parameter($$$$) {
if (!defined $parameterdescs{$param} && $param !~ /^#/) {
$parameterdescs{$param} = $undescribed;

if (($output_selection == OUTPUT_ALL) ||
($output_selection == OUTPUT_INCLUDE &&
defined($function_table{$declaration_name})) ||
($output_selection == OUTPUT_EXCLUDE &&
!defined($function_table{$declaration_name}))) {
if (show_warnings($type, $declaration_name)) {
print STDERR
"${file}:$.: warning: Function parameter or member '$param' not described in '$declaration_name'\n";
++$warnings;
Expand Down

0 comments on commit 85afe60

Please sign in to comment.