Skip to content

Commit

Permalink
checkpatch: add --list-types to show message types to show or ignore
Browse files Browse the repository at this point in the history
The message types are not currently knowable without reading the code.
Add a mechanism to see what they are.

Signed-off-by: Joe Perches <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
JoePerches authored and torvalds committed May 21, 2016
1 parent ef21219 commit 3beb42e
Showing 1 changed file with 37 additions and 1 deletion.
38 changes: 37 additions & 1 deletion scripts/checkpatch.pl
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
my $mailback = 0;
my $summary_file = 0;
my $show_types = 0;
my $list_types = 0;
my $fix = 0;
my $fix_inplace = 0;
my $root;
Expand Down Expand Up @@ -70,11 +71,12 @@ sub help {
--showfile emit diffed file position, not input file position
-f, --file treat FILE as regular source file
--subjective, --strict enable more subjective tests
--list-types list the possible message types
--types TYPE(,TYPE2...) show only these comma separated message types
--ignore TYPE(,TYPE2...) ignore various comma separated message types
--show-types show the specific message type in the output
--max-line-length=n set the maximum line length, if exceeded, warn
--min-conf-desc-length=n set the min description length, if shorter, warn
--show-types show the message "types" in the output
--root=PATH PATH to the kernel tree root
--no-summary suppress the per-file summary
--mailback only produce a report in case of warnings/errors
Expand Down Expand Up @@ -106,6 +108,37 @@ sub help {
exit($exitcode);
}

sub uniq {
my %seen;
return grep { !$seen{$_}++ } @_;
}

sub list_types {
my ($exitcode) = @_;

my $count = 0;

local $/ = undef;

open(my $script, '<', abs_path($P)) or
die "$P: Can't read '$P' $!\n";

my $text = <$script>;
close($script);

my @types = ();
for ($text =~ /\b(?:(?:CHK|WARN|ERROR)\s*\(\s*"([^"]+)")/g) {
push (@types, $_);
}
@types = sort(uniq(@types));
print("#\tMessage type\n\n");
foreach my $type (@types) {
print(++$count . "\t" . $type . "\n");
}

exit($exitcode);
}

my $conf = which_conf($configuration_file);
if (-f $conf) {
my @conf_args;
Expand Down Expand Up @@ -146,6 +179,7 @@ sub help {
'ignore=s' => \@ignore,
'types=s' => \@use,
'show-types!' => \$show_types,
'list-types!' => \$list_types,
'max-line-length=i' => \$max_line_length,
'min-conf-desc-length=i' => \$min_conf_desc_length,
'root=s' => \$root,
Expand All @@ -166,6 +200,8 @@ sub help {

help(0) if ($help);

list_types(0) if ($list_types);

$fix = 1 if ($fix_inplace);
$check_orig = $check;

Expand Down

0 comments on commit 3beb42e

Please sign in to comment.