forked from Minki/linux
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>
This commit is contained in:
parent
c745566306
commit
0bd38ae355
@ -20,18 +20,20 @@ OPERATORS = r"&|\(|\)|\||\!"
|
||||
FEATURE = r"(?:\w*[A-Z0-9]\w*){2,}"
|
||||
DEF = r"^\s*(?:menu){,1}config\s+(" + FEATURE + r")\s*"
|
||||
EXPR = r"(?:" + OPERATORS + r"|\s|" + FEATURE + r")+"
|
||||
STMT = r"^\s*(?:if|select|depends\s+on)\s+" + EXPR
|
||||
DEFAULT = r"default\s+.*?(?:if\s.+){,1}"
|
||||
STMT = r"^\s*(?:if|select|depends\s+on|(?:" + DEFAULT + r"))\s+" + EXPR
|
||||
SOURCE_FEATURE = r"(?:\W|\b)+[D]{,1}CONFIG_(" + FEATURE + r")"
|
||||
|
||||
# regex objects
|
||||
REGEX_FILE_KCONFIG = re.compile(r".*Kconfig[\.\w+\-]*$")
|
||||
REGEX_FEATURE = re.compile(r"(" + FEATURE + r")")
|
||||
REGEX_FEATURE = re.compile(r'(?!\B"[^"]*)' + FEATURE + r'(?![^"]*"\B)')
|
||||
REGEX_SOURCE_FEATURE = re.compile(SOURCE_FEATURE)
|
||||
REGEX_KCONFIG_DEF = re.compile(DEF)
|
||||
REGEX_KCONFIG_EXPR = re.compile(EXPR)
|
||||
REGEX_KCONFIG_STMT = re.compile(STMT)
|
||||
REGEX_KCONFIG_HELP = re.compile(r"^\s+(help|---help---)\s*$")
|
||||
REGEX_FILTER_FEATURES = re.compile(r"[A-Za-z0-9]$")
|
||||
REGEX_NUMERIC = re.compile(r"0[xX][0-9a-fA-F]+|[0-9]+")
|
||||
|
||||
|
||||
def parse_options():
|
||||
@ -314,6 +316,9 @@ def parse_kconfig_file(kfile, defined_features, referenced_features):
|
||||
line = line.strip('\n')
|
||||
features.extend(get_features_in_line(line))
|
||||
for feature in set(features):
|
||||
if REGEX_NUMERIC.match(feature):
|
||||
# ignore numeric values
|
||||
continue
|
||||
paths = referenced_features.get(feature, set())
|
||||
paths.add(kfile)
|
||||
referenced_features[feature] = paths
|
||||
|
Loading…
Reference in New Issue
Block a user