カッパでも分かるiOSアプリゲーム開発

カッパがひたすらゲーム制作に関することを書くブログです。Railsに関するTipsもたまにまとめてます。

rubocopによるコードの自動チェックに対応してみた

スポンサードリンク

Ruby on Rails 5アプリケーションプログラミング
f:id:InvokeTwoA:20151023183618p:plain「新プロジェクトではコードの自動チェックが熱い!」
f:id:InvokeTwoA:20151215172640p:plain「果たしてそこは楽園なのか、CIに支配されたディストピアなのか!?」
f:id:InvokeTwoA:20151023183618p:plain「コードをNTRされたー!とか叫びだす事にならない事を祈るね」

コードのチェックは rubocop

  • コードを自動チェックしてくれる gem
  • gem 名が格好いい
  • 使い方が超簡単。導入してコマンドの引数にファイル名を指定するだけ
  • .rubocop.yml を編集する事でチェックする項目をカスタマイズできる点も便利


f:id:InvokeTwoA:20151023183618p:plain「よーし、試しにカッパの徹底攻略wikiのソースコードをチェックしてみるかー!」
f:id:InvokeTwoA:20151215172640p:plain(あっ……)
f:id:InvokeTwoA:20151023183618p:plain「…… terminal がダメ出しで埋まってしまった」

  • 参考までにカッパの徹底攻略 wiki で出たダメ出し

Class has too many lines.

このクラスの行数多すぎ
  • 別にファットなクラスでも良いじゃないか
  • ポッチャリ系はNGなんて呟いたら炎上待った無し

Missing top-level class documentation comment

クラスの内容を説明したコメントを TOP には書け!
  • 気持ちは分からないでもないけど、ルールで縛るほどでもない

Use the new Ruby 1.9 hash syntax.

Ruby 1.9 から導入された Hash 文法を使用してください
  • 要は「ハッシュロケット使うな」系という事
  • 超同意
  • でも未だにハイフンとかあると混同する事になって凄く気持ち悪いのをなんとかしてくれぇ

Line is too long. [138/80]

1行が長すぎます
  • 確かに1行が長すぎるのは良くないね
  • ロン毛が許されるのはイケメンだけ

Use only ascii symbols in comments

コメントには ascii シンボル以外使わないで
  • そんなご殺生な、としか言えない
  • スカした英語コメントをしたいなら留学でもしてな!

Assignment Branch Condition size for hoge is too high

f:id:InvokeTwoA:20151023183618p:plain「で、でたー! ABCチェックだー」
f:id:InvokeTwoA:20151215172640p:plain「Assignment(変数への代入), Branch(メソッド呼び出し), Condition(条件文) のABC3項目から算出したポイントが一定以上になってないかの確認ですな」
f:id:InvokeTwoA:20151023183618p:plain「なるほど!(と言いつつ毎回さっぱり分からん)」

  • 一応ABC対策のリンクを貼っておく

http://qiita.com/mtsuge/items/e56015c93ce1ae8afd63

Cyclomatic complexity for hoge is too high

Cyclomatic complexity (循環的複雑度)が高すぎる
(ここ複雑すぎるよ! ってこと)

f:id:InvokeTwoA:20151023183618p:plain「シンプル・イズ・ベスト、という事か」
f:id:InvokeTwoA:20151215172640p:plain「スカした言い方しやがって! とか思わずに直しましょう」
f:id:InvokeTwoA:20151023183618p:plain「ここのコード、循環的複雑度が高すぎますね(ドヤァ)  こんな人見た事ない」

Perceived complexity for hoge is too high

f:id:InvokeTwoA:20151023183618p:plain「もう hoge メソッドがダメダメな事は分かったから放っておいてよ……」
f:id:InvokeTwoA:20151215172640p:plain「一つのダメ・メソッド(通称ダメソッド)があるとあらゆる理由をつけてフルボッコにしてくる。これが rubocop」

Do not use block comments

ブロックコメント(=begin で始まって =end で終わる奴)を使うな

f:id:InvokeTwoA:20151023183618p:plain「ブロックコメントを全否定とは」
f:id:InvokeTwoA:20151215172640p:plain「時代、と言う奴でしょうかね」
f:id:InvokeTwoA:20151023183618p:plain「rubocop のソースコードに本当にブロックコメントが無いかも確認して見たいものだ」

Align the operands of an expression in an assignment spanning multiple lines

複数行で書かないで!
  • そりゃそうだ
  • でも変数名が発狂するほど長かった場合は仕方ない気もしないでも無い

Avoid using {...} for multi-line blocks

複数行のブロックに対しては { } を使うのは避けましょう
  • do end を使えって事?

Space between { and | missing.

 { や | の後にスペースが無いよ!
  • あった方が見やすいよね
  • こう言う機械的なチェックを自動でしてくれるのはありがたい

Unnecessary spacing detected

不必要なスペースがあるぞ!

f:id:InvokeTwoA:20151023183618p:plain「……気分でスペースを空けたりとかはダメなのかな」
f:id:InvokeTwoA:20151215172640p:plain「上の行となんかを揃えたくてスペースを……とか言うケースがありそうな気もしないでも無いです」

総評

f:id:InvokeTwoA:20151023183618p:plain「やりすぎなチェック部分に関しては .rubocop.yml をいじって on/off や域値の変更をできるので使いやすい気もする」
f:id:InvokeTwoA:20151215172640p:plain「細かい事を気にする男はモテないぜ、と言われればそのままアンインストールされそうなライブラリでした」

最後に、かっぱクエストの進捗

今度の土日こそがかっぱクエストの開発佳境だ!

f:id:InvokeTwoA:20151023183618p:plain「さーて、そろそろ『かっぱクエスト』の開発をするかー!」
f:id:InvokeTwoA:20151215172640p:plain「かっぱさん。残念ながらもう土日は終了しているのです」
f:id:InvokeTwoA:20151023183618p:plain「えっ 」
f:id:InvokeTwoA:20151215172640p:plain「気がつけば人は大人になり、そして骨となるんですな」