【发布时间】:2010-09-12 01:44:51
【问题描述】:
我非常希望将pylint 集成到构建过程中
我的 python 项目,但我遇到了一个阻碍:其中一个
我发现非常有用的错误类型--:E1101: *%s %r has no %r
member*--在使用常见的 django 字段时不断报告错误,
例如:
E1101:125:get_user_tags: Class 'Tag' has no 'objects' member
这是由这段代码引起的:
def get_user_tags(username):
"""
Gets all the tags that username has used.
Returns a query set.
"""
return Tag.objects.filter( ## This line triggers the error.
tagownership__users__username__exact=username).distinct()
# Here is the Tag class, models.Model is provided by Django:
class Tag(models.Model):
"""
Model for user-defined strings that help categorize Events on
on a per-user basis.
"""
name = models.CharField(max_length=500, null=False, unique=True)
def __unicode__(self):
return self.name
如何调整 Pylint 以正确考虑对象等字段? (我还查看了 Django 源代码,我一直无法找到 objects 的实现,所以我怀疑它不仅仅是一个类字段。另一方面,我对 python 还很陌生,所以我很可能忽略了一些东西。)
编辑: 我发现告诉 pylint 不对这些警告发出警告的唯一方法是阻止 (E1101) 类型的所有错误,这是不可接受的解决方案,因为那是 (在我看来)一个非常有用的错误。如果有另一种方法,而不增加 pylint 源,请指出具体细节:)
请参阅here,了解我在使用pychecker 和pyflakes 时遇到的问题的摘要——事实证明,它们对于一般用途来说远非不稳定。 (在 pychecker 的情况下,崩溃源于 pychecker 代码——而不是它正在加载/调用的源代码。)
【问题讨论】:
-
查看@talweiss 的帖子以获得最新答案!
-
在stackoverflow.com/a/31000713/78234找到了很好的解决方案
-
您能接受@talweiss 的回答吗?这是最新且正确的解决方案。
标签: python django static-analysis pylint