在使用Django时减小pylint误报

12 投票
3 回答
3998 浏览
提问于 2025-04-16 02:34

我想在使用Django的时候,合理地处理一些pylint的错误。最让我头疼的两个问题是:一个是从django.db.models.Model继承时,pylint会抱怨使用'objects'这个属性,认为它不是一个成员;另一个是使用django.test.TestCase时,当我在一个测试用例中添加了七个测试后,它又抱怨公共方法太多(我猜TestCase大概有十四个公共方法)。

我知道这个问题的第一部分和问题115977是重复的,但那个问题有点老了,里面的解决方案都不是很好,所以我想再提一下这个问题。

我不想简单地在pylint中压制这些抱怨,因为在其他情况下我还是想看到这些警告。

3 个回答

5

如果你不在乎一些pylint的警告,比如不存在的成员(E1101)和公共方法太多(R0904),你可以很简单地关闭这些警告,方法是:

pylint --disable=E1101,R0904

如果你只对几个检查项感兴趣,可以这样运行pylint:

pylint --enable=basic,variables,classes,design,imports,newstyle,exceptions,format,miscellaneous,metrics,similarities
7

我不喜欢重复自己,但这里有一个真的有效的答案:https://stackoverflow.com/a/31000713/78234
根据这个答案:不要通过添加 ignoresgenerated-members 来关闭或削弱 Pylint 的功能。
使用一个积极开发的 Pylint 插件,它能理解 Django。
这个针对 Django 的 Pylint 插件效果很好:

pip install pylint-django

在运行 pylint 时,记得在命令中添加以下标志:

--load-plugins pylint_django

详细的博客文章可以在这里找到。

7

最简单的方法,如果你的代码问题不在你控制范围内(比如自动生成的代码),就是在你知道这些警告是多余的地方关闭它们。下面是一个直接来自于首次介绍这个解决方案的消息的例子:

1  class foo:
2    # pylint: disable=W1234
3    def bar(self):
4      # pylint: disable=W4321
5      pass
6    def gnurz(self):
7      pass

撰写回答