RuboCop - Analizador estático de código Ruby

Publicado el Martes, 8 de septiembre de 2015

RuboCop

RuboCop es un analizador estático de código Ruby. Por defecto hace cumplir varias de las directrices que de la Guía de Estilo Ruby de la comunidad. Se pueden configurar varios aspectos de su comportamiento a través de opciones de configuración.

La instalación es sencilla en la línea de comandos:

$ gem install rubocop

Y ya nos queda disponible. También podemos agregar la gema a nuestro Gemfile:

gem 'rubocop', require: false

Si ejecutamos rubocop desde la línea de comandos, va a revisar todo los archivos de código Ruby del directorio desde donde lo ejecutemos. También le podemos pasar como parámetro uno o más archivos específicos para revisar. Con rubocop -h vemos las opciones entre las cuales están -R para proyectos Rails, especificar un archivo de configuración en particular, un formato para la salida y más.

RuboCop Complexity

En estos días salió la versión 0.34 de RuboCop con correcciones, mejoras, nuevos "cops" (los chequeos que hace RuboCop) y una funcionalidad de cacheo. Esto hace que al volver a correr RuboCop sobre el mismo código el proceso sea mucho mas rápido. También ahora el proyecto cuenta con una campaña de crowdfunding para financiar su desarrollo. Si les gusta o usan RuboCop, pueden colaborar con el proyecto y ayudar a que se siga manteniendo desde este enlace.

Empecé a usar RuboCop por la línea de comando. Al crear código nuevo, antes de agregarlo a control de versiones, lo revisaba con RuboCob y corregía los atentados a la guía de estilo de Ruby. Pero desde hace un tiempo uso la integración con Emacs. RuboCop tiene su propio modo rubocop-emacs (creado y mantenido por el mismo autor de RuboCop) pero además flycheck (un modo de chequeo de sintaxis para Emacs) soporta RuboCop y lo usa por defecto cuando está disponible:

RuboCop Test

Como ven señala las líneas que tienen algún tipo de atentado a las guías de estilo, y en el minibuffer nos explica qué tenemos mal.

Además de Emacs, RuboCop tiene integración con Vim, Sublime, Atom, RubyMine y otros editores más. Cada proyecto puede tener sus propias convenciones de código, pero eso se podría especificar en un archivo de configuración de RuboCop para ese proyecto. Y tiene algunos chequeos que pueden ser discutibles (he tenido muchas discusiones de comillas simples vs. comillas dobles en Ruby), pero en general creo que es buena práctica usarlo (a criterio, como todo).

No hay comentarios en este post

Feed de comentarios

Dejar un comentario

Toasty!