2017-09-17 14 views
1

:분기 변경시 Rubocop이 실패하는 이유는 무엇입니까? 우리는 클래스의 행 수에 대한 검사 다음 한 <code>rubocop.yml</code> 우리의 프로젝트에서

ClassLength: 
    Max: 150 # Default 100 

이미 200 개 이상의 라인입니다 lib/utils/foo.rb의 파일이있다. master 분기에서 rubocop 검사를 실행하면 rubocop이 오류없이 정상적으로 실행됩니다.

이제 내 feature/cool_feature 지점에서이 lib/utils/foo.rb 클래스에 5 줄을 추가했습니다. 지금은 내 지점에 rubocop를 실행하는 경우는 다음과 같은 오류와 함께 실패합니다

Offenses: 

lib/utils/foo.rb:1:1: C: Class has too many lines. [151/150] 
  1. 왜이 파일이 이미 마스터 지점에서 150 개 이상의 라인을 가지고있다 rubocop 테스트를 실패? (주 : master 브랜치에서 rubocop이 실행되지 않습니다.)
  2. 클래스에 214 라인이있을 때 라인 만 표시된다는 오류 메시지가 표시되는 이유는 무엇입니까?

답변

1

bbatsov/rubocop/lib/rubocop/cop/metrics/class_length.rbmaster에서 파일이 실제로 더있는 경우

그래서 확인에만 relevant lines (비어 있지 않은 코멘트)을 계산합니다 의미 code_length(node)

target_line_numbers = body_line_numbers - 
         line_numbers_of_inner_nodes(node, :module, :class) 

target_line_numbers.reduce(0) do |length, line_number| 
    source_line = processed_source[line_number] 
    next length if irrelevant_line(source_line) 

를 호출하는 check_code_length(node)를 호출 150 개 이상의 비어 있지 않은 주석이없는 행.

자세한 내용은 "Rubocop error 'Class definition is too long ruby'"을 참조하십시오.