首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >你知道Ruby还有什么替代的ctag生成器吗?

你知道Ruby还有什么替代的ctag生成器吗?
EN

Stack Overflow用户
提问于 2013-06-27 16:54:35
回答 5查看 6.8K关注 0票数 18

Exumerant Ctag在Ruby中不能很好地工作,你可以看到ruby.c代码中有很多漏洞,基本上它无法识别很多情况。其中最重要的一点是:

代码语言:javascript
复制
class SomeModule::SomeClass
end

Ctag生成:

代码语言:javascript
复制
SomeModule  someclass.rb  /^class SomeModule::SomeClass$/;"  c

这是错误的。正确且预期的条目为:

代码语言:javascript
复制
SomeClass  someclass.rb  /^class SomeModule::SomeClass$/;"  c

这是非常有限的。有一些ctag的补丁是不起作用的,例如https://github.com/xtao/overlay/blob/master/dev-util/ctags/files/ctags-5.5.4-ruby-classes.patch,但是看看ctag的ruby代码库,这真的需要完全重写。

所以我一直在玩另一个选项,那就是https://github.com/rdoc/rdoc-tags,它工作得更好,但速度很慢。我是说真的很慢。在我的项目上生成标签使用ctag是2秒,但使用这个工具是一个小时。真的。

我发现了一个老项目,它自己解析Ruby并生成标签,但它只适用于Ruby1.8。它比ctag慢,但也没那么差。

因此,我正在寻找一些替代方案。你知道有没有其他可用的ruby ctag生成器,可以给你提供正确的输出,而且速度很快?

谢谢!

Ruby :我发现了一个非常好的项目,可以和 1.9+一起工作,而且很准确,很快。我推荐这样做:

https://github.com/tmm1/ripper-tags

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-06-27 16:59:53

开箱即用的丰富的ctag并不能做很多有用的事情:

  • 它不处理:

模块A::B

  • 它不标记(至少某些)像‘==’

  • It这样的“运算符”方法不支持限定标记,—type=+

  • It不输出常量或属性的标记。

提供补丁,但它仅适用于5.5版,不再起作用。

其他项目:

Source

票数 17
EN

Stack Overflow用户

发布于 2013-06-27 17:10:30

Ripper-tags的努力确实解决了这里所描述的一切。它基于官方的Ruby解析器,解析器速度也很快。https://github.com/tmm1/ripper-tags

代码语言:javascript
复制
gem install ripper-tags
cd your_project/
ripper-tags -R

它也支持Emacs。

票数 18
EN

Stack Overflow用户

发布于 2016-02-01 16:03:43

将以下内容添加到~/.ctag中

代码语言:javascript
复制
--regex-ruby=/(^|;)[ \t]*(class|module)[ \t]+([A-Z][[:alnum:]_]+(::[A-Z][[:alnum:]_]+)+)/\3/c,class,constant/

因此,您可以:

交易对象:module A::B

点击此处查看更多信息:https://github.com/bltavares/dot-files/blob/master/ctags

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17338779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档