[libvirt] [PATCH 3/3] scripts: check-aclrules: use regular expressions less often

Ján Tomko jtomko at redhat.com
Wed Nov 20 18:32:46 UTC 2019


Use a simple
  if "substr" in line
before running a regular expression, which saves time,
especially if the regex has a capture group.

This reduces runtime of the check by almost 78 % for me.

Signed-off-by: Ján Tomko <jtomko at redhat.com>
---
 scripts/check-aclrules.py | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/scripts/check-aclrules.py b/scripts/check-aclrules.py
index d145e59164..40c47c1c6b 100755
--- a/scripts/check-aclrules.py
+++ b/scripts/check-aclrules.py
@@ -150,13 +150,21 @@ def process_file(filename):
                 # Looks for anything which appears to be a function
                 # body name. Doesn't matter if we pick up bogus stuff
                 # here, as long as we don't miss valid stuff
-                m = re.search(r'''\b(\w+)\(''', line)
+                m = None
+                if "(" in line:
+                    m = re.search(r'''\b(\w+)\(''', line)
                 if m is not None:
                     maybefunc = m.group(1)
             elif brace > 0:
-                ensureacl = re.search(r'''(\w+)EnsureACL''', line)
-                checkacl = re.search(r'''(\w+)CheckACL''', line)
-                stub = re.search(r'''\b(\w+)\(''', line)
+                ensureacl = None
+                checkacl = None
+                stub = None
+                if "EnsureACL" in line:
+                    ensureacl = re.search(r'''(\w+)EnsureACL''', line)
+                if "CheckACL" in line:
+                    checkacl = re.search(r'''(\w+)CheckACL''', line)
+                if "(" in line:
+                    stub = re.search(r'''\b(\w+)\(''', line)
                 if ensureacl is not None:
                     # Record the fact that maybefunc contains an
                     # ACL call, and make sure it is the right call!
@@ -210,7 +218,9 @@ def process_file(filename):
             # every func listed there, has an impl which calls
             # an ACL function
             if intable:
-                assign = re.search(r'''\.(\w+)\s*=\s*(\w+),?''', line)
+                assign = None
+                if '"' in line:
+                    assign = re.search(r'''\.(\w+)\s*=\s*(\w+),?''', line)
                 if "}" in line:
                     intable = False
                     table = None
@@ -237,8 +247,10 @@ def process_file(filename):
                                   file=sys.stderr)
                             errs = True
             else:
-                m = re.search(r'''^(?:static\s+)?(vir(?:\w+)?Driver)\s+''',
-                              line)
+                m = None
+                if "Driver" in line:
+                    m = re.search(r'''^(?:static\s+)?(vir(?:\w+)?Driver)\s+''',
+                                  line)
                 if m is not None:
                     name = m.group(1)
                     if name not in ["virNWFilterCallbackDriver",
-- 
2.19.2




More information about the libvir-list mailing list