更快地浏览大型Python代码库

时间:2012-08-02 13:07:47

标签: python vim codebase

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

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

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

可替换地:

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

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

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

我只是无法想象使用上述策略的硬核Python程序员。

3 个答案:

答案 0 :(得分:10)

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

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

  1. 下载exuberant ctags http://ctags.sourceforge.net/
  2. 按照安装说明将其放在PATH上
  3. 从源代码的'root'目录,从shell创建一个标签文件:“ctags -R”
  4. (确保你有:设置noautochdir,并确保:pwd是步骤3中的root目录)
  5. 进入Vim,将光标放在某个函数或类名上,按CTRL - ]
  6. 默认情况下,如果标签有多个匹配项,则会显示导入的所有位置以及声明的位置

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

    ...然后使用Ctrl + O和Ctrl + I来回移动

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

答案 1 :(得分:5)

我使用ipython的?命令

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

答案 2 :(得分:-1)