From 8849f3be4a2c1151e3246affaf9d4c857a793bfa Mon Sep 17 00:00:00 2001 From: Martin Roth Date: Tue, 23 May 2017 19:43:43 -0600 Subject: 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 Reviewed-on: https://review.coreboot.org/19851 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich --- util/lint/kconfig_lint | 15 +++++++++++++-- util/lint/kconfig_lint_README | 3 ++- 2 files changed, 15 insertions(+), 3 deletions(-) (limited to 'util/lint') diff --git a/util/lint/kconfig_lint b/util/lint/kconfig_lint index c9ccfb970e..a01c6f9d10 100755 --- a/util/lint/kconfig_lint +++ b/util/lint/kconfig_lint @@ -1007,6 +1007,7 @@ sub add_referenced_symbol { { #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_keyword_whitespace = ""; sub handle_help { 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. $help_whitespace = $1; 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; } } #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; $help_whitespace = ""; + $help_keyword_whitespace = ""; } else { #if it's not ended, add the line to the helptext array for the symbol's instance if ($inside_config) { @@ -1034,10 +1040,15 @@ sub add_referenced_symbol { if ($help_whitespace) { $line =~ s/^$help_whitespace//; } 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---/ ) ) { $inside_help = $line_no; + $line =~ /^(\s+)/; + $help_keyword_whitespace = $1; if ( ( !$inside_config ) && ( !$inside_choice ) ) { if ($show_note_output) { print "# Note: $filename:$line_no help is not inside a config or choice block.\n"; diff --git a/util/lint/kconfig_lint_README b/util/lint/kconfig_lint_README index 5bd2bdd2c1..d20a933340 100644 --- a/util/lint/kconfig_lint_README +++ b/util/lint/kconfig_lint_README @@ -45,7 +45,6 @@ Notes: Warnings in Kconfig files: - Any 'default' expressions that can never be reached. - Symbols that are defined but never used. -- Help text starting with no whitespace. - 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 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 function properly ('source' keywords in particular). It's also just 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: - Invalid expressions. -- cgit v1.2.3