-
-
Save linyows/ace586b118f87291ed3e to your computer and use it in GitHub Desktop.
僕の使っている .rubocop.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# target_version: | |
# rubocop v0.34.2 | |
# 自動生成されるものはチェック対象から除外する | |
AllCops: | |
Exclude: | |
- "vendor/**/*" # rubocop config/default.yml | |
- "db/schema.rb" | |
DisplayCopNames: true | |
##################### Style ################################## | |
# redirect_to xxx and return のイディオムを維持したい | |
Style/AndOr: | |
EnforcedStyle: conditionals | |
# 日本語のコメントを許可する | |
Style/AsciiComments: | |
Enabled: false | |
# do .. end から更にメソッドチェーンすると見づらいので | |
# auto-correct せず、自分で修正する | |
# spec 内は見た目が綺麗になるので許可 | |
Style/BlockDelimiters: | |
AutoCorrect: false | |
Exclude: | |
- "spec/**/*" | |
# option 等、明示的にハッシュにした方が分かりやすい場合もある | |
Style/BracesAroundHashParameters: | |
Enabled: false | |
# Style/CollectionMethods 自体は無効になっているのだが、 | |
# https://github.com/bbatsov/rubocop/issues/1084 | |
# https://github.com/bbatsov/rubocop/issues/1334 | |
# Performance/Detect がこの設定値を見るので PreferredMethods だけ変更しておく。 | |
# | |
# デフォルト値から変えたのは | |
# find -> detect | |
# ActiveRecord の find と間違えやすいため | |
# reduce -> inject | |
# detect, reject, select と並べたときに韻を踏んでいるため。 | |
# collect -> map を維持しているのは文字数が圧倒的に少ないため。 | |
Style/CollectionMethods: | |
PreferredMethods: | |
detect: "detect" | |
find: "detect" | |
inject: "inject" | |
reduce: "inject" | |
# Hash#has_key? は許可したい | |
Style/DeprecatedHashMethods: | |
Enabled: false | |
# ドキュメントの無い public class を許可する | |
Style/Documentation: | |
Enabled: false | |
# !! のイディオムは積極的に使う | |
Style/DoubleNegation: | |
Enabled: false | |
# メソッドチェーンの改行は末尾に . を入れる | |
# REPL に貼り付けた際の暴発を防ぐため | |
Style/DotPosition: | |
EnforcedStyle: trailing | |
# 明示的に else で nil を返すのは分かりやすいので許可する | |
Style/EmptyElse: | |
EnforcedStyle: empty | |
# 桁揃えが綺麗にならないことが多いので migration は除外 | |
Style/ExtraSpacing: | |
Exclude: | |
- "db/migrate/*.rb" | |
# いずれかに揃えるのならば `sprintf` や `format` より String#% が好きです | |
Style/FormatString: | |
EnforcedStyle: percent | |
# if 文の中に 3 行程度のブロックを書くぐらいは許容した方が現実的 | |
Style/GuardClause: | |
MinBodyLength: 5 | |
# rake タスクの順序の hash は rocket を許可する | |
Style/HashSyntax: | |
Exclude: | |
- "**/*.rake" | |
- "Rakefile" | |
# 条件式の方を意識させたい場合には後置の if/unless を使わない方が分かりやすい | |
Style/IfUnlessModifier: | |
Enabled: false | |
# ({ と hash を開始した場合に ( の位置にインデントさせる | |
# そもそも {} が必要ない可能性が高いが Style/BracesAroundHashParameters はチェックしないことにしたので | |
Style/IndentHash: | |
EnforcedStyle: consistent | |
# private/protected は一段深くインデントする | |
Style/IndentationConsistency: | |
EnforcedStyle: rails | |
# scope 等は複数行でも lambda ではなく ->{} で揃えた方が見た目が綺麗 | |
Style/Lambda: | |
Enabled: false | |
# 1_000_000 と区切り文字が 2 個以上必要になる場合のみ _ 区切りを必須にする | |
Style/NumericLiterals: | |
MinDigits: 7 | |
# 正規表現にマッチさせた時の特殊変数の置き換えは Regex.last_match ではなく | |
# 名前付きキャプチャを使って参照したいので auto-correct しない | |
Style/PerlBackrefs: | |
AutoCorrect: false | |
# has_ から始まるメソッドは許可する | |
Style/PredicateName: | |
NamePrefixBlacklist: | |
- "is_" | |
- "have_" | |
NamePrefix: | |
- "is_" | |
- "have_" | |
# 特に model 内において、ローカル変数とメソッド呼び出しの区別をつけた方が分かりやすい場合が多い | |
Style/RedundantSelf: | |
Enabled: false | |
# 受け取り側で multiple assignment しろというのを明示 | |
Style/RedundantReturn: | |
AllowMultipleReturnValues: true | |
# spec 内は見た目が綺麗になるので許可 | |
Style/Semicolon: | |
Exclude: | |
- "spec/**/*" | |
# fail と使い分ける必要ナシ | |
Style/SignalException: | |
EnforcedStyle: only_raise | |
# `||` も align に使うことがあるので追加する | |
Style/SpaceAroundOperators: | |
MultiSpaceAllowedForOperators: | |
- "=" | |
- "=>" | |
- "||" | |
# * 式展開したい場合に書き換えるのが面倒 | |
# * 文章ではダブルクォートよりもシングルクォートの方が頻出する | |
# ことから EnforcedStyle: double_quotes 推奨 | |
Style/StringLiterals: | |
EnforcedStyle: double_quotes | |
# auto-correct 時に Style/StringLiterals とカニバって無限ループになる (v0.28.0) | |
Style/StringLiteralsInInterpolation: | |
Enabled: false | |
# いくらなんでも inject { |a, e| } は短すぎるので分かりやすい名前をつけたい | |
Style/SingleLineBlockParams: | |
Enabled: false | |
# * migrate | |
# * jbuilder | |
# * model の association | |
# * controller の callback | |
# 辺りの桁揃えで引っかかるので全体的にチェックしない | |
Style/SingleSpaceBeforeFirstArg: | |
Enabled: false | |
# 複数行の場合はケツカンマを入れる | |
Style/TrailingComma: | |
EnforcedStyleForMultiline: comma | |
##################### Lint ################################## | |
# * 同名のメソッドがある場合にローカル変数に `_` を付ける | |
# * 一時変数として `_` を付ける | |
# というテクニックは頻出する | |
Lint/UnderscorePrefixedVariableName: | |
Enabled: false | |
# 子クラスで実装させるつもりのメソッドで引っかかるので | |
Lint/UnusedMethodArgument: | |
Enabled: false | |
##################### Metrics ################################## | |
# 30 まではギリギリ許せる範囲だった | |
Metrics/AbcSize: | |
Max: 30 | |
# 6 は強すぎるので緩める | |
Metrics/CyclomaticComplexity: | |
Max: 10 | |
# * 警告 120文字 | |
# * 禁止 160文字 | |
# のイメージ | |
Metrics/LineLength: | |
Max: 160 | |
Exclude: | |
- "db/migrate/*.rb" | |
# 20 行超えるのは migration ファイル以外滅多に無い | |
Metrics/MethodLength: | |
Max: 20 | |
Exclude: | |
- "db/migrate/*.rb" | |
# 分岐の数。ガード句を多用しているとデフォルト 7 だと厳しい | |
Metrics/PerceivedComplexity: | |
Max: 8 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment