Pylint:如何从标准输入读取?

3
有没有一种方法可以指示pylint从stdin读取输入?
Synopsis字符串表明文件参数不是必需的: pylint [选项] [] 但当没有非选项参数调用时,它会打印: 用法:pylint [options] module_or_package 文档中没有提到stdin的任何内容。
这看起来不太符合命令行风格...

所以你想要直接在 pylint 中输入 Python 代码?为什么? - jonrsharpe
pylint 是一种静态代码分析器,它不考虑输入和输出。 - Cory Kramer
1
不,没有。但是也许你可以在调用它之前将要发送给其stdin的内容重定向到一个文件中。 - Brian Cain
@jonrsharpe:我想在文件的过去版本上运行pylint。在一个执行此操作的脚本中,我可以将该过去版本检出到临时位置。我的问题是这是否必要。 - Konstantin Shemyak
3个回答

6
Pylint 2.4开始,您可以向Pylint提供额外的--from-stdin参数。

你还需要一个名称,所以完整的命令是 echo $code | pylint --from-stdin 任意名称 - SurpriseDog
这只是对@SurpriseDog评论的一个小补充。"anyname"将是通过stdin输入的脚本的模块名称。通过sys.modules[__name__]进行确认。 - Ronald Petty

3

2
有人提供了一个包含所需功能的PR。从Pylint 2.4开始,您可以向Pylint提供额外的--from-stdin参数。请参见我的答案 - Petski

0

在 Linux/Unix/OSX 上,你可以这样做:

pylint [options] /dev/stdin

让pylint从标准输入读取


1
这个不起作用。Pylint在文件参数上调用_llseak(),在/dev/stdin上失败。$ echo 'x' | pylint /dev/stdin [...] IOError: [Errno 29] Illegal seek - Konstantin Shemyak
嗯,我在Python 3.4.3下使用pylint 1.4.3,它对我很有效。 - Alex Flint
同时,在Python 2.7.9下,Pylint 1.4.3也可以正常工作,因此这不是Python 2/3的问题。 - Alex Flint

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接