diff mbox

[v4,17/18] scripts: kernel-doc: apply filtering rules to warnings

Message ID 00917bd6bbb0250c893433f27df956ea5c7e07a2.1513599193.git.mchehab@s-opensource.com (mailing list archive)
State New, archived
Headers show

Commit Message

Mauro Carvalho Chehab Dec. 18, 2017, 12:30 p.m. UTC
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>
---
 scripts/kernel-doc | 30 +++++++++++++++++++++++-------
 1 file changed, 23 insertions(+), 7 deletions(-)
diff mbox

Patch

diff --git a/scripts/kernel-doc b/scripts/kernel-doc
index 0bda21d9d3f2..1e2b35ce1c9d 100755
--- a/scripts/kernel-doc
+++ b/scripts/kernel-doc
@@ -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);