checkpatch: add --types option to report only specific message types
Add a --types convenience option to show only specific message types. Combined with the --fix option, this can produce specific suggested formatting patches to files. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
61135e9663
Коммит
91bfe4843d
|
@ -31,8 +31,10 @@ my $show_types = 0;
|
|||
my $fix = 0;
|
||||
my $root;
|
||||
my %debug;
|
||||
my %ignore_type = ();
|
||||
my %camelcase = ();
|
||||
my %use_type = ();
|
||||
my @use = ();
|
||||
my %ignore_type = ();
|
||||
my @ignore = ();
|
||||
my $help = 0;
|
||||
my $configuration_file = ".checkpatch.conf";
|
||||
|
@ -56,6 +58,7 @@ Options:
|
|||
--terse one line per report
|
||||
-f, --file treat FILE as regular source file
|
||||
--subjective, --strict enable more subjective tests
|
||||
--types TYPE(,TYPE2...) show only these comma separated message types
|
||||
--ignore TYPE(,TYPE2...) ignore various comma separated message types
|
||||
--max-line-length=n set the maximum line length, if exceeded, warn
|
||||
--show-types show the message "types" in the output
|
||||
|
@ -120,6 +123,7 @@ GetOptions(
|
|||
'subjective!' => \$check,
|
||||
'strict!' => \$check,
|
||||
'ignore=s' => \@ignore,
|
||||
'types=s' => \@use,
|
||||
'show-types!' => \$show_types,
|
||||
'max-line-length=i' => \$max_line_length,
|
||||
'root=s' => \$root,
|
||||
|
@ -150,19 +154,38 @@ if ($#ARGV < 0) {
|
|||
exit(1);
|
||||
}
|
||||
|
||||
@ignore = split(/,/, join(',',@ignore));
|
||||
foreach my $word (@ignore) {
|
||||
$word =~ s/\s*\n?$//g;
|
||||
$word =~ s/^\s*//g;
|
||||
$word =~ s/\s+/ /g;
|
||||
$word =~ tr/[a-z]/[A-Z]/;
|
||||
sub hash_save_array_words {
|
||||
my ($hashRef, $arrayRef) = @_;
|
||||
|
||||
next if ($word =~ m/^\s*#/);
|
||||
next if ($word =~ m/^\s*$/);
|
||||
my @array = split(/,/, join(',', @$arrayRef));
|
||||
foreach my $word (@array) {
|
||||
$word =~ s/\s*\n?$//g;
|
||||
$word =~ s/^\s*//g;
|
||||
$word =~ s/\s+/ /g;
|
||||
$word =~ tr/[a-z]/[A-Z]/;
|
||||
|
||||
$ignore_type{$word}++;
|
||||
next if ($word =~ m/^\s*#/);
|
||||
next if ($word =~ m/^\s*$/);
|
||||
|
||||
$hashRef->{$word}++;
|
||||
}
|
||||
}
|
||||
|
||||
sub hash_show_words {
|
||||
my ($hashRef, $prefix) = @_;
|
||||
|
||||
if ($quiet == 0 && keys $hashRef) {
|
||||
print "NOTE: $prefix message types:";
|
||||
foreach my $word (sort keys $hashRef) {
|
||||
print " $word";
|
||||
}
|
||||
print "\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
hash_save_array_words(\%ignore_type, \@ignore);
|
||||
hash_save_array_words(\%use_type, \@use);
|
||||
|
||||
my $dbg_values = 0;
|
||||
my $dbg_possible = 0;
|
||||
my $dbg_type = 0;
|
||||
|
@ -1367,7 +1390,9 @@ sub possible {
|
|||
my $prefix = '';
|
||||
|
||||
sub show_type {
|
||||
return !defined $ignore_type{$_[0]};
|
||||
return defined $use_type{$_[0]} if (scalar keys %use_type > 0);
|
||||
|
||||
return !defined $ignore_type{$_[0]};
|
||||
}
|
||||
|
||||
sub report {
|
||||
|
@ -4190,13 +4215,8 @@ sub process {
|
|||
}
|
||||
}
|
||||
|
||||
if ($quiet == 0 && keys %ignore_type) {
|
||||
print "NOTE: Ignored message types:";
|
||||
foreach my $ignore (sort keys %ignore_type) {
|
||||
print " $ignore";
|
||||
}
|
||||
print "\n\n";
|
||||
}
|
||||
hash_show_words(\%use_type, "Used");
|
||||
hash_show_words(\%ignore_type, "Ignored");
|
||||
|
||||
if ($clean == 0 && $fix && "@rawlines" ne "@fixed") {
|
||||
my $newfile = $filename . ".EXPERIMENTAL-checkpatch-fixes";
|
||||
|
|
Загрузка…
Ссылка в новой задаче