私は統合するだろう非常に多くのようなpylintを私のpythonプロジェクトのビルドプロセスに、しかし、私は1つのショーストッパーに実行した:私は非常にuseful--見つけること、エラーの種類の一つは:E1101: *%s %r has no %r
member*
一般的なDjangoのフィールドを使用しているとき--constantlyエラーを報告します、 例えば:
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コードが原因で発生し、ロード/呼び出し元ではありませんでした。)