Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用pylint获得简要摘要或确切的错误和警告数量_Python_Python 2.7_Pylint - Fatal编程技术网

如何在python中使用pylint获得简要摘要或确切的错误和警告数量

如何在python中使用pylint获得简要摘要或确切的错误和警告数量,python,python-2.7,pylint,Python,Python 2.7,Pylint,如何使用python代码获取pylint错误消息的简要摘要或获取pylint错误、警告和重构的数量 pylint -rn 这允许我们仅使用消息获取pylint输出,并排除报告。 到目前为止,我所尝试的是: lint_arg = "pylint -rn %s"%file_name pr = subprocess.Popen( arg, cwd=os.path.dirname(lint_path), shell=True, stdou

如何使用python代码获取pylint错误消息的简要摘要或获取pylint错误、警告和重构的数量

pylint -rn
这允许我们仅使用消息获取pylint输出,并排除报告。 到目前为止,我所尝试的是:

lint_arg = "pylint -rn %s"%file_name
pr = subprocess.Popen(
                arg, cwd=os.path.dirname(lint_path),
                shell=True, stdout=subprocess.PIPE,
                stderr=subprocess.PIPE)
            (out, error) = pr.communicate()
            pylint_result =  out + "\n" + error
file=open("pylint_output",w)
file.write(pylint_result)
file.close()
我只想得到发生错误、警告的行数,并将这些信息移动到字符串中。我的想法如下:

步骤1:使用subprocess.Popen()在python脚本中运行pylint 步骤2:将输出存储在文件或变量中。
步骤3:解析文件并生成预期输出,如下所示:

预期输出:以下文件具有:
行编号中的5个警告:11、34、56(发生警告的行)
行号中的2个错误:2(发生错误的行)

如何借助pylint命令s或python脚本实现这一点?
谢谢你的帮助。提前感谢。

首先,不要使用
Popen
,引用:

要在模块_name.py模块上静默运行Pylint,并获取其标准输出和错误:

from pylint import epylint as lint
(pylint_stdout, pylint_stderr) = lint.py_run('module_name.py', True)
第二,查看输出格式,
manpylint
表示:

使用默认文本输出,消息格式为:

MESSAGE_TYPE: LINE_NUM:[OBJECT:] MESSAGE
假设
line
是一行Pylint输出,这将收集您需要的所有信息:

pylint_res = {'C': [], 'R': [], 'W': [], 'E': [], 'F': []}
msg_type, lineno = line.split(':', 2)[:2]
pylint_res[msg_type].append(lineno)

您需要做的就是迭代Pylint的输出,如上所述添加到
Pylint\u res
,然后打印出结果。

例如,要计算错误,可以使用以下代码段:

from pylint.lint import Run

paths_to_check = ['./']
pylint_params = ["--rcfile=.pylintrc", "--exit-zero", "--errors-only"]
results = Run(pylint_params + paths_to_check, do_exit=False)
errors = results.linter.stats['error']

message = ('Number of errors: {}'.format(errors))

Pylint是一个python脚本,我确信您可以使用它的内部功能,而不是获取和解析主脚本的输出。看看源代码,你会发现一个API可以提供你想要的。@ikaros-你能告诉我任何适合我需要的API吗?不,我不能。。。我对派林不太了解。plg的答案比Popen好,但仍然不是我建议的方法。。。不知何故,应该可以调用执行文件分析的函数,并获得带有结果的数据结构。也许你可以在邮件列表中询问。这很有趣,但是你仍然需要解析stdout和stderr。。。在转换为输出之前,也许可以调用返回原始python数据结构的API,返回结果。我对Pylint也不太了解,但在阅读了一些文档后,我认为它不是设计用来这样使用的,特别是如果它们提供自己的
Popen
包装器的话。。。