##静的解析ツールの種類
###Rubocop
一番使われてるっぽい静的解析ツール。ほぼ必須?
プロジェクトルートに.rubocop.yml
を作成して、細かい設定をしていく。
rubocopをグローバルインストールした場合には、プロジェクトルートでなくホームディレクトリに作成する?
###Brakeman
セキュリティ方面の解析に特化したもの。rubocopと組み合わせて使っている事例も見つかった。
コミット前にrubocopを走らせ、push前にbrakemanを走らせているとのこと。
ハッピーなチーム開発を実現するためにRubyの静的コード解析を自動化した話
###Ruby Critic
解析結果をブラウザ上で確認することができます。
コントローラー毎の複雑度、重複した記述なども指摘してくれる見たいです。
Rubocopと併用するのもアリ、的な記事が見つかりました。
Railsで便利なコード静的解析Gem rubycritic
Commit前に自動実行とかではなく、気になった時に定期的に実行するのが良さそう。
###Reek
間違いではないけど、なんとなく嫌な感じがする書き方を検出してくれるツール。
ネストが深すぎるとか、1つのメソッドに命令が多すぎるとか。
他のツールでも同じようなことできそうだし、設定もデフォルトだと使いにくいらしいから、わざわざ導入しなくても良さそうな気がしてる。使ったことないけど。
###Rails Best Practice
rails-bestpractices.comという、Railsのベストプラクティス集を集めたサイトで紹介されているルールに沿っているかどうかを判別してくれるツール。
結構良さそう。
##その他のツール
###over commit
Commit前やPush前などに静的解析ツールを走らせてくれる
走らせるツールやタイミングは.overcommit.yml
に記述する
##使い方
gemをインストールして、コマンドラインで実行するのが基本っぽい。
gem install rubocop
とするとグローバルインストールされて、Gemfileに書いてbundle install
するとそのプロジェクトだけにインストールされる。
.◯◯.yml
的なファイルをプロジェクトルートに作成して、細かい設定をする場合が多い。
##vscodeとの連携
settings.json
にゴニョゴニョ書いていくと、静的解析ツールとエディタをいい感じに連携できる?
ファイル保存時にrubocopが走ったり、.rubocop.yml
に書いてあるルールに従って、違反している記述に下線を引いたりしてくれると嬉しい。
##心構え
重要な点は、 解析ツールに合わせたコードを書くのでは無く、プロジェクトに必要とされるコードを素早く書く という事だと思います。ツールの結果に合わせてコードを曲げる(読みにくくしたり、リファクタリングの際にエンバグしたり)のは本末転倒と言えるでしょう。
by Sider Blog
##今後の方針など
基本的に1人で開発をしているので、自己流の変なクセをつけない為にも静的解析は大切だと思いました。
上記のツールをすべて使っている人はあまり多くないようで、最低限Rubocopだけは使い、あとは好みで1、2個のツールを組み合わせるパターンが多そうな印象でした。
Rubocop、Brakeman、Rails Best Practicesの3つの静的解析ツールをovercommitでコントロールする形から試してみようかと思います。
ファイルの保存前にRubocop、Commit前にRails Best Practicesを走らせ、Push前にBrakemanを走らせる感じかな。
どのツールもデフォルトの設定だとルールが厳しすぎるみたいなので、慣れるまで色々大変そうですが、うまく活用して行きたいです。