2012-08-10 31 views
11

Tôi đang dọn dẹp mã django - IDE của tôi có thể dễ dàng phát hiện các biến không sử dụng, vv trong mã Python, nhưng tôi chưa tìm thấy cách tìm biến mẫu chưa sử dụng. dễ dàng hơn để dọn dẹp mã xem nếu tôi có thể tìm ra giá trị nào trong từ điển ngữ cảnh không được các mẫu truy cập.Làm thế nào để tìm các biến mẫu không sử dụng trong Django

Có công cụ cho việc này không?

EDIT: Tôi đang tìm kiếm giải pháp ngoại tuyến, công cụ phân tích mã tĩnh hoặc như vậy. Trong khi giải pháp paranoid templates được đề xuất dưới đây tốt hơn không có gì, nó không tối ưu vì có nhiều chi nhánh {% if ... %} trong các mẫu và hơn nữa, sẽ yêu cầu kiểm tra tất cả các khung nhìn (trong tất cả các trường hợp sử dụng) để tìm tất cả các biến không được tham chiếu.

+0

Bạn có thể thấy các biến với [django-debug-toolbar] (https://github.com/django-debug-toolbar/django-debug-toolbar/) mặc dù nó không phân biệt giữa được sử dụng và không sử dụng. –

Trả lời

2

Hãy thử paranoid django templates giải pháp:

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 .. điều này về cơ bản là trái ngược với những gì OP muốn, phải không? – supervacuo

+0

Ah, bởi vì bạn không bao gồm chức năng 'paranoid_context_manager', đó là phần cần thiết để thực sự sử dụng' sees_keys'. – supervacuo

+0

Tôi đã trao cho bạn tiền thưởng, nhưng tôi vẫn đang tìm kiếm một cách tiếp cận đẹp hơn. Tôi đoán tôi sẽ phải tự mình tạo ra công cụ ... – Kimvais

Các vấn đề liên quan