2012-08-02 16 views
11

Como programadores leemos más de lo que escribimos. Empecé a trabajar en una empresa que usa un par de paquetes "grandes" de Python; paquetes o familias de paquetes que tienen un alto KLOC. Caso en cuestión: Zope.Navegar por una gran base de código Python más rápido

Mi problema es que tengo problemas para navegar esta base de código rápida/fácilmente. Mi estrategia actual es

  • empiezo a leer un módulo que necesito cambiar/entender
  • llegué a una importación, que necesito saber más de
  • que saber dónde está el código fuente para que la importación la hace colocar una instrucción de depuración de Python (pdb) después de las importaciones y hacer eco del módulo, que me dice que es el archivo de origen
  • Navego hacia él, en shell o en el explorador de archivos Vim.
  • mayor parte del tiempo el propio módulo importa más módulos y antes Sé que tengo 10 KLOC "en mi plato"

alternativa:

  • veo un método/clase que necesito a saber más de
  • hago una búsqueda (ACK-grep) para la definición de ese método/clase en toda la base de código (que puede ser un dolor debido a que el código base está en parte en ~/.buildout-huevos)
  • Encuentro una o más piezas de código que definen ese método/Clase
  • tengo que deducir cuál de ellos es el que necesito para leer

Esto cuesta mucho tiempo, lo cual es comprensible para una gran base de código. Pero tengo la sensación de que navegando por una base de código de Python grande y desconocida es un problema bastante común.

Así que estoy buscando herramientas técnicas o soluciones estratégicas para este problema. ...

acabo No puedo imaginar los programadores de Python incondicionales utilizando las estrategias descritas anteriormente.

+1

https://github.com/mkomitee/vim-gf-python le interese, o más simplemente: http://vim.wikia.com/wiki/Automatically_add_Python_paths_to_Vim_path –

+0

Jaja, como dicen, "primeros problemas mundiales" ... si pudiéramos hacer esto con proyectos en C (que normalmente no podemos a menos que el código de máquina en bruto) es su taza de té) el KLOC probablemente estaría más cerca de 100K; p –

Respuesta

8

en Vim, me gusta NERDTree (un explorador de archivos) y taglist.vim (código fuente del navegador ->http://www.vim.org/scripts/script.php?script_id=273)

también en Vim, puede utilizar CTRL] para saltar a una definición (: h CTRL]):

  1. descarga exuberantes ctags http://ctags.sourceforge.net/
  2. siga las instrucciones de instalación y ponerla en algún lugar de su PATH
  3. desde el directorio 'raíz' de su código fuente, hacer un archivo de etiquetas de la cáscara: "ctags -R"
  4. (asegúrese de haber: set noautochdir, y asegúrese de que: pwd es el directorio root paso om 3)
  5. entrar en Vim, cursor sobre alguna función o una clase de nombre, golpeó CTRL]

por defecto, si hay varias coincidencias para la etiqueta, le muestra todas partes se importó, y donde fue declarado

si la etiqueta tiene un solo partido, que inmediatamente salta a ella

... a continuación, utilizar las teclas Ctrl + O y Ctrl + I para mover hacia atrás y adelante de donde estaba

(repita los pasos anteriores para el código fuente de parti cular las bibliotecas que utilizan, por lo general mantener una ventana de Vim separada abierta para estudiar cosas)

+2

+1 para ctags exuberantes. El "IDE" original era 'vi' más' ctags', y 'vim' es incluso mejor que' vi' y Exuberant Ctags es incluso mejor que los 'ctags' originales. – steveha

+0

Tenga en cuenta que 'ctags -R' puede no funcionar en OSX, que se envía con una versión de' ctags' sin la opción '-R'. Ver http://stackoverflow.com/questions/8996387/am-i-even-using-exuberant-ctags. – nofinator

5

Uso ipython's ?? comando

Solo necesita averiguar cómo importar las cosas que desea buscar, luego agregue? al final del módulo o clase o función o nombre del método para ver su código fuente. Y la finalización del comando también ayuda a descifrar los nombres largos.

-1
+1

Esta es una mala respuesta. Es 1) un enlace solo responde 2) al propio proyecto del afiche 3) que está muerto. –

+0

Actualización: Este enlace no está muerto. He escuchado muchas cosas buenas sobre el modo python. Lo he usado por unos días y me gusta mucho. –

Cuestiones relacionadas