Get rid of useless regular expressions in detect_compiler()
[kconfig-hardened-check.git] / kconfig_hardened_check / __init__.py
index 572ed0ab6f7467e42bfa50256b0fe9d8cd4f4889..832f241c40b7d2df50af1e20c6b06cdee08935ff 100644 (file)
@@ -31,7 +31,7 @@ def _open(file: str, *args, **kwargs):
 
 def detect_arch(fname, archs):
     with _open(fname, 'rt', encoding='utf-8') as f:
-        arch_pattern = re.compile("CONFIG_[a-zA-Z0-9_]*=y")
+        arch_pattern = re.compile("CONFIG_[a-zA-Z0-9_]+=y$")
         arch = None
         for line in f.readlines():
             if arch_pattern.match(line):
@@ -40,7 +40,7 @@ def detect_arch(fname, archs):
                     if arch is None:
                         arch = option
                     else:
-                        return None, 'more than one supported microarchitecture is detected'
+                        return None, 'detected more than one microarchitecture'
         if arch is None:
             return None, 'failed to detect microarchitecture'
         return arch, 'OK'
@@ -48,7 +48,7 @@ def detect_arch(fname, archs):
 
 def detect_kernel_version(fname):
     with _open(fname, 'rt', encoding='utf-8') as f:
-        ver_pattern = re.compile("# Linux/.* Kernel Configuration")
+        ver_pattern = re.compile("# Linux/.+ Kernel Configuration$")
         for line in f.readlines():
             if ver_pattern.match(line):
                 line = line.strip()
@@ -66,12 +66,10 @@ def detect_compiler(fname):
     gcc_version = None
     clang_version = None
     with _open(fname, 'rt', encoding='utf-8') as f:
-        gcc_version_pattern = re.compile("CONFIG_GCC_VERSION=[0-9]*")
-        clang_version_pattern = re.compile("CONFIG_CLANG_VERSION=[0-9]*")
         for line in f.readlines():
-            if gcc_version_pattern.match(line):
+            if line.startswith('CONFIG_GCC_VERSION='):
                 gcc_version = line[19:-1]
-            if clang_version_pattern.match(line):
+            if line.startswith('CONFIG_CLANG_VERSION='):
                 clang_version = line[21:-1]
     if gcc_version is None or clang_version is None:
         return None, 'no CONFIG_GCC_VERSION or CONFIG_CLANG_VERSION'