Я очень хотел бы интегрировать pylint в процесс сборки для моих проектов Python, но я столкнулся с одним show-stopper: один из типов ошибок, который я считаю чрезвычайно полезным -: _ 1 _-- постоянно сообщает об ошибках при использовании общих полей 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, укажите мне конкретику :)
См. здесь для обзора моих проблем с pychecker
и pyflakes
- они оказались очень нестабильными для общего использования. (В случае pychecker сбои возникли в коде pychecker, а не в источнике, который он загружал / вызывал.)