rubocop 소개

9302 단어 CircleCIRailsRuboCop

배경



처음에 도입해야하지만 거의 혼자 개발하고 있었기 때문에,하지 않았다. 팀의 확대로, 역시 코드가 빨라져 왔기 때문에, 일찍 도입하기로 결정했다.

Rubocop은 무엇



루비 스타일 가이드 을 기반으로 만들어진 정적 코드 분석기입니다.

소개



설치


  • 개발 환경과 스테이징에 넣습니다. 최신 버전 0.55.0을 넣습니다.
  • 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를 달리면 ↓ 결과가 나옵니다.



    감상



    프로젝트가 시작될 때 넣어야합니다!

    자동으로 달리고 받고 싶다! 시끄러운

    참조


  • ht tp // ch. sma rthr. jp/엔트리/2017/07/12/073000
  • htps //w w. 지 tb 라이언 s. m / help / ru by / rubo p. HTML
  • 좋은 웹페이지 즐겨찾기