Shinjuku.rb #42でRubocopについて話した
Shinjuku.rb #42に行ってきました。
http://shinjukurb.connpass.com/event/42245/
今回はコード分析・解析系のgemがテーマで、私はRubocopについて発表しました。
発表内容
Shinjukurb 42 from ota42y
Rubocopはソースコードをパーサgemを使ってASTに変換し、ちゃんとどういう構造なのかを見ていて凄くちゃんと解析していたので凄いなーと思う反面、 自分でルールを追加するのもの凄く大変そうでした。
また、こういったコードの整形ツールは自転車小屋の議論になって導入するの凄く大変だよね…という闇の深いディスカッションが行われました… やはり何処も苦労するところは同じようです…(´・_・`)
その他
リファクタリングを支援してくれるgemが紹介されていましたが、 基本的に既存部分を切り出す→新しいロジックと同時に実行して実行結果をチェック→結果をDBとかに保存する、 といった手順を踏んでおり、どれもやることは変わらず、rubyのリファクタリング手法としては一般的な方法なのかな…?と思いました。 (稀にしか起きない問題や、副作用をどう消すかといった部分は別途考える必要ありそう)
Rubocopがやってくれる一般的なものではなく、もっと自分たち向けのチェック項目が欲しいけど、
ルール追加がめちゃくちゃ大変だなーと思っていたら、凄くいいgemの発表がありました。
soutaro/querly: Query Method Calls from Ruby Programs
メソッドが呼ばれているかをちゃんと解析してチェックできるので、
ヤバそうなメソッドや使い方が怪しいやつとかを抽出できるらしく、凄く良さそうでした。