engineers_blogこんにちは、Railsエンジニアの鈴木(信)です。先日31歳になったんですが、やはり30歳を超えたあたりから衰えたというか、何か体に変化があったように思います。自身の健康はもちろんですが、コードの健康(品質)のことも気になる年頃になりました。そこで今回は弊社で利用しているコード解析ツールをご紹介します。セキュリティbrakemanは、簡単なXSSやインジェクション系の脆弱性を検出してくれるgemです。Pluginを使って、継続的にモニタリング、修正しています。テストカバレッジsimplecovはカバレッジ計測ツールです。RSpecなどのテストツールと組み合わせて、テストの網羅性を計測することができます。rspeccoverage/rcov/index.htmlにカバレッジレポートが生成されます。コーディングスタイルrubocopはコーディングスタイルの違反を検出してくれるだけでなく、長すぎるメソッドや複雑すぎるロジックを検出して、コードの保守性を維持してくれるスグレモノです。最初から導入していれば良いですが、途中から使いはじめると大量の警告が出てしまうと思います。インデントやスペースの過不足など、修正方法が自動的に決まるものについては、自動修正が効きます。検出されたスタイル違反からrubocop-todo.ymlを自動生成。diffに対してだけrubocopを適用する、rubocop-gitというgemもあります。途中からの導入はこちらの方が使いやすいかもしれません。9個の事という記事でもご紹介しました。hookを利用して、余計なスペースや消し忘れのデバッグコードをコミットしてしまうのを防いでくれるgemです。デフォルトでは無効ですが、rubocopを実行することもできます。パフォーマンスbulletはN+1問題(ループでSQLが大量に実行される問題)を検出するgemです。loadingしたけど、実際にはassociationが使われていないというのも検出してくれます。警告が発生したときの出力は、エラーを発生させたり、JavaScriptでalertを発生させたり、ログに出力したりと色々オプションがあります。使い方ログに出力する例です。endendプログラマの健康そもそもですが、コードを書く人間が健康でないと、健康なコードを書くことすらままなりません。最近ではオライリー社からヘルシープログラマという本が発売予定であったり、Googleでの健康に対する取り組みが紹介されたりと、IT業界の健康への意識が高まっています。プログラミングという仕事は夢中になっているとつい長時間労働になりがちですが、まず健康であることが、健康なコードを書くための第一歩、ということですね。