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