137
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

RuboCopの警告をコメントで無効化する方法

RuboCopの警告をコメントで無効化する方法

概要

RuboCopの警告をコメントで無効化する方法

詳細

基本的には .rubocop.yml の設定に応じて規約をチェックするが、
一部だけ例外的に警告対象外にしたいケースがあると思います。

例えば通常の処理は1行80文字でチェックしたいが、
長文のリテラルを定数化する場合など、どうしても80文字を超えてしまうような
場合だけ警告対象外にしたい、など。

指定範囲の全ての警告を無効化したい場合

# rubocop:disable all
[...]
# rubocop:enable all

指定範囲の特定の警告を無効化したい場合

Style/LineLength, Style/StringLiteralsの部分は無効化する警告です。

# rubocop:disable Style/LineLength, Style/StringLiterals
[...]
# rubocop:enable Style/LineLength, Style/StringLiterals

単一行の全ての警告を無効化したい場合

for x in (0..19) # rubocop:disable all

単一行の特定の警告を無効化したい場合

Style/AvoidForの部分は無効化する警告です。

for x in (0..19) # rubocop:disable Style/AvoidFor

サンプル コメント無効化前

# Hoge
class Hoge
  def A
    b=1+2
    c=2*3
    d=3/4
    "hoge"
  end
end

rubocop実行

Inspecting 1 file
W

Offenses:

before.rb:3:7: C: Use snake_case for methods.
  def A
      ^
before.rb:4:5: W: Useless assignment to variable - a.
    a=1+2
    ^
before.rb:4:6: C: Surrounding space missing for operator '='.
    a=1+2
     ^
before.rb:4:8: C: Surrounding space missing for operator '+'.
    a=1+2
       ^
before.rb:5:5: W: Useless assignment to variable - b.
    b=1-2
    ^
before.rb:5:6: C: Surrounding space missing for operator '='.
    b=1-2
     ^
before.rb:5:8: C: Surrounding space missing for operator '-'.
    b=1-2
       ^
before.rb:6:5: W: Useless assignment to variable - c.
    c=2*3
    ^
before.rb:6:6: C: Surrounding space missing for operator '='.
    c=2*3
     ^
before.rb:6:8: C: Surrounding space missing for operator '*'.
    c=2*3
       ^
before.rb:7:5: W: Useless assignment to variable - d.
    d=3/4
    ^
before.rb:7:6: C: Surrounding space missing for operator '='.
    d=3/4
     ^
before.rb:7:8: C: Surrounding space missing for operator '/'.
    d=3/4
       ^
before.rb:8:5: C: Prefer single-quoted strings when you don't need string interpolation or special symbols.
    "hoge"
    ^^^^^^

1 file inspected, 14 offenses detected

サンプル コメント無効化後

下記の設定を加えました。

  • Aメソッドの1行警告コメント無視
  • a=1+2,b=1-2 の範囲の「SpaceAroundOperators」警告のみ無効化しました
  • c=2*3,d=3/4 の範囲のすべての警告を無効化しました

※"hoge"の行は全ての警告が有効です

この設定により、1+2,b=1-2 の範囲の「SpaceAroundOperators」以外の警告と
"hoge"の行の警告のみが出力されることを確認します。

# Hoge
class Hoge
  def A # rubocop:disable MethodName
    # rubocop:disable SpaceAroundOperators
    a=1+2
    b=1-2
    # rubocop:enable SpaceAroundOperators
    # rubocop:disable all
    c=2*3
    d=3/4
    # rubocop:enable all
    "hoge"
  end
end

rubocop実行

Inspecting 1 file
W

Offenses:

after.rb:5:5: W: Useless assignment to variable - a.
    a=1+2
    ^
after.rb:6:5: W: Useless assignment to variable - b.
    b=1-2
    ^
after.rb:12:5: C: Prefer single-quoted strings when you don't need string interpolation or special symbols.
    "hoge"
    ^^^^^^

1 file inspected, 3 offenses detected
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
137
Help us understand the problem. What are the problem?