mar*_*omo 33 python automated-tests coding-style pylint
作为单元测试的一部分,我想调用限制在错误信号部分的pylint检查器.所以我检查了pylint可执行脚本,进入了pylint.lint.Run
助手类,在那里我迷失了很长时间的__init__
功能,以调用结束sys.exit()
.
有人试过并设法这样做吗?
梦想计划将是这样的:
if __name__ == '__main__':
import pylint.lint
pylint.lint.something(__file__, justerrors=True)
# now continue with unit testing
Run Code Online (Sandbox Code Playgroud)
任何提示?除了"复制__init__
方法并跳过sys.exit()
",我的意思是?
我并不需要通过运行测试pylint
,它也可能是pyflakes
或其他软件:随时提出替代方案.谢谢!
小智 24
看看pylint/epylint.py
包含两种不同的方式以编程方式启动pylint.
你也可以简单地打电话:
from pylint.lint import Run
Run(['--errors-only', 'myfile.py'])
Run Code Online (Sandbox Code Playgroud)
例如.
小智 17
我最近遇到了同样的问题.syt是对的,pylint.epylint
那里有几种方法.然而,它们都调用了再次启动python的子进程.在我的情况下,这变得非常缓慢.
从mcarans回答建立并发现有一个标志出口,我做了以下
class WritableObject(object):
"dummy output stream for pylint"
def __init__(self):
self.content = []
def write(self, st):
"dummy write"
self.content.append(st)
def read(self):
"dummy read"
return self.content
def run_pylint(filename):
"run pylint on the given file"
from pylint import lint
from pylint.reporters.text import TextReporter
ARGS = ["-r","n", "--rcfile=rcpylint"] # put your own here
pylint_output = WritableObject()
lint.Run([filename]+ARGS, reporter=TextReporter(pylint_output), exit=False)
for l in pylint_output.read():
do what ever you want with l...
Run Code Online (Sandbox Code Playgroud)
这在我的情况下快了约3倍.有了这个,我一直在经历一个完整的项目,使用完整的输出来检查每个源文件,指出错误,并从他们的笔记中排序所有文件.
我们可以使用 StringIO,而不是创建 WritableObject 类。StringIO 包含 write 方法。
import sys
try:
from io import StringIO
except:
from StringIO import StringIO
stdout = sys.stdout
sys.stdout = StringIO()
ARGS = ["-r","n", "--rcfile=rcpylint"]
r = lint.Run(['../test.py']+ARGS, exit=False)
test = sys.stdout.getvalue()
sys.stdout.close()
sys.stdout = stdout
print (test.split('\n'))
Run Code Online (Sandbox Code Playgroud)
来源:
归档时间: |
|
查看次数: |
9282 次 |
最近记录: |