LoginSignup
0
0

More than 3 years have passed since last update.

Ruby設定3 Rubocop

Posted at

RuboCop

PATH

(m・_・bp) 18:16 ~/Desktop/vsnote2.0/ruby/lib/rubybook_2 % which rubocop
/Users/uekiyoshihiro/.rbenv/shims/rubocop

RuboCopの導入

ruby-style-guide/README.ja.md at japanese · fortissimo1997/ruby-style-guide

# グローバルインストール
$ gem install rubocop

# インストール確認
$ rubocop -v

# インストール場所確認
$ which rubocop
/Users/myname/.rbenv/shims/rubocop

Rubocopの使用とオプション

$ rubocop

# 自動修正(--auto-correctでもOK)
$ rubocop -a

# 違反した項目をすべて無効とする設定ファイル(.rubocop_todo.yml)が生成される やらなくてもいいかな
$ rubocop --auto-gen-config

Railsの設定に対応する

Gemのインストール

$ cd <プロジェクトルート> #プロジェクトルートに移動
$ gem install rubocop-performance #2つをインストール
$ gem install rubocop-rails

設定ファイルを新しく作成する

$ cd <プロジェクトルート> #プロジェクトルートに移動
$ touch .rubocop.yml  #設定ファイルを新規作成
$ curl https://raw.githubusercontent.com/rails/rails/master/.rubocop.yml > .rubocop.yml #rails本家のコード規約をダウンロードして.rubocop.ymlファイルへ出力

.rubocop.ymlの中身

require:
  - rubocop-performance
  - rubocop-rails

AllCops:
  TargetRubyVersion: 2.5
  # RuboCop has a bunch of cops enabled by default. This setting tells RuboCop
  # to ignore them, so only the ones explicitly set in this file are enabled.
  DisabledByDefault: true
  Exclude:
    - '**/tmp/**/*'
    - '**/templates/**/*'
    - '**/vendor/**/*'
    - 'actionpack/lib/action_dispatch/journey/parser.rb'
    - 'railties/test/fixtures/tmp/**/*'
    - 'actionmailbox/test/dummy/**/*'
    - 'actiontext/test/dummy/**/*'
    - '**/node_modules/**/*'

Performance:
  Exclude:
    - '**/test/**/*'

# Prefer assert_not over assert !
Rails/AssertNot:
  Include:
    - '**/test/**/*'

# Prefer assert_not_x over refute_x
Rails/RefuteMethods:
  Include:
    - '**/test/**/*'

Rails/IndexBy:
  Enabled: true

Rails/IndexWith:
  Enabled: true

# Prefer &&/|| over and/or.
Style/AndOr:
  Enabled: true

# Align `when` with `case`.
Layout/CaseIndentation:
  Enabled: true

Layout/ClosingHeredocIndentation:
  Enabled: true

# Align comments with method definitions.
Layout/CommentIndentation:
  Enabled: true

Layout/ElseAlignment:
  Enabled: true

# Align `end` with the matching keyword or starting expression except for
# assignments, where it should be aligned with the LHS.
Layout/EndAlignment:
  Enabled: true
  EnforcedStyleAlignWith: variable
  AutoCorrect: true

Layout/EmptyLineAfterMagicComment:
  Enabled: true

Layout/EmptyLinesAroundAccessModifier:
  Enabled: true
  EnforcedStyle: only_before

Layout/EmptyLinesAroundBlockBody:
  Enabled: true

# In a regular class definition, no empty lines around the body.
Layout/EmptyLinesAroundClassBody:
  Enabled: true

# In a regular method definition, no empty lines around the body.
Layout/EmptyLinesAroundMethodBody:
  Enabled: true

# In a regular module definition, no empty lines around the body.
Layout/EmptyLinesAroundModuleBody:
  Enabled: true

# Use Ruby >= 1.9 syntax for hashes. Prefer { a: :b } over { :a => :b }.
Style/HashSyntax:
  Enabled: true

Layout/FirstArgumentIndentation:
  Enabled: true

# Method definitions after `private` or `protected` isolated calls need one
# extra level of indentation.
Layout/IndentationConsistency:
  Enabled: true
  EnforcedStyle: indented_internal_methods

