J'aimerais beaucoup intégrer pylint dans le processus de construction de mes projets python, mais je me suis heurté à un seul show-stopper: l'un des types d'erreur que je trouve extrêmement utile--: E1101: *%s %r has no %r
member*
- signale en permanence des erreurs lors de l'utilisation de champs django courants , par exemple:
E1101:125:get_user_tags: Class 'Tag' has no 'objects' member
qui est causé par ce code:
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
Comment puis-je régler Pylint pour prendre correctement en compte des champs tels que des objets? (J'ai également regardé dans la source de Django, et je n'ai pas pu trouver l'implémentation de objects
, donc je soupçonne que ce n'est pas "juste" un champ de classe. D'un autre côté, je suis assez nouveau en python, donc je peut très bien avoir oublié quelque chose.)
Edit: Le seul moyen que j'ai trouvé pour dire à pylint de ne pas avertir de ces avertissements est de bloquer toutes les erreurs du type (E1101), ce qui n'est pas une solution acceptable, car c'est (à mon avis) une erreur extrêmement utile. S'il y a un autre moyen, sans augmenter la source pylint, veuillez m'indiquer les détails :)
Voir ici pour un résumé des problèmes que j'ai rencontrés pychecker
et pyflakes
- ils se sont avérés être très instables pour une utilisation générale. (Dans le cas de Pychecker, les plantages proviennent du code de Pychecker - et non de la source qu'il charge / invoque.)