Rubocop Linelength : 주석이있는 줄을 무시하는 방법?


109

Rails 4 앱을 사용하여 줄이 긴지 확인할 때 Rubocop이 주석이있는 줄 (주석 또는 줄 끝이있는 일부 코드)을 무시하도록하고 싶습니다. 이 작업을 수행하는 방법이 있습니까?

답변:


197

라인 단위로 경찰을 무시하는 방법이 있습니다.

구성 파일을 통해 수행하는 방법도 있습니다.

실행 rubocop --auto-gen-config하면 위법 행위를 비활성화하는 데 사용할 수있는 파일이 생성됩니다.

이 명령은 또한 이러한 옵션을로드하기 위해 수행 할 작업에 대한 힌트를 제공합니다.

라인 단위로 경찰도 활성화 및 비활성화 할 수 있습니다.

# rubocop:disable RuleByName
This is a long line 
# rubocop:enable RuleByName

코드에서 한 번에 둘 이상의 규칙을 수행 할 수도 있습니다.

# rubocop:disable BlockComments, AsciiComments

인라인 지시문을 사용하면 지시문은 해당 행에 대해서만 유효하며 다음과 같습니다.

# Thanks to @jnt30 for the comment!
method(argument) # rubocop:disable SomeRule, SomeOtherRule

공식 매뉴얼 에서 RuboCop에 대해 더 많이 읽을 수 있습니다 .

모든 규칙 이름을 찾으려면 rubocop 구성 파일에서 살펴볼 가치가 있습니다.

cyberwiz 는 " rubocop -D문서를 보지 않고 규칙 이름이 필요할 때 실행합니다."라고 말합니다 . 업데이트 : 이제 플래그가없는 기본 동작입니다.


1
글쎄요, 댓글은 팀에서 받아 들인 스타일과의 이탈을 설명 할 수 있으므로 이것은 나쁜 것이 아닙니다. 그렇지 않으면 rubocop.yml 파일에 배치하면 허용되는 스타일 예외가 아니며 주석이 필요하지 않습니다. 댓글에는 "내가 그렇게하려고 했어요!"라고 적혀 있습니다. 전혀 나쁘지 않습니다.
— vgoff

1
주석은 코드가 아니므로 확인하는 것은 의미가 다르며 IMO rubocop은이를 그렇게 처리해야합니다.
— phoet

2
주석은 코드의 일부이며 전자 메일이나 터미널에서 코드를 처리 할 때 발생합니다. 귀하의 의견이 "팀"이 코드로 채택한 것과 동일한 줄 길이를 따르지 않는 것은 나쁜 맛이라고 생각합니다. 댓글이라고해서 흐름을 방해해서는 안됩니다. 나는 rubocop이 의미 론적으로 (의미 적으로) 지시문 이외의 다른 것에 대한 주석을 확인하지 않는다고 확신합니다. 줄 길이와 주석 스타일을 확인합니다. 그래서 아니요, 의미를 찾는 것이 아니라 스타일을 확인하는 것뿐입니다. "코멘트는 코드가 아닙니다"가 반드시 그럴 필요가 없다는 것을 할인하지 마십시오.
— vgoff

실제로 #!/bin/env ruby주석 줄 조차 주석이지만 코드이며 의미 상 중요합니다. 댓글이 항상 "댓글"은 아닙니다.
— vgoff

1
@Twiek 당신이 찾고있는이 답변에서 빠진 것이 있습니까?
— vgoff

35

의 특정 줄을 자동으로 무시하도록 정규식 패턴을 정의 rubocop.yml할 수 있으므로 #문자로 시작하는 모든 줄을 무시하도록 선택할 수 있습니다 .

Metrics/LineLength:
  Max: 80
  IgnoredPatterns: ['\A#']

원하는 경우 "들여 쓰기"주석 줄 (즉, 공백 뒤에 문자가 오는 #)도 무시 되도록 개선 할 수 있습니다 .

그러나 주석으로 끝나는 코드 줄은 고려하지 않습니다 .

some_code(that_does_something) # This line would NOT be ignored by Rubocop.

9
공백을 포함 할 수있는 행을 포함하여 해당 정규 표현식을 확장 할 수 있습니다.IgnorePatterns: ['(\A|\s)#']
— poustovitss

1
감사합니다 @poustovitss. 오타가 있습니다. IgnoredPatterns대신 있어야합니다 IgnorePatterns(문자 'd'누락).
— Horacio

9

rubocop에서 다음 주석을 사용하여 특정 규칙을 무시할 수 있습니다.

# rubocop:disable Metrics/LineLength
def this_could_be_a_very_long_line_that_extends_forever_into_infinity
end
# rubocop:enable Metrics/LineLength

전체 파일을 다음에 추가하여 무시할 수도 있습니다 .rubocop.yml.

AllCops:
  Exclude:
    - path/to/file.rb

6

나는 여기서 기본 아이디어는 n 문자 뒤에 무엇이 있든 상관없이 줄 길이를 적용하고 싶다는 것입니다. 80 자 기본값은 해당 문자 수만 저장할 수있는 오래된 터미널 창을위한화물 컬트입니다. 코드에서 본 유일한 옵션 은 문자 제한을 초과 할 수있는 URL을 허용하는 옵션입니다.

당신은 전체 파일을 무시할 수 있습니다 , 나는 당신이 찾고있는 것이 아니라고 생각합니다.


8
요즘 80 자 뒤에있는 아이디어는 터미널에 대한 "화물 컬트"가 아닙니다. 논리적 인 이유가 있습니다. 누구나 원하는대로 편집기 또는 IDE 창을 분할 할 수 있습니다. 80 자 이상이면 너비를 변경하거나 줄 바꿈을 경험할 필요가 없습니다.
— Jason Antman

2
소프트 래핑을 지원하는 IDE가없는 경우 IMO는 도구가 최신 상태가 아닙니다.
— phoet

8
40 (200)는 덜 반면 그것은 또한 사용성 것은 그래서 80 문자들도 꽤 읽을 수
— 토니 리

# 1 "80 자보다 더 넓은 한"800x600은 80 자보다 넓으며 2 개의 80 자 파일을 나란히 보는 데 동일한 문제가 있습니다. 이것은 말도 안되며 1366 해상도에만 적용됩니다. 1920+ 인계으로, 다음 인수는 "나는 3, 4 개, 파일 분할 할 수 있습니다"입니다
— 앙드레 Figueiredo의

1
우리는 그 다음 80를했다 13 "노트북에 분할 화면보기에서 Github에서의 PR의하는 동안 코드 리뷰를 보면 120로 변경 문제가되었다 우리는 80로 다시 전환.
— AndreiMotinga
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.