util/lint/kconfig_lint: update help checking
- Turn the check for help text with no indentation from a warning to an error. - Show an error if the help text is at the same indentation level as the 'help' keyword. Change-Id: Ibf868c83e2a128ceb6c4d3da7f2cf7dc237054e6 Signed-off-by: Martin Roth <martinroth@google.com> Reviewed-on: https://review.coreboot.org/19851 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
parent
2dafd89769
commit
8849f3be4a
|
@ -1007,6 +1007,7 @@ sub add_referenced_symbol {
|
||||||
{
|
{
|
||||||
#create a non-global static variable by enclosing it and the subroutine
|
#create a non-global static variable by enclosing it and the subroutine
|
||||||
my $help_whitespace = ""; #string to show length of the help whitespace
|
my $help_whitespace = ""; #string to show length of the help whitespace
|
||||||
|
my $help_keyword_whitespace = "";
|
||||||
|
|
||||||
sub handle_help {
|
sub handle_help {
|
||||||
my ( $line, $inside_help, $inside_config, $inside_choice, $filename, $line_no ) = @_;
|
my ( $line, $inside_help, $inside_config, $inside_choice, $filename, $line_no ) = @_;
|
||||||
|
@ -1018,15 +1019,20 @@ sub add_referenced_symbol {
|
||||||
$line =~ /^(\s+)/; #find the indentation level.
|
$line =~ /^(\s+)/; #find the indentation level.
|
||||||
$help_whitespace = $1;
|
$help_whitespace = $1;
|
||||||
if ( !$help_whitespace ) {
|
if ( !$help_whitespace ) {
|
||||||
show_warning("$filename:$line_no - help text starts with no whitespace.");
|
show_error("$filename:$line_no - help text starts with no whitespace.");
|
||||||
|
return $inside_help;
|
||||||
|
}
|
||||||
|
elsif ($help_keyword_whitespace eq $help_whitespace) {
|
||||||
|
show_error("$filename:$line_no - help text needs additional indentation.");
|
||||||
return $inside_help;
|
return $inside_help;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#help ends at the first line which has a smaller indentation than the first line of the help text.
|
#help ends at the first line which has a smaller indentation than the first line of the help text.
|
||||||
if ( ( $line !~ /$help_whitespace/ ) && ( $line !~ /^[\r\n]+/ ) ) {
|
if ( ( $line !~ /^$help_whitespace/ ) && ( $line !~ /^[\r\n]+/ ) ) {
|
||||||
$inside_help = 0;
|
$inside_help = 0;
|
||||||
$help_whitespace = "";
|
$help_whitespace = "";
|
||||||
|
$help_keyword_whitespace = "";
|
||||||
}
|
}
|
||||||
else { #if it's not ended, add the line to the helptext array for the symbol's instance
|
else { #if it's not ended, add the line to the helptext array for the symbol's instance
|
||||||
if ($inside_config) {
|
if ($inside_config) {
|
||||||
|
@ -1034,10 +1040,15 @@ sub add_referenced_symbol {
|
||||||
if ($help_whitespace) { $line =~ s/^$help_whitespace//; }
|
if ($help_whitespace) { $line =~ s/^$help_whitespace//; }
|
||||||
push( @{ $symbols{$inside_config}{$sym_num}{helptext} }, $line );
|
push( @{ $symbols{$inside_config}{$sym_num}{helptext} }, $line );
|
||||||
}
|
}
|
||||||
|
if ( ($help_keyword_whitespace eq $help_whitespace) && ( $line !~ /^[\r\n]+/ ) ) {
|
||||||
|
show_error("$filename:$line_no - help text needs additional indentation.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif ( ( $line =~ /^(\s*)help/ ) || ( $line =~ /^(\s*)---help---/ ) ) {
|
elsif ( ( $line =~ /^(\s*)help/ ) || ( $line =~ /^(\s*)---help---/ ) ) {
|
||||||
$inside_help = $line_no;
|
$inside_help = $line_no;
|
||||||
|
$line =~ /^(\s+)/;
|
||||||
|
$help_keyword_whitespace = $1;
|
||||||
if ( ( !$inside_config ) && ( !$inside_choice ) ) {
|
if ( ( !$inside_config ) && ( !$inside_choice ) ) {
|
||||||
if ($show_note_output) {
|
if ($show_note_output) {
|
||||||
print "# Note: $filename:$line_no help is not inside a config or choice block.\n";
|
print "# Note: $filename:$line_no help is not inside a config or choice block.\n";
|
||||||
|
|
|
@ -45,7 +45,6 @@ Notes:
|
||||||
Warnings in Kconfig files:
|
Warnings in Kconfig files:
|
||||||
- Any 'default' expressions that can never be reached.
|
- Any 'default' expressions that can never be reached.
|
||||||
- Symbols that are defined but never used.
|
- Symbols that are defined but never used.
|
||||||
- Help text starting with no whitespace.
|
|
||||||
- Directories specified in a 'source' keyword do not exist.
|
- Directories specified in a 'source' keyword do not exist.
|
||||||
- A 'source' keyword loading a Kconfig file that has already been loaded.
|
- A 'source' keyword loading a Kconfig file that has already been loaded.
|
||||||
- A 'source' keyword loading a Kconfig file that doesn't exist. Note that
|
- A 'source' keyword loading a Kconfig file that doesn't exist. Note that
|
||||||
|
@ -78,6 +77,8 @@ Errors in Kconfig files:
|
||||||
- Lines not ending with a linefeed. These can cause some keywords to not
|
- Lines not ending with a linefeed. These can cause some keywords to not
|
||||||
function properly ('source' keywords in particular). It's also just
|
function properly ('source' keywords in particular). It's also just
|
||||||
generally good to end the file with a linefeed.
|
generally good to end the file with a linefeed.
|
||||||
|
- Help text starting with no whitespace.
|
||||||
|
- Help text that starts at the same indentation level as the 'help' keyword.
|
||||||
|
|
||||||
Errors in Kconfig that are also caught by Kconfig itself:
|
Errors in Kconfig that are also caught by Kconfig itself:
|
||||||
- Invalid expressions.
|
- Invalid expressions.
|
||||||
|
|
Loading…
Reference in New Issue