J'aimerais beaucoup intégrer pylint dans le processus de génération pour
mon python projets, mais j'ai couru dans un show-bouchon: l'Un des
types d'erreur que je trouve extrêmement utile -:E1101: *%s %r has no %r
member*
--constamment des rapports d'erreurs lors de l'utilisation commune de django champs,
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 tune Pylint à prendre correctement des domaines tels que les objets en compte? (J'ai aussi regardé dans le Django source, et j'ai été incapable de trouver la mise en œuvre de l' objects
, donc je pense qu'il n'est pas "juste" un champ de classe. D'autre part, je suis assez nouveau dans python, donc je peut très bien avoir oublié quelque chose.)
Edit: Le seul moyen que j'ai trouvé à dire pylint de ne pas avertir à propos de ces avertissements est en bloquant toutes les erreurs de type (E1101) qui n'est pas une solution acceptable, étant donné que c'est (à mon avis) très utile d'erreur. Si il y a une autre façon, sans augmenter la pylint source, merci de m'indiquer les détails :)
Voir ici pour un résumé des problèmes que j'ai eu avec pychecker
et pyflakes
-- ils l'ont prouvé à être loin de l'instabilité pour un usage général. (En pychecker cas, les accidents d'origine dans le pychecker code -- pas de source c'était chargement/invoquant.)