Rails

【Rails】Rubocopの自動修正コマンド「rubocop -a」と「rubocop -A」の違い

Rails

 

今回はRubocopの自動修正コマンドである「rubocop -a」と「rubocop -A」コマンドの違いについて解説したいと思います。大文字(A)か小文字(a)であるかで修正の意味合いが異なるので、きちんと理解した上で使いこなせるようにしましょう。

-aと-Aは、2020/7/7にリリースされたRuboCop 0.87からの新機能になります。

rubocop -aとrubocop -Aの違い

rubocop -aコマンドとrubocop -Aコマンドの違いは、unsafeを含む全てのCopを自動修正するかどうかの違いになります。

rubocop -aコマンドはsafeとマークされているCopのみを自動修正し、rubocop -AコマンドはunsafeのCopも含めた全てのCopを自動修正してくれるものになります。

参考: rubocop -a と rubocop -A オプション

 

簡単に言うと、rubocop -aは安全に自動修正してくれるコマンドであり、その一方でrubocop -Aは挙動が変わってしまう可能性を含んだ自動修正コマンドになります。

自動修正コマンドの使い方

ここまででrubocop -aは安全な自動修正、rubocop -Aは危険な自動修正であると認識された方もいるかと思います。

しかし、個人的には「rubocop -A」コマンドしか使用しなくていいと思っています。

ではここからはRubocopの自動修正の流れについて見ていきましょう。

コード修正からRubocop修正までの流れを簡単にまとめると以下のようになります。

  1. コードの修正
  2. 修正されたコードをコミット
  3. rubocop -Aで自動修正
  4. git diffコマンドで自動修正されたコードを確認
  5. 問題なければrubocopの修正をコミット(問題があればgit resetで巻き戻し、該当箇所を手動で修正)

 

コードの修正が行われた場合、まずはそれらの修正をコミットします。

続いて、今回の本題であるrubocop -Aコマンドを入力し自動修正を行います。

その後は、自動修正されたコードに問題がないかをgit diffコマンドで確認しましょう。この確認を忘れてしまうと、どこがRubocopで修正されたのかが分からなくなってしまいます。

git diffコマンドで修正を確認し問題がなければそのままコミット、問題がある修正が行われていた場合はgit resetコマンドで修正を巻き戻し、その該当箇所を手動で修正します。

これがコード修正からRubocop修正までの流れになります。

まとめ

  • rubocop -aはsafeとマークされているCopのみを自動修正するコマンド
  • rubocop -AはunsafeのCopも含めた全てのCopを自動修正するコマンド
  • 基本的にはrubocop -Aコマンドを使用する

参考

 

 

今回はRubocopの自動修正コマンドである「rubocop -a」と「rubocop -A」コマンドの違いについて解説しました。基本的には「rubocop -A」コマンドで問題ありませんが、意味をきちんと理解した上で使いこなせるようにしておきましょう。