読者です 読者をやめる 読者になる 読者になる

スパイスな人生

素敵な人生をおくるためのスパイスを届けていきたい、そんな想いで仕事をするspice lifeメンバーブログ

社全体で使うrubocop.ymlを定義して、TMIXとSTEERSに適用しました

f:id:yu_suke1994:20170221192927p:plain

おはようございます。Style/TrailingCommaInArgumentsconsistent_comma派のうなすけです。

さて、ちょっと前からspicelifeでは、TMIXとSTEERSの両方でrubocopを用いたLintのチェックをCIで実行するようになりました。

導入背景

そもそもrubocopによる文法の統一ですが、最近になってようやく導入したわけではありません。 STEERSでは2015年10月にrubocopをCI上で実行するPull Requestがmergeされています。

それ以降、STEERSでは継続してLintチェック、rubocop.yml更新が行われてきました。

さて一方のTMIXは、もともとが古いプロジェクトであること、関わってきた人数の数などもあり、コードの統一性は全くありませんし、そしてそのようなコードが大量に存在している状態です。 だからこそrubocopが力を発揮できる、ということが言えるでしょうが、しかしそれでもdefaultの設定でrubocopを実行すると、無限に警告が発生してしまい途方に暮れてしまうので、なかなか導入できずにいました。

しかし今後追加されるコードも無秩序でいいという理由はなく、導入しないという選択肢はないので、重い腰を上げてようやく導入に踏み切ったというのが、つい先日のことになります。

どのようなルールを使っているのか

会社全体で使用するルールを決め、基本的には各プロジェクトでそれに従うことにしています。そのルールは公開しており、どなたでも閲覧することができる状態になっています。

github.com

また、各プロジェクトにおいて、そぐわないルールを上書くこともしています。

TMIXでの運用

TMIXでは、先述のようにCIでrubocopを実行すると警告の嵐になってしまいます。rubocop_todo.ymlを生成してもいいのですが、放置されてしまうことも考えられます。

なので、CIではrubocopを実行せず、hound ciを導入し、新しく書かれるコードにのみrubocopでのチェックを行なっています。

https://houndci.com/

hound ciにした理由は人数とリポジトリ数で各CIサービスを比較した場合に高価すぎないためです。

雑感

これまで個人の好みによって文法の指摘がされていたのが、統一した規則ができ、かつbotによって指摘されるので、開発環境がよりよいものへと改善されたように思います。

複数人での開発においてこそ、rubocopは真価を発揮すると考えているので、みなさんも、Rubyによる共同開発をしていて、導入していないのならrubocopを導入することをオススメします。