summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <daniel.friesel@uos.de>2022-06-14 21:19:12 +0200
committerDaniel Friesel <daniel.friesel@uos.de>2022-06-14 21:19:12 +0200
commit675a0f8538ee50542076818e2769c1d762fb42b5 (patch)
tree83618b61dcf96c535fa906b980146b0a01075d8e
parent3aeb9f5a3136afe749e76658e72a33ab7a92ffcf (diff)
analyze-kconfig: add param-shift support
-rwxr-xr-xbin/analyze-kconfig.py4
-rw-r--r--lib/utils.py16
2 files changed, 20 insertions, 0 deletions
diff --git a/bin/analyze-kconfig.py b/bin/analyze-kconfig.py
index 04b8c7b..2223a4d 100755
--- a/bin/analyze-kconfig.py
+++ b/bin/analyze-kconfig.py
@@ -187,6 +187,10 @@ def main():
if args.boolean_parameters:
dfatool.utils.observations_enum_to_bool(observations, kconfig=True)
+ if args.param_shift:
+ param_shift = dfatool.cli.parse_param_shift(args.param_shift)
+ dfatool.utils.shift_param_in_observations(observations, param_shift)
+
by_name, parameter_names = dfatool.utils.observations_to_by_name(observations)
# Release memory
diff --git a/lib/utils.py b/lib/utils.py
index a8acb51..ed21f0f 100644
--- a/lib/utils.py
+++ b/lib/utils.py
@@ -403,6 +403,22 @@ def by_param_to_by_name(by_param: dict) -> dict:
return by_name
+def shift_param_in_observations(observations, parameter_shift):
+ for param_name, param_shift_function in parameter_shift:
+ if param_name == "*":
+ for observation in observations:
+ for param_name in observation["param"].keys():
+ observation["param"][param_name] = param_shift_function(
+ observation["param"][param_name]
+ )
+ else:
+ for observation in observations:
+ if observation["param"][param_name] is not None:
+ observation["param"][param_name] = param_shift_function(
+ observation["param"][param_name]
+ )
+
+
def shift_param_in_aggregate(aggregate, parameters, parameter_shift):
"""
Remove entries which do not have certain parameter values from `aggregate`.