提交 cf132e4a 编写于 作者: V Valentin Rothberg 提交者: Greg Kroah-Hartman

checkkconfigsymbols.py: add option -i to ignore files

Sometimes a user might be interested to filter certain reports (e.g.,
the many defconfigs).  Now, this can be achieved by specifying a Python
regex with -i / --ignore.
Signed-off-by: NValentin Rothberg <valentinrothberg@gmail.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 f5c48149
...@@ -58,6 +58,12 @@ def parse_options(): ...@@ -58,6 +58,12 @@ def parse_options():
"input format bases on Git log's " "input format bases on Git log's "
"\'commmit1..commit2\'.") "\'commmit1..commit2\'.")
parser.add_option('-i', '--ignore', dest='ignore', action='store',
default="",
help="Ignore files matching this pattern. Note that "
"the pattern needs to be a Python regex. To "
"ignore defconfigs, specify -i '.*defconfig'.")
parser.add_option('', '--force', dest='force', action='store_true', parser.add_option('', '--force', dest='force', action='store_true',
default=False, default=False,
help="Reset current Git tree even when it's dirty.") help="Reset current Git tree even when it's dirty.")
...@@ -80,6 +86,12 @@ def parse_options(): ...@@ -80,6 +86,12 @@ def parse_options():
"'--force' if you\nwant to ignore this warning and " "'--force' if you\nwant to ignore this warning and "
"continue.") "continue.")
if opts.ignore:
try:
re.match(opts.ignore, "this/is/just/a/test.c")
except:
sys.exit("Please specify a valid Python regex.")
return opts return opts
...@@ -105,11 +117,11 @@ def main(): ...@@ -105,11 +117,11 @@ def main():
# get undefined items before the commit # get undefined items before the commit
execute("git reset --hard %s" % commit_a) execute("git reset --hard %s" % commit_a)
undefined_a = check_symbols() undefined_a = check_symbols(opts.ignore)
# get undefined items for the commit # get undefined items for the commit
execute("git reset --hard %s" % commit_b) execute("git reset --hard %s" % commit_b)
undefined_b = check_symbols() undefined_b = check_symbols(opts.ignore)
# report cases that are present for the commit but not before # report cases that are present for the commit but not before
for feature in sorted(undefined_b): for feature in sorted(undefined_b):
...@@ -129,7 +141,7 @@ def main(): ...@@ -129,7 +141,7 @@ def main():
# default to check the entire tree # default to check the entire tree
else: else:
undefined = check_symbols() undefined = check_symbols(opts.ignore)
for feature in sorted(undefined): for feature in sorted(undefined):
files = sorted(undefined.get(feature)) files = sorted(undefined.get(feature))
print "%s\t%s" % (feature, ", ".join(files)) print "%s\t%s" % (feature, ", ".join(files))
...@@ -160,9 +172,10 @@ def get_head(): ...@@ -160,9 +172,10 @@ def get_head():
return stdout.strip('\n') return stdout.strip('\n')
def check_symbols(): def check_symbols(ignore):
"""Find undefined Kconfig symbols and return a dict with the symbol as key """Find undefined Kconfig symbols and return a dict with the symbol as key
and a list of referencing files as value.""" and a list of referencing files as value. Files matching %ignore are not
checked for undefined symbols."""
source_files = [] source_files = []
kconfig_files = [] kconfig_files = []
defined_features = set() defined_features = set()
...@@ -185,10 +198,17 @@ def check_symbols(): ...@@ -185,10 +198,17 @@ def check_symbols():
source_files.append(gitfile) source_files.append(gitfile)
for sfile in source_files: for sfile in source_files:
if ignore and re.match(ignore, sfile):
# do not check files matching %ignore
continue
parse_source_file(sfile, referenced_features) parse_source_file(sfile, referenced_features)
for kfile in kconfig_files: for kfile in kconfig_files:
parse_kconfig_file(kfile, defined_features, referenced_features) if ignore and re.match(ignore, kfile):
# do not collect references for files matching %ignore
parse_kconfig_file(kfile, defined_features, dict())
else:
parse_kconfig_file(kfile, defined_features, referenced_features)
undefined = {} # {feature: [files]} undefined = {} # {feature: [files]}
for feature in sorted(referenced_features): for feature in sorted(referenced_features):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册