##// END OF EJS Templates
code-code: Add a logfunc argument to checkfile...
Pierre-Yves David -
r10719:3be9ae49 default
parent child Browse files
Show More
@@ -133,8 +133,40 b' checks = ['
133 ('test script', r'(.*/)?test-[^.~]*$', testfilters, testpats),
133 ('test script', r'(.*/)?test-[^.~]*$', testfilters, testpats),
134 ('c', r'.*\.c$', cfilters, cpats),
134 ('c', r'.*\.c$', cfilters, cpats),
135 ]
135 ]
136 def checkfile(f, maxerr=None):
136
137 """checks style and portability of a given file"""
137 class norepeatlogger(object):
138 def __init__(self):
139 self._lastseen = None
140
141 def log(self, fname, lineno, line, msg):
142 """print error related a to given line of a given file.
143
144 The faulty line will also be printed but only once in the case
145 of multiple errors.
146
147 :fname: filename
148 :lineno: line number
149 :line: actual content of the line
150 :msg: error message
151 """
152 msgid = fname, lineno, line
153 if msgid != self._lastseen:
154 print "%s:%d:" % (fname, lineno)
155 print " > %s" % line
156 self._lastseen = msgid
157 print " " + msg
158
159 _defaultlogger = norepeatlogger()
160
161 def checkfile(f, logfunc=_defaultlogger.log, maxerr=None):
162 """checks style and portability of a given file
163
164 :f: filepath
165 :logfunc: function used to report error
166 logfunc(filename, linenumber, linecontent, errormessage)
167 :maxerr: number of error to display before arborting.
168 Set to None (default) to report all errors
169 """
138 for name, match, filters, pats in checks:
170 for name, match, filters, pats in checks:
139 fc = 0
171 fc = 0
140 if not re.match(match, f):
172 if not re.match(match, f):
@@ -149,14 +181,9 b' def checkfile(f, maxerr=None):'
149 for n, l in z:
181 for n, l in z:
150 if "check-code" + "-ignore" in l[0]:
182 if "check-code" + "-ignore" in l[0]:
151 continue
183 continue
152 lc = 0
153 for p, msg in pats:
184 for p, msg in pats:
154 if re.search(p, l[1]):
185 if re.search(p, l[1]):
155 if not lc:
186 logfunc(f, n+1, l[0], msg)
156 print "%s:%d:" % (f, n + 1)
157 print " > %s" % l[0]
158 print " %s" % msg
159 lc += 1
160 fc += 1
187 fc += 1
161 if maxerr is not None and fc >= maxerr:
188 if maxerr is not None and fc >= maxerr:
162 print " (too many errors, giving up)"
189 print " (too many errors, giving up)"
General Comments 0
You need to be logged in to leave comments. Login now