step_definitionを一覧するためのツールを作り始めました

デブサミなんかで、「step_definitionを育てよう!!」などと言ってましたが、実際のプロジェクトでやるのはなかなか難しい。ということで、何かしらサポートできないか考えています。

で、まだコンセプトレベルなのですが、step_definitionを一覧するツールを作ってみました。

http://github.com/moro/tsuridana

step_definitionをパースするためのripperの関係で、ruby1.9系でのみ動作します(instance_evalで取ってくる作戦も考えたのですが、そこまで評価したいわけでないので微妙)。
動作イメージはこんな感じです。

$ ruby19 bin/tsurinada ~/Documents/a_project/features/step_definitions/web_steps_ja.rb

Given : ^"([^\"]*)"ページを表示している$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:11)
When : ^"([^\"]*)"ページを表示する$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:15)
When : ^"([^\"]*)"ボタンをクリックする$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:19)
When : ^"([^\"]*)"リンクをクリックする$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:23)
When : ^"([^\"]*)"の"([^\"]*)"リンクをクリックする$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:27)
When : ^"([^\"]*)"に"([^\"]*)"と入力する$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:31)
When : ^以下の項目を入力する:$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:35)
When : ^"([^\"]*)"から"([^\"]*)"を選択する$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:39)
When : ^日時として"([^\"]*)"を選択する$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:43)
When : ^"([^\"]*)"の日時として"([^\"]*)"を選択する$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:47)
When : ^時間として"([^\"]*)"を選択する$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:51)
When : ^"([^\"]*)"の時間として"([^\"]*)"を選択する$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:55)
When : ^日付として"([^\"]*)"を選択する$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:59)
When : ^"([^\"]*)"の日付として"([^\"]*)"を選択する$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:63)
When : ^"([^\"]*)"をチェックする$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:67)
When : ^"([^\"]*)"のチェックを外す$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:71)
When : ^"([^\"]*)"を選択する$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:75)
When : ^"([^\"]*)"としてファイル"([^\"]*)"を選択する$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:79)
Then : ^"([^\"]*)"と表示されていること$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:83)
Then : ^"([^\"]*)"に"([^\"]*)"と表示されていること$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:87)
Then : ^\/([^\/]*)\/と表示されていること$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:91)
Then : ^"([^\"]*)"に\/([^\/]*)\/と表示されていること$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:95)
Then : ^"([^\"]*)"と表示されていないこと$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:99)
Then : ^"([^\"]*)"に"([^\"]*)"と表示されていないこと$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:103)
Then : ^\/([^\/]*)\/と表示されていないこと$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:107)
Then : ^"([^\"]*)"に\/([^\/]*)\/と表示されていないこと$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:111)
Then : ^入力項目"([^\"]*)"に"([^\"]*)"と表示されていること$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:115)
Then : ^入力項目"([^\"]*)"に"([^\"]*)"と表示されていないこと$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:119)
Then : ^"([^\"]*)"がチェックされていること$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:123)
Then : ^"([^\"]*)"がチェックされていないこと$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:127)
Then : ^"([^\"]*)"ページを表示していること$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:131)
Then : ^ページを表示する$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:136)
Then : ^画面を目視$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:137)
Then : ^デバッグ(?:のため)?$
  (/Users/moro/Documents/a_project/features/step_definitions/web_steps_ja.rb:140)

これに、チームメンバー同士でコメントをつけたいなぁ、と思ってます。