Herramientas para ayudar a los desarrolladores a leer la jerarquía de clases más rápido

Principalmente paso tiempo en Python / Django y Objective-C / CocoaTouch y js / jQuery en el curso de mi trabajo diario.

Mi editor de elección esvim para Python / Django y js / jQuery yxcode para Objective-C / CocoaTouch.

Uno de los cuellos de botella en mi velocidad de desarrollo es el ritmo en el que leo el código existente, en particular las bibliotecas de código abierto que utilizo.

En Python / Django, por ejemplo, cuando encuentro algunas características nuevas introducidas por los desarrolladores de django, siento curiosidad y comienzo a explorar el código base manualmente. Por ejemplo, cuando se introdujeron vistas basadas en clase a partir de django 1.3 en adelante, referencia -https://docs.djangoproject.com/en/dev/topics/class-based-views/ - Veré el código de ejemplo mostrado:

<code>from django.views.generic import TemplateView

class AboutView(TemplateView):
    template_name = "about.html"
</code>

Y pruébalo en uno de mis proyectos. Lo que es más importante, tengo curiosidad por lo que sucede detrás de la escena, por lo que profundizaré en el código fuente:

<code># django/views/generic/__init__.py file

from django.views.generic.base import View, TemplateView, RedirectView
from django.views.generic.dates import (ArchiveIndexView, YearArchiveView, MonthArchiveView,
                                     WeekArchiveView, DayArchiveView, TodayArchiveView,
                                     DateDetailView)
from django.views.generic.detail import DetailView
from django.views.generic.edit import FormView, CreateView, UpdateView, DeleteView
from django.views.generic.list import ListView


class GenericViewError(Exception):
    """A problem in a generic view."""
    pass
</code>

Desde aquí, lo rastrearé hacia atrás hasta el archivo django / views / generic / base.py y descubriré exactamente quéTemplateView la clase hace: -

<code>class TemplateView(TemplateResponseMixin, View):
    """
    A view that renders a template.
    """
    def get_context_data(self, **kwargs):
        return {
            'params': kwargs
        }

    def get(self, request, *args, **kwargs):
        context = self.get_context_data(**kwargs)
        return self.render_to_response(context)
</code>

Y aquí está eso demuestraTemplateView clase hereda deTemplateResponseMixin yView Clases ... y sigo cavando más ... y así sucesivamente ...

El problema es que este es un proceso extremadamente ineficiente y lento (para "seguir" las jerarquías de clase manualmente y abrir cada archivo a lo largo del camino).

Entonces, la pregunta es: ¿existe una forma fácil / herramienta de interfaz de usuario (u otra solución visual) que analice el código Python en un proyecto particular y visualice jerarquías de clases que luego puedo inspeccionar fácilmente haciendo "clic" en una clase específica que me interesa leer? ¿acerca de?

Nota que conozco el shell de IPython pero que no parece tan fácil de usar como una herramienta de visualización.

Por ejemplo, hayF-Script en el mundo de la programación de Objective-C / iOS / Mac, que no solo proporciona una shell (como Python o IPython shell), sino que también proporciona una forma visual para que los desarrolladores analicen las jerarquías de clases.

Captura de pantalla de referencia: -

Entonces, ¿existe una herramienta de visualización de jerarquía de clases (específicamente para Python, pero incluso mejor si es genérica y se puede usar para diferentes idiomas)? ¿Cuáles son sus métodos para ponerse al día de manera eficiente al leer el código fuente de fuente abierta?

ACTUALIZADO

Por consejo a continuación, probéctags y vim plugintaglist y pude usar:TlistOpen Para abrir un búfer lateral en vim como este: -

Esto se ve muy bien como:TlistOpen ahora, esencialmente, me muestra todas las clases y funciones que están disponibles en mi búfer actualmente abierto.

Mi problema ahora es que cuando intento hacerCtrl] mientras mi cursor está encendidoTemplateView, Obtuve el siguiente error:-

¿Qué estoy haciendo mal? ¿Es porque mi código fuente django está en unavirtualenv? ¿O hay algo específico que tengo que hacer para hacerctags/taglist "consciente" del código fuente de django?

Respuestas a la pregunta(3)

Su respuesta a la pregunta