Use tuple comparison to check the cppcheck version. Take the occasion to harden the regex, escaping the dots so that we check for them instead of generic characters.
Suggested-by: Andrew Cooper <andrew.coop...@citrix.com> Signed-off-by: Luca Fancellu <luca.fance...@arm.com> --- xen/scripts/xen_analysis/cppcheck_analysis.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/xen/scripts/xen_analysis/cppcheck_analysis.py b/xen/scripts/xen_analysis/cppcheck_analysis.py index c8abbe0fca79..8dc45e653b79 100644 --- a/xen/scripts/xen_analysis/cppcheck_analysis.py +++ b/xen/scripts/xen_analysis/cppcheck_analysis.py @@ -157,7 +157,7 @@ def generate_cppcheck_deps(): "Error occured retrieving cppcheck version:\n{}\n\n{}" ) - version_regex = re.search('^Cppcheck (\d+).(\d+)(?:.\d+)?$', + version_regex = re.search('^Cppcheck (\d+)\.(\d+)(?:\.\d+)?$', invoke_cppcheck, flags=re.M) # Currently, only cppcheck version >= 2.7 is supported, but version 2.8 is # known to be broken, please refer to docs/misra/cppcheck.txt @@ -166,15 +166,10 @@ def generate_cppcheck_deps(): "Can't find cppcheck version or version not identified: " "{}".format(invoke_cppcheck) ) - major = int(version_regex.group(1)) - minor = int(version_regex.group(2)) - if major < 2 or (major == 2 and minor < 7): + version = (int(version_regex.group(1)), int(version_regex.group(2))) + if version < (2, 7) or version == (2, 8): raise CppcheckDepsPhaseError( - "Cppcheck version < 2.7 is not supported" - ) - if major == 2 and minor == 8: - raise CppcheckDepsPhaseError( - "Cppcheck version 2.8 is known to be broken, see the documentation" + "Cppcheck version < 2.7 or 2.8 are not supported" ) # If misra option is selected, append misra addon and generate cppcheck -- 2.34.1