scripts: kernel-doc: apply filtering rules to warnings
authorMauro Carvalho Chehab <mchehab@s-opensource.com>
Mon, 18 Dec 2017 12:30:18 +0000 (10:30 -0200)
committerJonathan Corbet <corbet@lwn.net>
Thu, 21 Dec 2017 20:41:47 +0000 (13:41 -0700)
When kernel-doc is called with output selection filters,
it will be called lots of time for a single file. If
there is a warning present there, it means that it may
print hundreds of identical warnings.

Worse than that, the -function NAME actually filters only
functions. So, it makes no sense at all to print warnings
for structs or enums.

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
scripts/kernel-doc

index 0bda21d..1e2b35c 100755 (executable)
@@ -1160,16 +1160,26 @@ sub dump_enum($$) {
            push @parameterlist, $arg;
            if (!$parameterdescs{$arg}) {
                $parameterdescs{$arg} = $undescribed;
-               print STDERR "${file}:$.: warning: Enum value '$arg' ".
-                   "not described in enum '$declaration_name'\n";
+               if (($output_selection == OUTPUT_ALL) ||
+                   ($output_selection == OUTPUT_INCLUDE &&
+                    defined($function_table{$declaration_name})) ||
+                   ($output_selection == OUTPUT_EXCLUDE &&
+                    !defined($function_table{$declaration_name}))) {
+                       print STDERR "${file}:$.: warning: Enum value '$arg' not described in enum '$declaration_name'\n";
+               }
            }
            $_members{$arg} = 1;
        }
 
        while (my ($k, $v) = each %parameterdescs) {
            if (!exists($_members{$k})) {
-            print STDERR "${file}:$.: warning: Excess enum value " .
-                         "'$k' description in '$declaration_name'\n";
+               if (($output_selection == OUTPUT_ALL) ||
+                   ($output_selection == OUTPUT_INCLUDE &&
+                    defined($function_table{$declaration_name})) ||
+                   ($output_selection == OUTPUT_EXCLUDE &&
+                    !defined($function_table{$declaration_name}))) {
+                    print STDERR "${file}:$.: warning: Excess enum value '$k' description in '$declaration_name'\n";
+               }
            }
         }
 
@@ -1375,9 +1385,15 @@ sub push_parameter($$$$) {
        if (!defined $parameterdescs{$param} && $param !~ /^#/) {
                $parameterdescs{$param} = $undescribed;
 
-               print STDERR
-                     "${file}:$.: warning: Function parameter or member '$param' not described in '$declaration_name'\n";
-               ++$warnings;
+               if (($output_selection == OUTPUT_ALL) ||
+                   ($output_selection == OUTPUT_INCLUDE &&
+                    defined($function_table{$declaration_name})) ||
+                   ($output_selection == OUTPUT_EXCLUDE &&
+                    !defined($function_table{$declaration_name}))) {
+                       print STDERR
+                             "${file}:$.: warning: Function parameter or member '$param' not described in '$declaration_name'\n";
+                       ++$warnings;
+               }
        }
 
        $param = xml_escape($param);