# Two spaces, no tabs (for indentation).
Layout/IndentationWidth:
  Enabled: true

Layout/LeadingCommentSpace:
  Enabled: true

Layout/SpaceAfterColon:
  Enabled: true

Layout/SpaceAfterComma:
  Enabled: true

Layout/SpaceAfterSemicolon:
  Enabled: true

Layout/SpaceAroundEqualsInParameterDefault:
  Enabled: true

Layout/SpaceAroundKeyword:
  Enabled: true

Layout/SpaceBeforeComma:
  Enabled: true

Layout/SpaceBeforeComment:
  Enabled: true

Layout/SpaceBeforeFirstArg:
  Enabled: true

Style/DefWithParentheses:
  Enabled: true

# Defining a method with parameters needs parentheses.
Style/MethodDefParentheses:
  Enabled: true

Style/FrozenStringLiteralComment:
  Enabled: true
  EnforcedStyle: always
  Exclude:
    - 'actionview/test/**/*.builder'
    - 'actionview/test/**/*.ruby'
    - 'actionpack/test/**/*.builder'
    - 'actionpack/test/**/*.ruby'
    - 'activestorage/db/migrate/**/*.rb'
    - 'activestorage/db/update_migrate/**/*.rb'
    - 'actionmailbox/db/migrate/**/*.rb'
    - 'actiontext/db/migrate/**/*.rb'

Style/RedundantFreeze:
  Enabled: true

# Use `foo {}` not `foo{}`.
Layout/SpaceBeforeBlockBraces:
  Enabled: true

# Use `foo { bar }` not `foo {bar}`.
Layout/SpaceInsideBlockBraces:
  Enabled: true
  EnforcedStyleForEmptyBraces: space

# Use `{ a: 1 }` not `{a:1}`.
Layout/SpaceInsideHashLiteralBraces:
  Enabled: true

Layout/SpaceInsideParens:
  Enabled: true

# Check quotes usage according to lint rule below.
Style/StringLiterals:
  Enabled: true
  EnforcedStyle: double_quotes

# Detect hard tabs, no hard tabs.
Layout/IndentationStyle:
  Enabled: true

# Empty lines should not have any spaces.
Layout/TrailingEmptyLines:
  Enabled: true

# No trailing whitespace.
Layout/TrailingWhitespace:
  Enabled: true

# Use quotes for string literals when they are enough.
Style/RedundantPercentQ:
  Enabled: true

Lint/AmbiguousOperator:
  Enabled: true

Lint/AmbiguousRegexpLiteral:
  Enabled: true

Lint/ErbNewArguments:
  Enabled: true

# Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
Lint/RequireParentheses:
  Enabled: true

Lint/ShadowingOuterLocalVariable:
  Enabled: true

Lint/RedundantStringCoercion:
  Enabled: true

Lint/UriEscapeUnescape:
  Enabled: true

Lint/UselessAssignment:
  Enabled: true

Lint/DeprecatedClassMethods:
  Enabled: true

Style/ParenthesesAroundCondition:
  Enabled: true

Style/HashTransformKeys:
  Enabled: true

Style/HashTransformValues:
  Enabled: true

Style/RedundantBegin:
  Enabled: true

Style/RedundantReturn:
  Enabled: true
  AllowMultipleReturnValues: true

Style/Semicolon:
  Enabled: true
  AllowAsExpressionSeparator: true

# Prefer Foo.method over Foo::method
Style/ColonMethodCall:
  Enabled: true

Style/TrivialAccessors:
  Enabled: true

Performance/FlatMap:
  Enabled: true

Performance/RedundantMerge:
  Enabled: true

Performance/StartWith:
  Enabled: true

Performance/EndWith:
  Enabled: true

Performance/RegexpMatch:
  Enabled: true

Performance/ReverseEach:
  Enabled: true

Performance/UnfreezeString:
  Enabled: true

Performance/DeletePrefix:
  Enabled: true

Performance/DeleteSuffix:
  Enabled: true

githooksの設定

【Ruby on Rails】rubocop と pre-commit を利用して git commit 時にコーディングチェックを行う - きゃまなかのブログ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0