如何在 pylint 中启用打印语句捕获?

How do I enable print statement catching in pylint?

我有一个文件 p.py,其中只有一行:

print('hello')

我 运行 pylint (2.6.0) 与:

pylint p.py --enable=E

我得到的是:

************* Module p
p.py:1:0: C0304: Final newline missing (missing-final-newline)
p.py:1:0: C0114: Missing module docstring (missing-module-docstring)

----------------------------------------------------------------------

Your code has been rated at -10.00/10 (previous run: -10.00/10, +0.00)

如何让 pylint 抛出 E1601?

要触发此错误,您需要 运行 Python 2.x 并使用打印语句而不是打印函数

打印语句是 Python 2.x 早期版本中的唯一选项。只是决定在 Python 3 中用打印功能替换它们,打印功能才添加到 Python 2.6.

# Print statement, only works in Python 2.x
print 'hello'

# Print function, Python >= 2.6
print('hello')

当 运行 Python >= 3.0 时,Pylint 不会发出 E1601。在 Python 3 中,使用 print 语句不是文体错误,而是语法错误。我最好的猜测是 E1601 存在的原因是鼓励 Python 2 位开发人员尽可能使用 Python 3 项功能,以便他们的代码更具可移植性。

我知道这并没有像问题所问的那样使用 pylint,但是我在 CI 中使用了一个简单的 bash 单行代码来捕获对 [=12= 的调用]:

prints=$(grep -rn 'print('); [[ -z $prints ]] && echo 'no prints' || printf "found prints:\n$prints\n"

|| 路径中,您可以 exit 1 使 CI 运行 或任何您需要的失败。