aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/checkkconfigsymbols.py
diff options
context:
space:
mode:
authorValentin Rothberg <valentinrothberg@gmail.com>2015-07-27 06:33:05 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-08-03 20:16:58 -0400
commit0bd38ae355227792dde3487779a9dc24d6b99631 (patch)
tree65f6dc6488b7c3014e173cdfaa4777325592e725 /scripts/checkkconfigsymbols.py
parentc745566306e363675d8aa43ee9f39232ade4d5e6 (diff)
scripts/checkkconfigsymbols.py: support default statements
Until now, checkkonfigsymbols.py did not check default statements for references on missing Kconfig symbols (i.e., undefined Kconfig options). Hence, add support to parse and check the Kconfig default statement. Signed-off-by: Valentin Rothberg <valentinrothberg@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'scripts/checkkconfigsymbols.py')
-rwxr-xr-xscripts/checkkconfigsymbols.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/scripts/checkkconfigsymbols.py b/scripts/checkkconfigsymbols.py
index d89371cc9110..2f4b7ffd5570 100755
--- a/scripts/checkkconfigsymbols.py
+++ b/scripts/checkkconfigsymbols.py
@@ -20,18 +20,20 @@ OPERATORS = r"&|\(|\)|\||\!"
20FEATURE = r"(?:\w*[A-Z0-9]\w*){2,}" 20FEATURE = r"(?:\w*[A-Z0-9]\w*){2,}"
21DEF = r"^\s*(?:menu){,1}config\s+(" + FEATURE + r")\s*" 21DEF = r"^\s*(?:menu){,1}config\s+(" + FEATURE + r")\s*"
22EXPR = r"(?:" + OPERATORS + r"|\s|" + FEATURE + r")+" 22EXPR = r"(?:" + OPERATORS + r"|\s|" + FEATURE + r")+"
23STMT = r"^\s*(?:if|select|depends\s+on)\s+" + EXPR 23DEFAULT = r"default\s+.*?(?:if\s.+){,1}"
24STMT = r"^\s*(?:if|select|depends\s+on|(?:" + DEFAULT + r"))\s+" + EXPR
24SOURCE_FEATURE = r"(?:\W|\b)+[D]{,1}CONFIG_(" + FEATURE + r")" 25SOURCE_FEATURE = r"(?:\W|\b)+[D]{,1}CONFIG_(" + FEATURE + r")"
25 26
26# regex objects 27# regex objects
27REGEX_FILE_KCONFIG = re.compile(r".*Kconfig[\.\w+\-]*$") 28REGEX_FILE_KCONFIG = re.compile(r".*Kconfig[\.\w+\-]*$")
28REGEX_FEATURE = re.compile(r"(" + FEATURE + r")") 29REGEX_FEATURE = re.compile(r'(?!\B"[^"]*)' + FEATURE + r'(?![^"]*"\B)')
29REGEX_SOURCE_FEATURE = re.compile(SOURCE_FEATURE) 30REGEX_SOURCE_FEATURE = re.compile(SOURCE_FEATURE)
30REGEX_KCONFIG_DEF = re.compile(DEF) 31REGEX_KCONFIG_DEF = re.compile(DEF)
31REGEX_KCONFIG_EXPR = re.compile(EXPR) 32REGEX_KCONFIG_EXPR = re.compile(EXPR)
32REGEX_KCONFIG_STMT = re.compile(STMT) 33REGEX_KCONFIG_STMT = re.compile(STMT)
33REGEX_KCONFIG_HELP = re.compile(r"^\s+(help|---help---)\s*$") 34REGEX_KCONFIG_HELP = re.compile(r"^\s+(help|---help---)\s*$")
34REGEX_FILTER_FEATURES = re.compile(r"[A-Za-z0-9]$") 35REGEX_FILTER_FEATURES = re.compile(r"[A-Za-z0-9]$")
36REGEX_NUMERIC = re.compile(r"0[xX][0-9a-fA-F]+|[0-9]+")
35 37
36 38
37def parse_options(): 39def parse_options():
@@ -314,6 +316,9 @@ def parse_kconfig_file(kfile, defined_features, referenced_features):
314 line = line.strip('\n') 316 line = line.strip('\n')
315 features.extend(get_features_in_line(line)) 317 features.extend(get_features_in_line(line))
316 for feature in set(features): 318 for feature in set(features):
319 if REGEX_NUMERIC.match(feature):
320 # ignore numeric values
321 continue
317 paths = referenced_features.get(feature, set()) 322 paths = referenced_features.get(feature, set())
318 paths.add(kfile) 323 paths.add(kfile)
319 referenced_features[feature] = paths 324 referenced_features[feature] = paths