【问题标题】:How to get report + score from Pylint when run Python code?运行 Python 代码时如何从 Pylint 获取报告 + 分数?
【发布时间】:2019-05-10 16:12:10
【问题描述】:

直接从 Python 代码运行 pylint 时,我似乎无法获得任何返回值。从命令行运行它会生成一个不错的报告,底部有一个汇总分数。

我尝试将“Run”的返回值放入一个变量中,并获取它的“reports”字段 - 但它看起来像一些默认模板。

这就是我所拥有的:

from io import StringIO
from pylint.reporters import text
from pylint.lint import Run


def main():
    print("I will verify you build!")
    pylint_opts = ['--rcfile=pylintrc.txt', '--reports=n', 'utilities']
    pylint_output = StringIO()
    reporter = text.TextReporter(pylint_output)
    Run(pylint_opts, reporter=reporter, do_exit=False)
    print(pylint_output.read())


if __name__ == '__main__':
    main()

我希望这里有一些报告,但我得到的只是: " 我会验证你的构建!

进程以退出代码 0 结束 "

【问题讨论】:

  • 你输入的命令是什么?

标签: python output report pylint


【解决方案1】:

我调查了 pylint 问题。我们最终保持了当前行为,因为您的代码稍作调整即可工作:

def main():
    print("I will verify you build!")
    pylint_opts = ['--rcfile=pylintrc.txt', '--reports=n', 'utilities']
    pylint_output = StringIO()
    reporter = text.TextReporter(pylint_output)
    Run(pylint_opts, reporter=reporter, do_exit=False)
    print(pylint_output.getvalue())

StringIO 是一个不隐藏流位置的流。 Pylint 正确写入pylint_output,但将光标留在流的末尾。 pylint_output.read() 只从光标处开始读取。

您可以在调用pylint_output.read() 之前调用pylint_output.seek(0) 重置流位置。或者,如上面的代码块所示,StringIO 提供了一个方法getvalue,它将返回缓冲区的全部内容,而不管光标位置如何。

Pylint 文档将使用此示例进行更新,因此感谢您提出此示例。

【讨论】:

    【解决方案2】:

    代码没问题,但这是 pylint 中的一个错误,将由 this issue 解决。

    【讨论】:

    • 非常感谢!我相信您的回答将来会对某人有所帮助:)
    猜你喜欢
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多