38 votes

Où puis-je trouver un outil de lint développé activement pour Ruby ?

La plupart du code que j'écris est en Ruby, et de temps en temps, je fais une faute de frappe (qui n'est corrigée qu'après un certain temps). Cela peut être pénible lorsque vos scripts effectuent des tâches de longue haleine et que vous y revenez pour découvrir que vous avez fait une faute de frappe.

Existe-t-il un outil de test pour Ruby activement développé qui pourrait m'aider à surmonter ce problème ? Serait-il possible de l'utiliser sur un système qui travaille avec de nombreux fichiers sources (dont certains sont chargés dynamiquement) ?

EDIT : Prenez cet extrait comme exemple :

a = 20
b = 30
puts c

EDIT : pour gagner la prime, montrez-moi un outil qui détectera la variable c comme non créée/indéfinie. J'aimerais quelque chose qui me prévienne que c n'existe pas.

24voto

Avdi Points 13086
  • ruby -c myfile.rb vérifiera que la syntaxe Ruby est correcte.
  • Reek vérifie le code Ruby pour les odeurs de code communes.
  • Roodi vérifie le code Ruby pour les problèmes courants de conception orientée objet.
  • Flog peut vous avertir d'un code inhabituellement complexe.

[Plug] Si votre projet est dans un dépôt Github public, Étrier peut exécuter ces trois derniers outils et d'autres sur votre code à chaque fois que vous le livrez. (Disclaimer : Je travaille sur Caliper)

13voto

akuhn Points 12241

Vous pourriez donner Diamondback Ruby un essai. Il effectue un contrôle statique du type de code Ruby, et vous reprochera donc d'utiliser une variable indéfinie.

Bien que DRuby soit un projet de recherche en cours, il fonctionne déjà très bien pour les petits scripts Ruby autonomes. Actuellement, il est incapable d'analyser une grande partie de la bibliothèque standard de Ruby "prête à l'emploi". Actuellement, ils travaillent à la saisie de Ruby on Rails (voir leurs les documents les plus récents ).

11voto

btelles Points 2868

RubyMine ( http://www.jetbrains.com/ruby ) fait l'affaire :

alt text

Aucune des options ci-dessous ne permet d'effectuer toutes les analyses que RubyMine effectue.

  • Pack NetBeans Ruby
  • Aptana RadRails
  • gVIM (avec le plugin syntastic de scrooloose)

Chacun d'entre eux a la capacité d'identifier les erreurs de syntaxe telles que le mauvais nombre de parenthèses, le trop grand nombre de défs, de fins, d'accolades, etc. Mais aucun n'identifiera les appels de méthode invalides comme le fait RubyMine.

Voici pourquoi : c'est difficile.

Comme Ruby est extrêmement dynamique (et que des méthodes comme 'c' pourraient facilement être générées à la volée), tout éditeur qui tente d'identifier des variables/méthodes inexistantes devrait avoir une grande partie de l'environnement entier chargé et de multiples chemins de programme constamment testés afin d'obtenir des résultats de 'validité' précis. C'est beaucoup plus difficile qu'en Java où presque toute la programmation est statique (du moins, c'était le cas quand j'ai laissé tomber ce chapeau).

Cette capacité à générer facilement des méthodes à la volée est l'une des raisons pour lesquelles la communauté tient les tests en si haute estime. Je vous recommande vraiment d'essayer testing vous aussi.

7voto

Bozhidar Batsov Points 23298

Jetez un coup d'œil à RuboCop . C'est un vérificateur de style de code Ruby basé sur le Guide de style Ruby . Il est maintenu assez activement et supporte toutes les principales implémentations de Ruby. Il fonctionne bien avec Ruby 1.9 et 2.0 et s'intègre parfaitement à Emacs.

5voto

DigitalRoss Points 80400

Oui. Test::Unit

Je sais que vous le savez déjà et que, dans un certain sens, cette réponse n'est pas utile, mais vous soulevez la conséquence négative du typage des canards, à savoir qu'il n'y a (pour le moment) aucun moyen d'éviter d'écrire plus de tests que ce dont Java a besoin.

Donc, pour mémoire, voir Test::Unit dans la bibliothèque standard de Ruby ou dans l'un des autres cadres de test.

Disposer de tests unitaires que l'on peut exécuter et réexécuter est le meilleur moyen de détecter les erreurs, et il en faut davantage (les tests, pas les erreurs :-) dans les langages dynamiques comme Ruby...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X