Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Railsで便利なコード静的解析Gem rubycritic (所要時間3分)

More than 3 years have passed since last update.

GYAOの窓際エンジニア 玉利です。
最近は日本のPJが大変で、ベトナム側もJavascript絡みの問題が出たりして無事死亡しております。

今の時期、日本がくっそ暑くなるタイミングでベトナムに行きたいところです。日本の夏はベトナムより暑くてインド並です(知人談) この時期のホーチミンは、太陽が北にあって(北回帰線の南側にあります)、風が涼しくてものすごく過ごしやすいんです。そして海鮮とビールをガツンと。

スクリーンショット_2016_07_12_9_52.png

さて、いままでいろいろ品質管理の仕組みを頑張ってきました。ベトナムにかぎらずオフショアすると仕様を決めるのが精一杯で、QAを日本でやったらコストで足が出るし、QAを現地スタッフにお願いしてもザルなのは目に見えてます。労働集約型産業だったら駐在出す理由もあるのですが、知識集約だと日本で優秀な人間を取ったほうが結果安い、ということになりかねません。

今日紹介するのは、あまり日本ではメジャーじゃないrubycriticです。同様のものにrubocopがあります。海外記事では比較して語られていましたが、私は併用するべき有用なgemだと思っています。

https://github.com/whitesmith/rubycritic

特に悪さをすることも無さそうなので、さくっと入れてあげましょう。所要時間3分です。

Gemfile

group :development do
  gem "rubycritic", :require => false
end

bundle installしたら、コマンドラインからrubucriticを起動します。

$ ruby critic

Gemfile_-_Che-GYAO_-____RubymineProjects_Che-GYAO_.png

実行が終わると、ブラウザが立ち上がって結果が出力されます。

RubyCritic.png

Churn(チャーン)は「激しい動き」 Complexityは複雑度です。
だいたい、品質は揃ってるみたいですが、飛んでるデータが有りますね。

スクリーンショット 2016-07-12 9.33.25.png

ポイントにマウスカーソルをあてると統計タブがでます。

では、Codeのタブを叩いてみましょう。

RubyCritic.png

各コントローラー毎の複雑度、重複、匂い(癖)がでます。画面サンプルのFってのはやばそうですね。

RubyCritic.png

あー、コピペしたコードを引っ掛けられてしまいました。どっかのヘルパーに移動しないといけません。

ベトナム人に、ここおかしいよって教えてあげるのは骨が折れる作業なので、こういうツールで検出してから自分たちで直させるのがベストな手法だと思ってます。

btamari-gy
GYAOという会社で窓際エンジニアをしています。主に海外オフショアのマネジメントや社内ツールの開発など。 以前は日経IT Proなどに連載を持たせて戴いてました。 記事はすべて個人の見解であり、会社は無関係ということで自由に発言させていだいております。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away