Unlike all other types, LONG_LINE, LONG_LINE_COMMENT and
LONG_LINE_STRING are passed to WARN() through a variable. This causes
the parser in list_types() to miss them and consequently they are not
present in the output of --list-types.

Additionally, types TYPO_SPELLING, FSF_MAILING_ADDRESS and AVOID_BUG
are passed with a variable level, causing the parser to miss them
too.

So modify the regex to also catch these special cases.

Signed-off-by: Jean Delvare <jdelv...@suse.de>
Fixes: 3beb42eced39 ("checkpatch: add --list-types to show message types to 
show or ignore")
Cc: Andy Whitcroft <a...@canonical.com>
Cc: Joe Perches <j...@perches.com>
---
 scripts/checkpatch.pl |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- linux-4.13-rc7.orig/scripts/checkpatch.pl   2017-09-02 17:46:45.852024037 
+0200
+++ linux-4.13-rc7/scripts/checkpatch.pl        2017-09-02 17:46:55.925163818 
+0200
@@ -145,7 +145,8 @@ sub list_types {
        close($script);
 
        my @types = ();
-       for ($text =~ /\b(?:(?:CHK|WARN|ERROR)\s*\(\s*"([^"]+)")/g) {
+       # Also catch when type or level is passed through a variable
+       for ($text =~ 
/(?:(?:\bCHK|\bWARN|\bERROR|&\{\$msg_level})\s*\(|\$msg_type\s*=)\s*"([^"]+)"/g)
 {
                push (@types, $_);
        }
        @types = sort(uniq(@types));

-- 
Jean Delvare
SUSE L3 Support

Reply via email to