1

我想使用pycodestyle. 我试过使用他们的文档所说的:

import pycodestyle

fchecker = pycodestyle.Checker('testsuite/E27.py')
file_errors = fchecker.check_all()
# I took off the show_source=True and the final print

它打印错误,但是file_errors错误的数量,而不是错误本身。我希望在列表中返回错误。如何使用 pycodestyle 做到这一点?

更多细节

pycodestyle是一个根据PEP8指南检查代码的模块。通常,它与命令行一起使用,但我想通过将其放入脚本来自动化它。使用docs,您将获得:

import pycodestyle

fchecker = pycodestyle.Checker('testsuite/E27.py', show_source=True)
file_errors = fchecker.check_all()

print("Found %s errors (and warnings)" % file_errors)

这将打印错误和错误总数。然而,file_errors这不是一个列表——它是错误的数量。

我想要一种从pycodestyle.Checker(或pycodestyle中的任何东西)获取列表的方法。我怎样才能做到这一点?

我所做的:我查看了谷歌,并略读了pycodestyle's 文档,但没有提到任何内容。

4

1 回答 1

0

从略读源代码,它似乎没有任何方法可以返回错误,只需打印它们。因此,您可以改为捕获其标准输出。

from contextlib import redirect_stdout
import io

f = io.StringIO()  # Dummy file
with redirect_stdout(f):
    file_errors = fchecker.check_all()
out = f.getvalue().splitlines()  # Get list of lines from the dummy file

print(file_errors, out)

此代码基于ForeverWintr答案

例如,在这样的文件上运行它:

s  = 0

输出:

1 ['tmp.py:1:2: E221 multiple spaces before operator']
于 2020-11-08T21:13:06.463 回答