21
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ruby on Railsの静的解析について調べてわかったこと

Posted at

##静的解析ツールの種類
###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を走らせる感じかな。

どのツールもデフォルトの設定だとルールが厳しすぎるみたいなので、慣れるまで色々大変そうですが、うまく活用して行きたいです。

21
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?