3

我正在使用 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它是给定实例的成员,因为代码正在运行,打印所需的结果并.phrasedocs中引用。这导致错误消息是误报的假设。

然后我在它自己的文档VS Code 文档中查看了 pylint 配置选项,并.pylintrc通过执行生成了一个文件

pylint --generate-rcfile > .pylintrc

在此配置文件中,我能够找到以下行:

enable=c-extension-no-member

注释掉这一行并因此禁用c-extension-no-member检查,误报E1101错误消息被抑制。但是,我仍然想知道这只是一种解决方法还是真正的误报,因为它禁用了所有c-extension-no-member检查并且似乎不适合一般方法。当然,可以指定在执行检查时忽略特定模块,但我只想知道此错误消息的原因。

4

0 回答 0