Я бы очень хотел интегрировать 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 - не исходный код, который он загружал / вызывал.)