在pylint中,如何局部禁用警告并随后撤销而不显式给出列表?

4 投票
1 回答
1613 浏览
提问于 2025-04-30 15:29

我知道关于PyLint的一个常见问题解答,其中提到:

4.2 有没有办法只对某个模块禁用某条消息?

可以的,你可以通过在文件顶部添加相应的注释选项,来在模块级别禁用或启用(全局禁用的)消息:

# pylint: disable=wildcard-import, method-hidden
# pylint: enable=too-many-lines

不过,我想知道如何在本地暂时抑制一条消息,然后再简单地恢复到抑制之前的状态。我不想在恢复之前的状态时重复自己。有没有办法做到这一点?

PyLint处理这个问题似乎有个不足之处,就是如果我全局禁用了某条消息some-message(比如通过命令行或pylintrc文件),然后我有以下这段Python代码:

# pylint: disable=some-message
foo, bar, baz = 0, 1, 2
# ... the code that creates the warning
# pylint: enable=some-message

文档建议说,第一行不会有任何效果(也就是说,已经禁用的消息仍然会保持禁用状态),而最后一行不仅会撤销第一行的本地效果——无论它是无害的还是由于全局设置导致的——还会撤销命令行选项或pylintrc的设置。

我想要的功能类似于MS Visual C++中的警告处理:

#pragma warning(push) /* save current state of warning settings */
#pragma warning(disable:somewarning)
/* warning occurs in code here */
#pragma warning(pop)  /* restore previous state of warning settings */

还有一个更简洁的替代方案是:

#pragma warning(disable:somewarning)
/* warning occurs in code here */
#pragma warning(default:somewarning)

PyLint中有没有类似的功能呢?

暂无标签

1 个回答

0

pylint 里没有这个功能。不过你可以在它的反馈网站上提建议:https://bitbucket.org/logilab/pylint/issues

撰写回答