我正在尝试track down a bug caused by the intersection of MRI 1.8.7 and libxml-1.1.3,并且我需要深入研究Ruby解释器本身的代码库。SVN browser的实用性有限;我真正喜欢的是使用LXR,它超链接了一个C代码库,以便于导航,例如http://lxr.linux.no/perl+perl-5.10.1/utf8.c
我当然可以在我的机器上设置LXR,但是有没有人知道Ruby有没有公开的LXR呢?谷歌帮不上什么忙:http://www.google.com/search?ie=UTF-8&q=lxr+ruby
发布于 2011-03-06 18:21:05
我还没有找到用于MRI的公共LXR,所以我在我的机器上设置了一个。下面是如何在Ubuntu 10.10上做到这一点:
: josh@josh; cat /etc/issue
Ubuntu 10.10 \n \l
: josh@josh; sudo aptitude install apache2 lxr
: josh@josh; sudo vim /etc/apache2/sites-available/default
: josh@josh; tail -6 /etc/apache2/sites-available/default
Alias /lxr /usr/share/lxr
Options All
AllowOverride All
: josh@josh; sudo vim /usr/share/lxr/http/.htaccess
: josh@josh; sudo cat /usr/share/lxr/http/.htaccess
SetHandler cgi-script
: josh@josh; sudo mkdir -p /usr/share/lxr/source/1.8.7-p334
: josh@josh; cd /usr/share/lxr/source/1.8.7-p334
: josh@josh; sudo tar xvjf /tmp/ruby-1.8.7.tar.bz2
: josh@josh; sudo mv ruby-1.8.7 ruby
: josh@josh; sudo vim /usr/share/lxr/source/versions
: josh@josh; sudo cat /usr/share/lxr/source/versions
1.8.7-p334
: josh@josh; sudo ln -s /usr/share/lxr/source/1.8.7-p334 /usr/share/lxr/source/defversion
: josh@josh; sudo genxref ruby
Starting pass 1: Collect identifier definitions.
(Pass 1) vms/vmsruby_private.c (993), file 1 of 262…
[...]
(Pass 3) identifier 8200 of maximum 17136…
(Pass 3) identifier 8300 of maximum 17136…
Completed pass 3 (0s):Information on 8316 identifiers dumped to disk.
: josh@josh; sudo chmod -R o+r .
: josh@josh; sudo vim /usr/share/lxr/http/lxr.conf
: josh@josh; sudo cat /usr/share/lxr/http/lxr.conf
# Configuration file.
# [...]
# The source is here.
sourceroot: /usr/share/lxr/source/$v/ruby/
srcrootname: Ruby
# [...]发布于 2011-03-04 23:54:44
它不是LXR,但我最近做了很多这样的事情,发现Understand非常有帮助。它可以让你点击任何符号,转到定义/声明,并进行简单的调用图和其他静态分析。我只希望它也支持Ruby源代码。
另一方面,libxml仍然无可救药地被打破,如果你能迁移到Nokogiri,它将为你省去很多痛苦。它们的API非常相似。
发布于 2015-01-12 14:13:24
介绍另一个代码交叉引用站点,除了linux内核https://code-grep.com之外,还可用于一般用途。
https://stackoverflow.com/questions/5194891
复制相似问题