rubocop 소개
배경
처음에 도입해야하지만 거의 혼자 개발하고 있었기 때문에,하지 않았다. 팀의 확대로, 역시 코드가 빨라져 왔기 때문에, 일찍 도입하기로 결정했다.
Rubocop은 무엇
루비 스타일 가이드 을 기반으로 만들어진 정적 코드 분석기입니다.
소개
설치
group :development, :staging do
gem 'rubocop', '~> 0.55.0', require: false
end
자동 수정
처음에는 .rubocop_todo.yml이 없으면 작동하지 않으므로
touch .rubocop_todo.yml
로 빈 파일을 생성하고,rubocop -a
에서 자동 수정할 수 있는 부분을 수정하고 커밋한다.수동 수정
자동으로 수정하지 않는 부분도 있으므로
rubocop --auto-config-gen
로 .rubocop.yml을 생성한다..rubocop.yml은 rubocop 검사를 무시하는 구성 파일입니다. 그 파일안에 자신이 수정한 부분을 코멘트 아웃 해,
rubocop
를 실행하면 에러가 나오므로, 그 에러 메세지를 참조해 수정합니다.나중에 팀에 자신의 규칙을 넣고 싶을 때도 거기서 씁시다.
자신이 사용하는 것은
inherit_from: .rubocop_todo.yml
AllCops:
Exclude:
- db/**/*
- tmp/**/*
- vendor/**/*
- lib/geohash.rb
- lib/manager/geo.rb
- bin/spring
TargetRubyVersion: 2.3
# Offense count: 326
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
# URISchemes: http, https
Metrics/LineLength:
Exclude:
- 'Rakefile'
- '**/*/.rake'
- 'spec/**/*.rb'
Max: 275
Metrics/MethodLength:
Max: 150 # remove this after refacotr
PredicateName:
NamePrefixBlacklist:
- has_
MixinUsage:
Include:
- app/**/*.rb
Naming/UncommunicativeMethodParamName:
MinNameLength: 1
Naming/AccessorMethodName:
Enabled: false
Style/Documentation:
Enabled: false
Style/AsciiComments:
Enabled: false
# Offense count: 7
Metrics/PerceivedComplexity:
Max: 18
# Offense count: 45
# Configuration parameters: CountComments.
Metrics/MethodLength:
Max: 106
# Offense count: 45
# Configuration parameters: CountComments.
Metrics/MethodLength:
Max: 109
# Offense count: 1
# Configuration parameters: CountKeywordArgs.
Metrics/ParameterLists:
Max: 7
# Offense count: 7
Metrics/CyclomaticComplexity:
Max: 15
# Offense count: 4
# Configuration parameters: CountComments.
Metrics/ClassLength:
Max: 140
# Offense count: 1
# Configuration parameters: CountBlocks.
Metrics/BlockNesting:
Max: 4
# Offense count: 40
# Configuration parameters: CountComments, ExcludedMethods.
Metrics/BlockLength:
Max: 111
# Offense count: 53
Metrics/AbcSize:
Max: 109
# Offense count: 1
Lint/HandleExceptions:
Exclude:
- 'config/unicorn.rb'
수정해야 할 곳도 아직 있기 때문에, 하면서, 수정해 가고 싶습니다.
Rails 정보
rubocop -R
그러면 ruby뿐만 아니라 Rails도 체크해 주므로 앞으로 사용할 예정입니다.CircleCI 2.0에 넣기
version: 2
jobs:
build:
<<: *defaults
steps:
- checkout
- run:
name: rubocop
command: bundle exec rubocop
개발 환경과 스테이징에 배포할 때 실행할 수 있도록 합니다.
루비민
2017.1부터 rubymine은 기본적으로 rubocop을 넣습니다. 하지만 스스로 설정하지 않으면 움직이지 않습니다.
Code -> Inspect code를 달리면 ↓ 결과가 나옵니다.
감상
프로젝트가 시작될 때 넣어야합니다!
자동으로 달리고 받고 싶다! 시끄러운
참조
Reference
이 문제에 관하여(rubocop 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/arthurbryant/items/73908b54b44dcaece864텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)