2012-08-10 7 views
11

djangoコードをクリーンアップしています - 私のIDEはPythonコードで未使用の変数などを簡単に検出できますが、未使用のテンプレート変数を見つける方法は見つけられませんでした。コンテクスト辞書のどの値がテンプレートによってアクセスされていないかを知ることができれば、ビューコードをクリーンアップする方がはるかに簡単です。Djangoで未使用のテンプレート変数を見つける方法

これに対応するツールはありますか?

EDITオフラインソリューション、スタティックコード解析ツールなどを探しています。下に示唆されたparanoid templatesソリューションは何もありませんが、テンプレート内に複数の{% if ... %}ブランチがあり、すべての参照されていない変数を見つけるためにすべてのビューを(すべてのユースケースで)テストする必要があるため最適ではありません。

+0

を使用済みと未使用を区別しません。 –

答えて

2

paranoid django templates解決してみてください。それが(https://github.com/django-debug-toolbar/django-debug-toolbar/)あなたは[ジャンゴ・デバッグツールバー]で変数を参照することができ

class ParanoidContextProxy(object): 
    """ 
    This is a poor-man's proxy for a context instance. 

    Make sure template rendering stops immediately on a KeyError. 
    """ 
    def __init__(self, context): 
     self.context = context 
     self.seen_keys = set() 

    def __getitem__(self, key): 
     self.seen_keys.add(key) 
     try: 
      return self.context[key] 
     except KeyError: 
      raise ParanoidKeyError('ParanoidKeyError: %r' % (key,)) 

    def __getattr__(self, name): 
     return getattr(self.context, name) 
    def __setitem__(self, key, value): 
     self.context[key] = value 
    def __delitem__(self, key): 
     del self.context[key] 
+0

Err ..これは基本的にOPが望んでいたものとは逆ですね。 – supervacuo

+0

ああ、あなたが実際に 'seen_keys'を使うために必要な' paranoid_context_manager'関数を含んでいなかったからです。 – supervacuo

+0

私はあなたに賞金を授与しましたが、私はまだもっと良いアプローチを探しています。私は自分でツールを作成しなければならないと思う... – Kimvais