更快地浏览大型Python代码库

Nie*_*Bom 12 python vim codebase

作为程序员,我们阅读的内容比编写的要多.我开始在一家使用几个"大"Python软件包的公司工作; 具有较高KLOC的包裹或包裹系列.例证:Zope.

我的问题是我无法快速/轻松地浏览此代码库.我目前的策略是

  • 我开始阅读一个我需要改变/理解的模块
  • 我打了一个我需要了解更多的导入
  • 我通过在导入和回显模块之后放置Python调试(pdb)语句来找出导入的源代码的位置,这告诉我它的源文件
  • 我导航到它,在shell或Vim文件资源管理器中.
  • 大部分时间模块本身都会导入更多的模块,在我知道之前我已经"在我的盘子上"有10KLOC

或者:

  • 我看到了一个我需要了解更多的方法/类
  • 我在整个代码库中搜索(ack-grep)该方法/类的定义(这可能很痛苦,因为代码库部分在〜/ .buildout-eggs中)
  • 我找到一个或多个定义该方法/类的代码
  • 我必须推断出哪一个是我需要阅读的

这花费了大量时间,这对于大型代码库来说是可以理解的.但我觉得导航一个庞大而未知的Python代码库是一个常见的问题.

所以我正在为这个问题寻找技术工具或战略解决方案....

无法想象使用上述策略的硬核Python程序员.

Dav*_*Lam 10

在Vim上,我喜欢NERDTree(文件浏览器)和taglist.vim(源代码浏览器 - > http://www.vim.org/scripts/script.php?script_id=273)

同样在Vim中,您可以使用CTRL-]跳转到定义(:h CTRL-]):

  1. 下载旺盛的ctags http://ctags.sourceforge.net/
  2. 按照安装说明将其放在PATH上的某个位置
  3. 从源代码的'root'目录,从shell创建一个标签文件:"ctags -R"
  4. (确保你有:设置noautochdir,并确保:pwd是root步骤3中的目录)
  5. 进入Vim,将光标移到某个函数或类名上,按CTRL-]

默认情况下,如果标记有多个匹配项,它会显示导入的所有位置以及声明它的位置

如果标签只有一个匹配,它会立即跳转到它

...然后使用Ctrl + O和Ctrl + I从您所在的位置来回移动

(对于您使用的特定库的源代码重复上述步骤,我通常会打开一个单独的Vim窗口来研究东西)

  • 为繁荣的Ctags +1.最初的"IDE"是`vi`加上'ctags`,'vim`甚至比`vi`更好,而Exuberant Ctags甚至比原来的'ctags'更好. (3认同)

Lie*_*yan 5

我用ipython的?命令

你只需要弄清楚如何导入你想要寻找的东西,然后添加?到模块或类或函数或方法名称的末尾以查看其源代码.命令完成也有助于找出长名称.