Bardzo chciałbym zintegrować pylint z procesem kompilacji moich projektów w Pythonie, ale natknąłem się na jeden show-stopper: jeden z typów błędów, który uważam za niezwykle przydatny -: - E1101: *%s %r has no %r
member*
stale zgłasza błędy podczas korzystania z typowych pól django , na przykład:
E1101:125:get_user_tags: Class 'Tag' has no 'objects' member
co jest spowodowane tym kodem:
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
Jak mogę tak dostroić Pylint, aby odpowiednio uwzględniał takie pola, jak obiekty? (Zajrzałem również do źródła Django i nie mogłem znaleźć implementacji objects
, więc podejrzewam, że nie jest to „tylko” pole klasy. Z drugiej strony, jestem całkiem nowy w Pythonie, więc mogli coś przeoczyć).
Edycja: Jedynym sposobem, w jaki udało mi się powiedzieć pylintowi, aby nie ostrzegał o tych ostrzeżeniach, jest blokowanie wszystkich błędów typu (E1101), co nie jest akceptowalnym rozwiązaniem, ponieważ jest to (moim zdaniem) niezwykle przydatny błąd. Jeśli jest inny sposób, bez rozszerzania źródła pylinta, proszę o wskazanie szczegółów :)
Zobacz tutaj podsumowanie problemów, z którymi miałem pychecker
i pyflakes
- okazały się one zbyt niestabilne do ogólnego użytku. (W przypadku pychecker, awarie pochodzą z kodu pychecker - a nie źródła, które ładował / wywoływał).