filterpyflakes.py
38 lines
| 1.0 KiB
| text/x-python
|
PythonLexer
/ tests / filterpyflakes.py
timeless
|
r14140 | #!/usr/bin/env python | ||
# Filter output by pyflakes to control which warnings we check | ||||
Augie Fackler
|
r14209 | import sys, re, os | ||
timeless
|
r14140 | |||
timeless
|
r14173 | def makekey(message): | ||
# "path/file:line: message" | ||||
match = re.search(r"(line \d+)", message) | ||||
line = '' | ||||
if match: | ||||
line = match.group(0) | ||||
message = re.sub(r"(line \d+)", '', message) | ||||
return re.sub(r"([^:]*):([^:]+):([^']*)('[^']*')(.*)$", | ||||
r'\3:\5:\4:\1:\2:' + line, | ||||
message) | ||||
lines = [] | ||||
timeless
|
r14140 | for line in sys.stdin: | ||
# We whitelist tests | ||||
timeless
|
r14175 | pats = [ | ||
r"imported but unused", | ||||
r"local variable '.*' is assigned to but never used", | ||||
timeless
|
r14176 | r"unable to detect undefined names", | ||
timeless
|
r14175 | ] | ||
if not re.search('|'.join(pats), line): | ||||
timeless
|
r14140 | continue | ||
Augie Fackler
|
r14209 | fn = line.split(':', 1)[0] | ||
f = open(os.path.join(os.path.dirname(os.path.dirname(__file__)), fn)) | ||||
data = f.read() | ||||
f.close() | ||||
if 'no-check-code' in data: | ||||
continue | ||||
timeless
|
r14173 | lines.append(line) | ||
for line in sorted(lines, key = makekey): | ||||
timeless
|
r14140 | sys.stdout.write(line) | ||