Pylint는 파일에 대한 모든 경고를 비활성화합니다.


90

빌드 시스템에서 파일 린트를 사용하고 있습니다. 우리는 코드베이스 내에 일회용 코드가있는 파이썬 패키지를 가지고 있으며, 모듈에 대한 모든 경고를 일시적으로 비활성화하여 이러한 불필요한 메시지로 다른 개발자를 도청하는 것을 중지하고 싶습니다. pylint: disable모듈에 대한 모든 경고에 대한 쉬운 방법이 있습니까?

답변:


127

로부터 PyLint 자주 묻는 질문

Pylint <0.25 인 경우

# pylint: disable-all

모듈 시작 부분에.

Pylint 0.26.1 이상은 해당 지시문의 이름을 다음과 같이 변경했습니다.

# pylint: skip-file

(그러나 첫 번째 버전은 이전 버전과의 호환성을 위해 유지됩니다).

어떤 모듈이 무시되는지 쉽게 찾기 위해 정보 레벨 메시지 I0013이 방출됩니다. 최신 버전의 Pylint에서 이전 구문을 사용하면 추가 I0014 메시지가 방출됩니다.


2
참고 : 이렇게하면 모든 경고와 모든 오류 가 비활성화됩니다 . 경고 비활성화하는 방법을 찾고 있다면 이 페이지의 내 대답을 참조하십시오.
eatcrayons

32

PyLint에는 메시지에 대한 5 개의 "범주"가 있습니다 (내가 알고있는).

이러한 범주는 과거에는 매우 분명했지만 번호가 매겨진 Pylint 메시지는 이제 이름으로 대체되었습니다. 예를 들어, C0302현재 too-many-lines입니다. 그러나 'C'는 것을 우리에게 알려줍니다 too-many-linesA는 협약 메시지. 많은 시스템 (예 : Syntastic )이 모든 것을 경고 또는 오류로 분류하는 것처럼 보이기 때문에 Convention 메시지가 종종 경고 로만 표시 되기 때문에 이것은 혼란 스럽 습니다 . 그러나 PyLint 보고서는 여전히 이러한 범주로 분류되므로 확실히 지원됩니다.

귀하의 질문은 특히 경고 에 관한 것이며 모든 PyLint 경고 메시지 이름은 'W'로 시작합니다.

이것을 추적하기가 조금 어려웠지만 이 대답 은 결국 저를 대답 으로 이끌었습니다. PyLint는 여전히 전체 메시지 범주 비활성화를 지원합니다. 따라서 모든 경고 를 비활성화 하려면 다음을 수행하십시오.

disable=W

명령 줄에서 사용할 수 있습니다.

$ pylint --disable=W myfile.py

또는 pylintrc 파일에 넣을 수 있습니다.

[MESSAGES CONTROL]
disable=W

참고 : disablerc 파일에 이미 옵션 이있을 수 있습니다 .이 경우이 목록에 'W'를 추가해야합니다.

또는 코드에 인라인으로 배치하여 배치 된 범위에서 작동합니다.

# pylint: disable=W

전체 파일에 대해 비활성화하려면 파일 맨 위에 배치하는 것이 가장 좋습니다. 그러나 파일 맨 위에서도 여전히 trailing-newlines경고 메시지 가 표시 되고 있음을 알았습니다 (기술적으로는 규칙 경고이지만 이에 도달 했습니다).

제 경우에는 오래전 누군가가 쓴 도서관이있었습니다. 잘 작동했기 때문에 현대의 파이썬 규칙 등에 대해 걱정할 필요가 없었습니다. 제가 정말로 신경 쓰는 것은 코드를 깨뜨릴 수있는 오류뿐이었습니다.

내 해결책은 첫 번째 줄에 다음 PyLint 명령을 배치 하여이 하나의 파일에 대한 모든 Warning , ConventionRefactoring 메시지 를 비활성화하는 것입니다 .

# pylint: disable=W,C,R

뒤 따르는 줄 바꿈에 대한 앞서 언급 한 메시지를 제외하고 이것은 정확히 내가 필요한 것을 수행했습니다.


17

예, # pylint: skip-file파일에서 지정할 수 있지만 파일에 대한 모든 경고를 비활성화하는 것은 좋지 않습니다.

특정 경고 만 # pylint: disable=message-name사용하지 않으려면 나머지 파일에 대해 지정된 메시지를 사용하지 않도록 설정하는 것과 같은 주석을 추가 하거나 최소한 # pylint: enable=message-name.

예:

# pylint: disable=no-member
class C123:
    def __init__(self):
        self.foo_x = self.bar_x
# pylint: enable=no-member

class C456:
    def __init__(self):
        self.foo_x = self.bar_x

이와 같이 특정 경고가 비활성화되었음을 disable=locally-disabled알리지 않으려면 pylintrc에 추가 할 수 있습니다.
ColonelFazackerley

7

또 다른 옵션은 --ignore명령 줄 옵션 을 사용하여 일부 파일에 대한 분석을 건너 뛰는 것입니다.


0

내 사용 사례는 pylint *.py특정 파일 하나를 건너 뛰고 싶은 것을 제외하고는 디렉토리의 모든 파일을 처리 하기 위해 실행 하는 것입니다.

추가 #pylint: skip-file로 실패의 원인 pylint를 I: 8, 0: Ignoring entire file (file-ignored). 추가 #pylint: disable=file-ignored해도 문제가 해결되지 않습니다. 아마도 파일 특정 오류가 아닌 전역 오류 일 것입니다.

해결책은 --disable=file-ignoredpylint 명령 옵션 에 포함 하는 것이 었습니다. 이것을 알아내는 데 너무 오래 걸렸습니다. file-ignored파일을 명시 적으로 무시할 때 오류 가 없어야 합니다.


1
더 이상적으로 pylintrc는 명령 옵션이 아닌 구성 파일 에 넣으십시오 .
Acumenus 2017-06-03
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.