2

如果我这样做:

new_list = []
new_list.foo()

flake8 不会为 foo() 方法返回错误,因为它不是“列表”方法。

这是正常的还是我需要配置一些东西?

4

2 回答 2

5

flake8不处理问题,但PyLint确实 - 发出no-member警告:

$ pylint test.py
No config file found, using default configuration
************* Module test
C:  1, 0: Missing module docstring (missing-docstring)
C:  1, 0: Invalid constant name "new_list" (invalid-name)
E:  2, 0: Instance of 'list' has no 'foo' member (no-member)

而且,PyCharm 代码分析器的内置也会警告未解析的属性:

在此处输入图像描述

于 2016-05-08T14:42:21.603 回答
2

Flake8是这些工具的包装器:

  • PyFlakes
  • pep8
  • Ned Batchelder 的 McCabe 剧本

PyFlakes是您可能期望检测到此类错误的部分。但它检测到的很少,它解释了原因:

Pyflakes 也比 Pylint 或 Pychecker 更快。这主要是因为 Pyflakes 只单独检查每个文件的语法树。因此,Pyflakes 可以检查的事物类型受到更多限制。

flake8文档列出了 Pyflakes 提供的错误代码

code    sample message
F401    module imported but unused
F402    import module from line N shadowed by loop variable
F403    ‘from module import *’ used; unable to detect undefined names
F404    future import(s) name after other statements
F811    redefinition of unused name from line N
F812    list comprehension redefines name from line N
F821    undefined name name
F822    undefined name name in __all__
F823    local variable name ... referenced before assignment
F831    duplicate argument name in function definition
F841    local variable name is assigned to but never used

我支持 PyCharm 的推荐,其次是 PyLint。

于 2016-05-08T14:56:19.493 回答