¿Conoces un generador alternativo de ctags para Ruby?

Extumante Ctags no funciona bien con Ruby, puedes ver que hay muchos hacks en el código ruby.c y, básicamente, no reconoce muchos casos. Uno de los más importantes es este bit:

class SomeModule::SomeClass end 

Ctags genera:

 SomeModule someclass.rb /^class SomeModule::SomeClass$/;" c 

Cuál está mal. La entrada correcta y esperada es:

 SomeClass someclass.rb /^class SomeModule::SomeClass$/;" c 

Esto es muy limitante. Hay algunos parches para ctags disponibles que no funcionan, por ejemplo, https://github.com/xtao/overlay/blob/master/dev-util/ctags/files/ctags-5.5.4-ruby-classes.patch pero mirando en el código base de ruby ​​de ctags, esto realmente necesita una reescritura completa.

Así que he estado jugando con otra opción que es https://github.com/rdoc/rdoc-tags que funciona mejor, pero es lenta. Quiero decir realmente lento. La generación de tags en mi proyecto es de 2 segundos con ctags pero una hora con esta herramienta. De Verdad.

Encontré un proyecto antiguo que estaba analizando a Ruby por su cuenta y generando tags, pero solo para Ruby 1.8. Era más lento que ctags, pero no tan malo.

Así que estoy buscando algunas alternativas. ¿Conoce algún otro generador de tags de Ruby que funcione y que le brinde un rendimiento adecuado y sea rápido?

¡Gracias!

Edición : Encontré un proyecto muy bueno que funciona con Ruby 1.9+ y es preciso y rápido. Lo recomiendo:

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

Ctags exuberantes fuera de la caja no hacen una serie de cosas útiles:

  • No se ocupa de:

     module A::B 
  • No etiqueta (al menos algunos de) los métodos del “operador” como '=='

  • No admite tags calificadas, —type=+

  • No genera tags para constantes o atributos.

Parche disponible, pero es solo para la versión 5.5 y ya no funciona.

Otros proyectos:

Fuente

El esfuerzo de Ripper-Tags resuelve todo lo descrito aquí. Se basa en el analizador oficial de Ruby, que también es bastante rápido. https://github.com/tmm1/ripper-tags

 gem install ripper-tags cd your_project/ ripper-tags -R 

También apoya a Emacs también.

Agregue el siguiente a su ~ / .ctags

 --regex-ruby=/(^|;)[ \t]*(class|module)[ \t]+([AZ][[:alnum:]_]+(::[AZ][[:alnum:]_]+)+)/\3/c,class,constant/ 

Así que puedes:

  • tratar con: module A::B

Vea más aquí: https://github.com/bltavares/dot-files/blob/master/ctags

Un parche está disponible a partir de 2013-02

el generador de tags rspec no reconocerá correctamente los bloques de describe que comienzan con semicolor ( :some-method ), pero aparte de eso, es genial.

También hay https://github.com/eapache/starscope

No es compatible con el formato de etiqueta extendida (todavía) pero hace otras cosas, como exportar bases de datos cscope.

Intereting Posts