我正在使用 pylint 进行代码检查(在带有 pylint 2.3.1、astroid 2.2.5、Python 3.6.2 的 VS Code 中)。
可以使用以下代码段重现该行为:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from http import HTTPStatus
print(HTTPStatus.NOT_ACCEPTABLE.phrase)
通过调用 linting 这个片段
$ pylint snippet.py
给出以下错误消息:
E1101: Instance of 'NOT_ACCEPTABLE' has no 'phrase' member (no-member)
但是,我认为.phrase
它是给定实例的成员,因为代码正在运行,打印所需的结果并.phrase
在docs中引用。这导致错误消息是误报的假设。
然后我在它自己的文档和VS Code 文档中查看了 pylint 配置选项,并.pylintrc
通过执行生成了一个文件
pylint --generate-rcfile > .pylintrc
在此配置文件中,我能够找到以下行:
enable=c-extension-no-member
注释掉这一行并因此禁用c-extension-no-member
检查,误报E1101
错误消息被抑制。但是,我仍然想知道这只是一种解决方法还是真正的误报,因为它禁用了所有c-extension-no-member
检查并且似乎不适合一般方法。当然,可以指定在执行检查时忽略特定模块,但我只想知道此错误消息的原因。