Я дуже хотів би інтегрувати 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), що не є прийнятним рішенням, оскільки це (на мій погляд) надзвичайно корисна помилка. Якщо є інший спосіб, не збільшуючи джерело пілінта, будь ласка, вкажіть мені конкретні дані :)
Дивіться тут для опису проблем , які я мав з pychecker
і pyflakes
- вони виявилися далеко нестабільний для загального користування. (У випадку pychecker, збої виникли в коді pychecker - не джерело, яке він завантажував / викликав.)