util/lint: Give better warning for help spacing issue

Because the help block uses significant whitespace to determine whether
or not text is inside the help block, a mixture of spaces and tabs
confuses the parser.
If there's an unrecognized line, and the previous line was inside a help
block, it's likely that this line is too.

Additionally, this was found with a line that started '  configuration',
and threw a perl warning about an uninitialized value because the parser
thought this was the start of a new config line, but couldn't find the
symbol.  Now we make sure that config statements have whitespace after
the 'config' statement.

Change-Id: I46375738a18903b266ea9fff3102a1a91235e609
Signed-off-by: Martin Roth <gaumless@gmail.com>
Reviewed-on: https://review.coreboot.org/19155
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
Martin Roth 2017-04-06 11:06:00 -06:00 committed by Martin Roth
parent a18353d7b7
commit 811d93af39
1 changed files with 8 additions and 2 deletions

View File

@ -520,6 +520,7 @@ sub build_and_parse_kconfig_tree {
my $line_no = $parseline[0]{file_line_no}; my $line_no = $parseline[0]{file_line_no};
#handle help - help text: "help" or "---help---" #handle help - help text: "help" or "---help---"
my $lastline_was_help = $inside_help;
$inside_help = handle_help( $line, $inside_help, $inside_config, $inside_choice, $filename, $line_no ); $inside_help = handle_help( $line, $inside_help, $inside_config, $inside_choice, $filename, $line_no );
$parseline[0]{inside_help} = $inside_help; $parseline[0]{inside_help} = $inside_help;
@ -535,7 +536,7 @@ sub build_and_parse_kconfig_tree {
} }
#handle config #handle config
elsif ( $line =~ /^\s*config/ ) { elsif ( $line =~ /^\s*config\s+/ ) {
$line =~ /^\s*config\s+([^"\s]+)\s*(?>#.*)?$/; $line =~ /^\s*config\s+([^"\s]+)\s*(?>#.*)?$/;
my $symbol = $1; my $symbol = $1;
$inside_config = $symbol; $inside_config = $symbol;
@ -710,7 +711,12 @@ sub build_and_parse_kconfig_tree {
# do nothing # do nothing
} }
else { else {
show_error("$line ($filename:$line_no unrecognized)"); if ($lastline_was_help) {
show_error("The line \"$line\" ($filename:$line_no) wasn't recognized - supposed to be inside help?");
}
else {
show_error("The line \"$line\" ($filename:$line_no) wasn't recognized");
}
} }
if ( defined $inside_menu[0] ) { if ( defined $inside_menu[0] ) {