我正在清理 django 代码——我的IDE可以轻松检测 Python 代码中未使用的变量等,但我还没有找到找到未使用模板变量的方法——如果可以的话,清理视图代码会容易得多找出模板不访问上下文字典中的哪些值。
有这个工具吗?
编辑:我正在寻找离线解决方案、静态代码分析工具等。虽然下面建议的偏执模板解决方案总比没有好,但它并不是最优的,因为{% if ... %}
模板中有多个分支,此外,需要测试所有视图(在所有用例中)才能找到所有未引用的变量。
尝试偏执的 django 模板解决方案:
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]