comparison contrib/check-code.py @ 10722:c4fb2103e734

check-code: improve quote detection regexp, add tests
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Wed, 17 Mar 2010 14:15:33 +0100
parents fbcccf9ec58f
children 8ea152e94484
comparison
equal deleted inserted replaced
10721:67ba66070aee 10722:c4fb2103e734
8 # GNU General Public License version 2 or any later version. 8 # GNU General Public License version 2 or any later version.
9 9
10 import sys, re, glob 10 import sys, re, glob
11 11
12 def repquote(m): 12 def repquote(m):
13 t = re.sub(r"\w", "x", m.group(2)) 13 t = re.sub(r"\w", "x", m.group('text'))
14 t = re.sub(r"[^\sx]", "o", t) 14 t = re.sub(r"[^\sx]", "o", t)
15 return m.group(1) + t + m.group(1) 15 return m.group('quote') + t + m.group('quote')
16 16
17 def repcomment(m): 17 def repcomment(m):
18 return m.group(1) + "#" * len(m.group(2)) 18 return m.group(1) + "#" * len(m.group(2))
19 19
20 def repccomment(m): 20 def repccomment(m):
94 (r'raise Exception', "don't raise generic exceptions"), 94 (r'raise Exception', "don't raise generic exceptions"),
95 (r'ui\.(status|progress|write|note)\([\'\"]x', "unwrapped ui message"), 95 (r'ui\.(status|progress|write|note)\([\'\"]x', "unwrapped ui message"),
96 ] 96 ]
97 97
98 pyfilters = [ 98 pyfilters = [
99 (r'''(?<!")(")(([^"\n]|\\")+)"(?!")''', repquote), 99 (r"""(?msx)(?P<quote>('''|\"\"\"|(?<!')'(?!')|(?<!")"(?!")))
100 (r"""(?<!')(')(([^'\n]|\\')+)'(?!')""", repquote), 100 (?P<text>(.*?))
101 (r"""(''')(([^']|\\'|'{1,2}(?!'))*)'''""", repquote), 101 (?<!\\)(?P=quote)""", repquote),
102 (r'''(""")(([^"]|\\"|"{1,2}(?!"))*)"""''', repquote),
103 (r"( *)(#([^\n]*\S)?)", repcomment), 102 (r"( *)(#([^\n]*\S)?)", repcomment),
104 ] 103 ]
105 104
106 cpats = [ 105 cpats = [
107 (r'//', "don't use //-style comments"), 106 (r'//', "don't use //-style comments"),
121 (r'[^\n]\Z', "no trailing newline"), 120 (r'[^\n]\Z', "no trailing newline"),
122 ] 121 ]
123 122
124 cfilters = [ 123 cfilters = [
125 (r'(/\*)(((\*(?!/))|[^*])*)\*/', repccomment), 124 (r'(/\*)(((\*(?!/))|[^*])*)\*/', repccomment),
126 (r'''(?<!")(")(([^"]|\\")+"(?!"))''', repquote), 125 (r'''(?P<quote>(?<!")")(?P<text>([^"]|\\")+)"(?!")''', repquote),
127 (r'''(#\s*include\s+<)([^>]+)>''', repinclude), 126 (r'''(#\s*include\s+<)([^>]+)>''', repinclude),
128 (r'(\()([^)]+\))', repcallspaces), 127 (r'(\()([^)]+\))', repcallspaces),
129 ] 128 ]
130 129
131 checks = [ 130 checks = [