Skip to content

Commit

Permalink
checkpatch: improve Kconfig help test
Browse files Browse the repository at this point in the history
The Kconfig help test erroneously counts patch context lines as part of
the help text.

Fix that and improve the message block output.

Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Joe Perches <[email protected]>
Tested-by: Randy Dunlap <[email protected]>
Acked-by: Randy Dunlap <[email protected]>
Cc: Andy Whitcroft <[email protected]>
Cc: Dwaipayan Ray <[email protected]>
Cc: Lukas Bulwahn <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
JoePerches authored and torvalds committed Jan 20, 2022
1 parent 36f8b34 commit b8709bc
Showing 1 changed file with 26 additions and 26 deletions.
52 changes: 26 additions & 26 deletions scripts/checkpatch.pl
Original file line number Diff line number Diff line change
Expand Up @@ -3479,47 +3479,47 @@ sub process {
# Kconfig supports named choices), so use a word boundary
# (\b) rather than a whitespace character (\s)
$line =~ /^\+\s*(?:config|menuconfig|choice)\b/) {
my $length = 0;
my $cnt = $realcnt;
my $ln = $linenr + 1;
my $f;
my $is_start = 0;
my $is_end = 0;
for (; $cnt > 0 && defined $lines[$ln - 1]; $ln++) {
$f = $lines[$ln - 1];
$cnt-- if ($lines[$ln - 1] !~ /^-/);
$is_end = $lines[$ln - 1] =~ /^\+/;
my $ln = $linenr;
my $needs_help = 0;
my $has_help = 0;
my $help_length = 0;
while (defined $lines[$ln]) {
my $f = $lines[$ln++];

next if ($f =~ /^-/);
last if (!$file && $f =~ /^\@\@/);
last if ($f !~ /^[\+ ]/); # !patch context

if ($lines[$ln - 1] =~ /^\+\s*(?:bool|tristate|prompt)\s*["']/) {
$is_start = 1;
} elsif ($lines[$ln - 1] =~ /^\+\s*(?:---)?help(?:---)?$/) {
$length = -1;
if ($f =~ /^\+\s*(?:bool|tristate|prompt)\s*["']/) {
$needs_help = 1;
next;
}
if ($f =~ /^\+\s*help\s*$/) {
$has_help = 1;
next;
}

$f =~ s/^.//;
$f =~ s/#.*//;
$f =~ s/^\s+//;
next if ($f =~ /^$/);
$f =~ s/^.//; # strip patch context [+ ]
$f =~ s/#.*//; # strip # directives
$f =~ s/^\s+//; # strip leading blanks
next if ($f =~ /^$/); # skip blank lines

# At the end of this Kconfig block:
# This only checks context lines in the patch
# and so hopefully shouldn't trigger false
# positives, even though some of these are
# common words in help texts
if ($f =~ /^\s*(?:config|menuconfig|choice|endchoice|
if|endif|menu|endmenu|source)\b/x) {
$is_end = 1;
if ($f =~ /^(?:config|menuconfig|choice|endchoice|
if|endif|menu|endmenu|source)\b/x) {
last;
}
$length++;
$help_length++ if ($has_help);
}
if ($is_start && $is_end && $length < $min_conf_desc_length) {
if ($needs_help &&
$help_length < $min_conf_desc_length) {
my $stat_real = get_stat_real($linenr, $ln - 1);
WARN("CONFIG_DESCRIPTION",
"please write a paragraph that describes the config symbol fully\n" . $herecurr);
"please write a help paragraph that fully describes the config symbol\n" . "$here\n$stat_real\n");
}
#print "is_start<$is_start> is_end<$is_end> length<$length>\n";
}

# check MAINTAINERS entries
Expand Down

0 comments on commit b8709bc

Please sign in to comment.