check-code: Add a ``checkfile`` function
authorPierre-Yves David <pierre-yves.david@logilab.fr>
Tue, 16 Mar 2010 19:52:57 +0100
changeset 10717 b1f4fcef99b3
parent 10716 5f92bde72eef
child 10718 f18c37fd624f
check-code: Add a ``checkfile`` function The part of the code actually checking each file is moved in the ``checkfile`` function to allow external reuses.
contrib/check-code.py
--- a/contrib/check-code.py	Tue Mar 16 19:52:56 2010 +0100
+++ b/contrib/check-code.py	Tue Mar 16 19:52:57 2010 +0100
@@ -133,6 +133,36 @@
     ('test script', r'(.*/)?test-[^.~]*$', testfilters, testpats),
     ('c', r'.*\.c$', cfilters, cpats),
 ]
+def checkfile(f):
+    """checks style and portability of a given file"""
+    for name, match, filters, pats in checks:
+        fc = 0
+        if not re.match(match, f):
+            continue
+        pre = post = open(f).read()
+        if "no-" + "check-code" in pre:
+            break
+        for p, r in filters:
+            post = re.sub(p, r, post)
+        # print post # uncomment to show filtered version
+        z = enumerate(zip(pre.splitlines(), post.splitlines(True)))
+        for n, l in z:
+            if "check-code" + "-ignore" in l[0]:
+                continue
+            lc = 0
+            for p, msg in pats:
+                if re.search(p, l[1]):
+                    if not lc:
+                        print "%s:%d:" % (f, n + 1)
+                        print " > %s" % l[0]
+                    print " %s" % msg
+                    lc += 1
+                    fc += 1
+            if fc == 15:
+                print " (too many errors, giving up)"
+                break
+        break
+
 
 if __name__ == "__main__":
     if len(sys.argv) == 1:
@@ -141,30 +171,4 @@
         check = sys.argv[1:]
 
     for f in check:
-        for name, match, filters, pats in checks:
-            fc = 0
-            if not re.match(match, f):
-                continue
-            pre = post = open(f).read()
-            if "no-" + "check-code" in pre:
-                break
-            for p, r in filters:
-                post = re.sub(p, r, post)
-            # print post # uncomment to show filtered version
-            z = enumerate(zip(pre.splitlines(), post.splitlines(True)))
-            for n, l in z:
-                if "check-code" + "-ignore" in l[0]:
-                    continue
-                lc = 0
-                for p, msg in pats:
-                    if re.search(p, l[1]):
-                        if not lc:
-                            print "%s:%d:" % (f, n + 1)
-                            print " > %s" % l[0]
-                        print " %s" % msg
-                        lc += 1
-                        fc += 1
-                if fc == 15:
-                    print " (too many errors, giving up)"
-                    break
-            break
+        checkfile(f)