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.