概要
警告をコメントで無効化する方法
詳細
警告をコメントで無効化する方法について。
基本的には .rubocop.yml の設定に応じて規約をチェックするが、
一部だけ例外的に警告対象外にしたいケースがあると思います。
例えば通常の処理は1行80文字でチェックしたいが、
長文のリテラルを定数化する場合など、どうしても80文字を超えてしまうような
場合だけ警告対象外にしたい、など。
指定範囲の全ての警告を無効化したい場合
# rubocop:disable all [...] # rubocop:enable all
指定範囲の特定の警告を無効化したい場合
# rubocop:disable Style/LineLength, Style/StringLiterals [...] # rubocop:enable Style/LineLength, Style/StringLiterals
単一行の全ての警告を無効化したい場合
for x in (0..19) # rubocop:disable all
単一行の特定の警告を無効化したい場合
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