kconfig_lint: merge 'git grep' and 'grep' exclude dir and files

The code had originally been using standard grep to look through the
coreboot tree for Kconfig symbols.  When this was switched to git grep,
the --exclude-dir options didn't work, and nothing was added to exclude
the directories that shouldn't be searched for symbols.  This resulted
in invalid warnings as it searched directories that had Kconfig symbols
for other projects.

This merges the exclusion list for both the regular and git versions
of grep for consistent behavior.

Change-Id: I69a1e0b30fecca152e02a511c82248b6091b3d8b
Signed-off-by: Martin Roth <martinroth@google.com>
Reviewed-on: https://review.coreboot.org/13456
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
Martin Roth 2016-01-25 16:08:27 -07:00
parent 721ee01bb0
commit 63ea4930e4
1 changed files with 7 additions and 15 deletions

View File

@ -4,7 +4,7 @@
# This file is part of the coreboot project. # This file is part of the coreboot project.
# #
# Copyright (C) 2015 Martin L Roth <gaumless@gmail.com> # Copyright (C) 2015 Martin L Roth <gaumless@gmail.com>
# Copyright (C) 2015 Google, Inc. # Copyright (C) 2015-2016 Google, Inc.
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -38,11 +38,10 @@ my $top_dir = "."; # Directory where Kconfig is run
my $root_dir = "src"; # Directory of the top level Kconfig file my $root_dir = "src"; # Directory of the top level Kconfig file
my $errors_found = 0; # count of errors my $errors_found = 0; # count of errors
my $warnings_found = 0; my $warnings_found = 0;
my $exclude_dirs = my $exclude_dirs_and_files =
'--exclude-dir="build" --exclude-dir="coreboot-builds" ' '^build/\|^coreboot-builds/\|^payloads/libpayload\|^payloads/coreinfo\|^configs/\|^util/\|^\.git/'
. '--exclude-dir="payloads" --exclude-dir="configs" ' . '\|' . # directories to exclude when searching for used symbols
. '--exclude-dir="util"'; # directories to exclude when searching for used symbols - NOT USED FOR GIT GREP (TODO) '\.txt$\|\.tex$\|\.tags'; #files to exclude when looking for symbols
my @exclude_files = ( '\.txt$', '\.tex$', 'config', '\.tags' ); #files to exclude when looking for symbols
my $config_file = ""; # name of config file to load symbol values from. my $config_file = ""; # name of config file to load symbol values from.
my @wholeconfig; # document the entire kconfig structure my @wholeconfig; # document the entire kconfig structure
my %loaded_files; # list of each Kconfig file loaded my %loaded_files; # list of each Kconfig file loaded
@ -345,10 +344,10 @@ sub collect_used_symbols {
# find all references to CONFIG_ statements in the tree # find all references to CONFIG_ statements in the tree
if ($dont_use_git_grep) { if ($dont_use_git_grep) {
@collected_symbols = `grep -Irn $exclude_dirs -- "CONFIG_"`; @collected_symbols = `grep -Irn -- "CONFIG_" | grep -v '$exclude_dirs_and_files'`;
} }
else { else {
@collected_symbols = `git grep -In -- "CONFIG_"`; @collected_symbols = `git grep -In -- "CONFIG_" | grep -v '$exclude_dirs_and_files'`;
} }
my @used_symbols = @collected_symbols; my @used_symbols = @collected_symbols;
@ -362,13 +361,6 @@ sub collect_used_symbols {
$filename = $1; $filename = $1;
} }
my $skip = 0;
foreach my $exfile (@exclude_files) {
$skip = ( $filename =~ /$exfile/ );
last if $skip;
}
last if $skip;
if ( exists $used_symbols{$symbol}{count} ) { if ( exists $used_symbols{$symbol}{count} ) {
$used_symbols{$symbol}{count}++; $used_symbols{$symbol}{count}++;
} }