mirror of
https://github.com/torvalds/linux.git
synced 2025-11-01 17:18:25 +02:00
scripts/kernel-doc.py: Properly handle Werror and exit codes
The original kernel-doc script has a logic to return warnings as errors, and to report the number of warnings found, if in verbose mode. Implement it to be fully compatible with the original script. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Link: https://lore.kernel.org/r/de33b0cebd9fdf82d8b221bcfe41db7269286222.1744106242.git.mchehab+huawei@kernel.org
This commit is contained in:
parent
e4b2bd908c
commit
11afeab6d7
4 changed files with 35 additions and 18 deletions
|
|
@ -78,8 +78,6 @@
|
||||||
# Yacine Belkadi <yacine.belkadi.1@gmail.com>
|
# Yacine Belkadi <yacine.belkadi.1@gmail.com>
|
||||||
# Yujie Liu <yujie.liu@intel.com>
|
# Yujie Liu <yujie.liu@intel.com>
|
||||||
|
|
||||||
# TODO: implement warning filtering
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
kernel_doc
|
kernel_doc
|
||||||
==========
|
==========
|
||||||
|
|
@ -295,6 +293,22 @@ def main():
|
||||||
if msg:
|
if msg:
|
||||||
print(msg)
|
print(msg)
|
||||||
|
|
||||||
|
error_count = kfiles.errors
|
||||||
|
if not error_count:
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
if args.werror:
|
||||||
|
print(f"{error_count} warnings as errors")
|
||||||
|
sys.exit(error_count)
|
||||||
|
|
||||||
|
if args.verbose:
|
||||||
|
print(f"{error_count} errors")
|
||||||
|
|
||||||
|
if args.none:
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
sys.exit(error_count)
|
||||||
|
|
||||||
|
|
||||||
# Call main method
|
# Call main method
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ import argparse
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import sys
|
|
||||||
|
|
||||||
from kdoc_parser import KernelDoc
|
from kdoc_parser import KernelDoc
|
||||||
from kdoc_output import OutputFormat
|
from kdoc_output import OutputFormat
|
||||||
|
|
@ -109,7 +108,7 @@ class KernelFiles():
|
||||||
KernelDoc.process_export(self.config.function_table, line)
|
KernelDoc.process_export(self.config.function_table, line)
|
||||||
|
|
||||||
except IOError:
|
except IOError:
|
||||||
print(f"Error: Cannot open fname {fname}", fname=sys.stderr)
|
self.config.log.error("Error: Cannot open fname %s", fname)
|
||||||
self.config.errors += 1
|
self.config.errors += 1
|
||||||
|
|
||||||
def file_not_found_cb(self, fname):
|
def file_not_found_cb(self, fname):
|
||||||
|
|
@ -262,3 +261,12 @@ class KernelFiles():
|
||||||
fname, ln, dtype)
|
fname, ln, dtype)
|
||||||
if msg:
|
if msg:
|
||||||
yield fname, msg
|
yield fname, msg
|
||||||
|
|
||||||
|
@property
|
||||||
|
def errors(self):
|
||||||
|
"""
|
||||||
|
Return a count of the number of warnings found, including
|
||||||
|
the ones displayed while interacting over self.msg.
|
||||||
|
"""
|
||||||
|
|
||||||
|
return self.config.errors
|
||||||
|
|
|
||||||
|
|
@ -128,11 +128,9 @@ class OutputFormat:
|
||||||
|
|
||||||
warnings = args.get('warnings', [])
|
warnings = args.get('warnings', [])
|
||||||
|
|
||||||
for warning, log_msg in warnings:
|
for log_msg in warnings:
|
||||||
if warning:
|
|
||||||
self.config.log.warning(log_msg)
|
self.config.log.warning(log_msg)
|
||||||
else:
|
self.config.errors += 1
|
||||||
self.config.log.info(log_msg)
|
|
||||||
|
|
||||||
def check_doc(self, name, args):
|
def check_doc(self, name, args):
|
||||||
"""Check if DOC should be output"""
|
"""Check if DOC should be output"""
|
||||||
|
|
|
||||||
|
|
@ -137,17 +137,18 @@ class KernelDoc:
|
||||||
|
|
||||||
log_msg = f"{self.fname}:{ln} {msg}"
|
log_msg = f"{self.fname}:{ln} {msg}"
|
||||||
|
|
||||||
|
if not warning:
|
||||||
|
self.config.log.info(log_msg)
|
||||||
|
return
|
||||||
|
|
||||||
if self.entry:
|
if self.entry:
|
||||||
# Delegate warning output to output logic, as this way it
|
# Delegate warning output to output logic, as this way it
|
||||||
# will report warnings/info only for symbols that are output
|
# will report warnings/info only for symbols that are output
|
||||||
|
|
||||||
self.entry.warnings.append((warning, log_msg))
|
self.entry.warnings.append(log_msg)
|
||||||
return
|
return
|
||||||
|
|
||||||
if warning:
|
|
||||||
self.config.log.warning(log_msg)
|
self.config.log.warning(log_msg)
|
||||||
else:
|
|
||||||
self.config.log.info(log_msg)
|
|
||||||
|
|
||||||
def dump_section(self, start_new=True):
|
def dump_section(self, start_new=True):
|
||||||
"""
|
"""
|
||||||
|
|
@ -556,7 +557,6 @@ class KernelDoc:
|
||||||
|
|
||||||
if not members:
|
if not members:
|
||||||
self.emit_warning(ln, f"{proto} error: Cannot parse struct or union!")
|
self.emit_warning(ln, f"{proto} error: Cannot parse struct or union!")
|
||||||
self.config.errors += 1
|
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.entry.identifier != declaration_name:
|
if self.entry.identifier != declaration_name:
|
||||||
|
|
@ -831,7 +831,6 @@ class KernelDoc:
|
||||||
|
|
||||||
if not members:
|
if not members:
|
||||||
self.emit_warning(ln, f"{proto}: error: Cannot parse enum!")
|
self.emit_warning(ln, f"{proto}: error: Cannot parse enum!")
|
||||||
self.config.errors += 1
|
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.entry.identifier != declaration_name:
|
if self.entry.identifier != declaration_name:
|
||||||
|
|
@ -1132,7 +1131,6 @@ class KernelDoc:
|
||||||
return
|
return
|
||||||
|
|
||||||
self.emit_warning(ln, "error: Cannot parse typedef!")
|
self.emit_warning(ln, "error: Cannot parse typedef!")
|
||||||
self.config.errors += 1
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def process_export(function_table, line):
|
def process_export(function_table, line):
|
||||||
|
|
@ -1677,4 +1675,3 @@ class KernelDoc:
|
||||||
self.process_docblock(ln, line)
|
self.process_docblock(ln, line)
|
||||||
except OSError:
|
except OSError:
|
||||||
self.config.log.error(f"Error: Cannot open file {self.fname}")
|
self.config.log.error(f"Error: Cannot open file {self.fname}")
|
||||||
self.config.errors += 1
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue