Simian, aka Similarity Analyser est un outil des plus merveilleux. Il analysera vos lignes de code et détectera des potentielles répétitions.
A cela, nous couplons un gem de Jean-Michel Garnier (qui était présent au RubyCamp Lyonnais), Don't Repeat Yourself. Et à partir de maintenant, nous pouvons tester que nos applications Ruby et Rails sont DRY !! J'ai testé et ça fonctionne plutôt du tonnerre.
Installation du plugin :
Si vous n'avez pas encore le catalogue de gems de GitHub, ajoutez-le :
gem sources -a http://gems.github.com
Puis installez le gem.
gem install dmathieu-dont_repeat_yourself
Vous constaterez que je vous fait installer non pas la version de Jean-Michel, mais la mienne. Les explications viennent plus bas.
Une fois que cela est fait, vous pouvez utiliser le plugin de trois manières possibles.
Dans vos tests
Avec Test::Unit
Créez le test suivant :test "we don't repeat ourself" do
assert_dry(rails_application.with_netbeans_reporting)
end
Avec RSpec
Créez le test suivant :describe "Dupplicate lines Report: Don't Repeat Yourself" do
it { ruby_project(File.dirname(__FILE__) + '/../').
with_threshold_of_duplicate_lines(4).
with_netbeans_reporting.
should follow_the_dry_principle }
end
En ligne de commande
Tapez la commande suivantedry-report
Ces rapports DRY sont même encapsulables dans Netbeans ou Textmate. Mais je n'ai pas encore penché mon nez là-dedans. Donc je vous laisse regarder ;)
Vous constaterez par ailleurs que je vous invite à installer le fork que j'ai fait du gem et non pas la version originelle. La raison à cela est que en Rails 2.3, Test::Unit deviens ActiveSupport::TestCase. Cette modification n'a pas encore été appliquée au gem originel. Mais je suis persuadé que cela ne saurait tarder ;)



Commentaires