[Rails] 초학자에 의한 Rubocop 도입

4850 단어 RuboCop루비Rails

소개



Rubocop은 Ruby의 정적 코드 분석 도구입니다.
ruby-style-guide에 따라, 소스 코드의 수정·개선점을 지적해 줍니다.

또, 들여쓰기의 어긋남이나, 불필요한 스페이스·개행등은 특정의 커멘드를 치는 것으로 자동으로 수정해 주기 때문에, 자신에게 있어서는 물론, 다른 사람이 봐도 읽기 쉬운 코드로 성형하는 것이 할 수 있습니다.
※ 어디까지나 초학자의 관점에서 설정 등을 결정하고 있습니다.

소개



gemfile
gem 'rubocop', require: false

터미널
bundle install

사용해보기



터미널
bundle exec rubocop

실행하면 다음과 같은 출력을 얻을 수 있습니다.


이것이 Rubocop이 감지한 수정점이 됩니다.
그러나 모든 기본 규칙을 따르면 코드를 작성할 때 신경 쓰는 점이 너무 늘어나므로 자신이나 팀 내에서 허용하는 규칙을 설정할 수 있습니다.

설정 맞춤설정



애플리케이션 디렉토리에
.rubocop.yml이라는 파일을 만들고 그 안에 설정을 설명합니다.

rubocop.yml
AllCops:
  # 除外するディレクトリを設定。例えばschemaやmigrationファイルなどは書き直すことが少ないため、検知対象外に
  Exclude:
    - bin/*
    - db/schema.rb
    - node_modules/**/*
    - db/migrate/*
    - vendor/**/*
  # Rails向けのチェックを行う
  Rails:
    enabled: true

# "Missing top-level class documentation comment."を無効
Style/Documentation:
  Enabled: false

# "Prefer single-quoted strings when you don't need string interpolation or special symbols."を無効
Style/StringLiterals:
  Enabled: false

# "Line is too long"を無効
Metrics/LineLength:
  Enabled: false

#'frozen_string_literal: true'を無効
Style/FrozenStringLiteralComment:
  Enabled: false

등 다양한 설정이 가능합니다.
기본 설정 를 참고로 여러가지 만나 보려고 합니다.

설정 후 다시

터미널
bundle exec rubocop


그러면 72files가 56files로 이전보다 수정점이 줄어든 것을 알 수 있습니다.

수정하다



터미널
bundle exec rubocop --auto-gen-config

.rubocop.todo.yml이라는 파일이 자동으로 생성됩니다.
이것은 일시적으로 수정점을 모두 무효로 간주합니다.
여기서 rubocop을 실행하면 수정점이 없는 상태가 됩니다.

.rubocop.todo.yml
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: TreatCommentsAsGroupSeparators, ConsiderPunctuation, Include.
# Include: **/*.gemfile, **/Gemfile, **/gems.rb
Bundler/OrderedGems:
  Exclude:
    - 'Gemfile'

예를 들어 위와 같은 설명이 있습니다.
이 설명을 삭제하면 해당 부분의 무효화하고 있던 수정점이 부활합니다.
조속히 수정해 가겠지만,Cop supports --auto-correct.라는 설명이 있으면 Rubocop가 다음 명령으로 자동으로 수정합니다.

터미널
bundle exec rubocop -a

이번 수정한 것은, Gemfile의 gem의 기술이 알파벳순으로 되어 있지 않은 것을 올바른 순서로 재정렬했습니다.

요약



1.gem을 도입하고 .rubocop.yml 설정을 사용자 정의
2. bundle exec rubocop --auto-gen-config.rubocop.todo.yml 를 생성한다.
3. .rubocop.todo.yml 에 쓰여진 설명을 1개 지우고 수정한다
4.3.을 반복한다.

실제의 현장에서는, 자동화되어 있어 너무 스스로 수정하는 것은 없을 것 같습니다만,
아직 초학자이므로 하나하나 개선해 가서 규약을 확인하고,
처음부터 읽기 쉬운 코드를 쓸 수 있는 엔지니어가 될 수 있도록 유의합니다.

좋은 웹페이지 즐겨찾기