[python] Pylint 경고를 비활성화하려면 어떻게합니까?

ifPylint 0.21.1 (중요한 경우 : astng 0.20)에서 경고 C0321 ( “한 줄에 두 개 이상의 문”)을 사용하지 않으려 고합니다 . 1, 공통 0.50.3, Python 2.6.6 (r266 : 84292, 2010 년 9 월 15 일, 16:22:56).

disable=C0321Pylint 구성 파일을 추가하려고 시도 했지만 Pylint는 파일을보고해야합니다. 해당 줄의 변형 (예 : disable=0321또는 disable=C321)은 오류로 표시되므로 Pylint 옵션을 올바르게 인식 하므로 무시합니다.

이것이 Pylint 버그입니까, 아니면 제가 잘못하고 있습니까? 이 주위에 어떤 방법이 있습니까? 이 소음을 제거하고 싶습니다.



답변

pylint --generate-rcfile 다음과 같이 보여줍니다.

[MESSAGES CONTROL]

# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
# multiple time.
#enable=

# Disable the message, report, category or checker with the given id(s). You
# can either give multiple identifier separated by comma (,) or put this option
# multiple time (only on the command line, not in the configuration file where
# it should appear only once).
#disable=

따라서 섹션 안에 줄 ~/.pylintrc이 있어야합니다 .disable=[MESSAGES CONTROL]


답변

이클립스를 사용 하여이 문제가 있었고 다음과 같이 해결했습니다.

pylint 폴더 (예 :)에서 C:\Python26\Lib\site-packages\pylintShift 키를 누른 상태에서 마우스 오른쪽 버튼을 클릭하고 해당 폴더에서 windows 명령을 열도록 선택합니다. 유형:

lint.py --generate-rcfile > standard.rc

standard.rc구성 파일 이 생성 됩니다. 메모장에서을 열고 [MESSAGES CONTROL]주석을 해제
disable=하고 비활성화하려는 메시지 ID를 추가하십시오. 예 :

disable=W0511, C0321

파일을 저장하고 Eclipse-> window-> preferences-> PyDev-> pylint의 인수 상자에 다음을 입력하십시오.

--rcfile=C:\Python26\Lib\site-packages\pylint\standard.rc

이제 작동해야합니다 …


pylint가 해석 할 주석 을 코드 상단에 추가 할 수도 있습니다 .

# pylint: disable=C0321

모든 pylint 메시지 코드에 연결


--disable-ids=C0321인수 상자에 예 를 추가하면 작동하지 않습니다. 사용 가능한 모든 pylint 메시지는 클래스 _messages인스턴스의 속성 인 dictionary에 저장됩니다 pylint.utils.MessagesHandlerMixIn. 인수와 함께 pylint를 실행하면 --disable-ids=...(적어도 구성 파일없이)이 사전은 비어 있으며 pylint 내에서 KeyError 예외가 발생합니다 pylint.utils.MessagesHandlerMixIn.check_message_id(). 콘솔 아이콘 옆의 콘솔 옵션에서 Pylint 콘솔을 선택하십시오.)


답변

Pylint v. 0.25.3부터는 모든 코드 번호를 기억할 필요없이 경고를 비활성화하기 위해 기호 이름을 사용할 있습니다. 예 :

# pylint: disable=locally-disabled, multiple-statements, fixme, line-too-long

이 스타일은 암호 오류 코드보다 유익하며, 최신 버전의 Pylint는 오류 코드가 아닌 기호 이름 만 출력하기 때문에 더욱 실용적입니다.

기호 이름과 코드 사이의 일치는 여기 에서 찾을 수 있습니다 .

비활성화 주석은 자체 블록에 삽입하여 같은 블록에서 나오는 모든 것에 비활성화를 적용 할 수 있습니다. 또는 적용하려는 라인의 끝에 삽입 할 수 있습니다.

pylint가 ” Locally disabling“메시지를 출력하는 경우 위의 예와 같이 locally-disabled 먼저 disable을 포함시켜 메시지를 제거 할 수 있습니다 .


답변

블록에서 로컬로 경고를 비활성화하려면 추가

# pylint: disable=C0321

그 블록에.


답변

Pylint에서 경고 및 오류를 비활성화하는 방법에는 여러 가지가 있습니다. 사용할 설계는 전 세계 또는 로컬에서 비활성화를 적용하려는 방식과 관련이 있습니다. 중요한 디자인 결정입니다.

여러 접근

  1. 하나 이상의 pylintrc파일에서.

여기에는 ~/.pylintrcChris Morgan이 설명한대로 파일 ($ HOME 디렉토리에 있음) 보다 많은 것이 포함됩니다 . Pylint는 rc 파일을 검색하며 “가까운”파일의 값이 더 높은 우선 순위를 갖습니다.

  • pylintrc현재 작업중인 디렉토리 의 파일 또는

  • 현재 작업 디렉토리가 파이썬 모듈 (즉, __init__.py파일을 포함)에 있다면 , pylintrc파일이 발견 될 때까지 파이썬 모듈의 계층을 검색하십시오 . 또는

  • 환경 변수 PYLINTRC에 의해 명명 된 파일. 또는

  • 그렇지 않은 홈 디렉토리가있는 경우 /root:

    • ~/.pylintrc; 또는

    • ~/.config/pylintrc; 또는

    • /etc/pylintrc

이러한 파일의 대부분은 이름이 지정 pylintrc되어 ~있으며 파일 의 맨 앞에 점이 있습니다.

당신에게 pylintrc파일, 사용하지 않도록 특정의 pylint 메시지에 대한 행을 추가합니다. 예를 들면 다음과 같습니다.

[MESSAGES CONTROL]
disable=locally-disabled
  1. pylintAboo 및 Cairnarvon에서 설명한대로 명령 줄 에서 추가로 비활성화합니다 . 이것은 다음과 같습니다 pylint --disable=bad-builtin. --disable추가 항목을 억제 하려면 반복하십시오 .

  2. Imolit에 설명 된대로 개별 Python 코드 행에서 추가로 비활성화합니다. 이것들은 some statement # pylint: disable=broad-except(원본 소스 라인의 끝에 추가 주석) 처럼 보이고 현재 라인에만 적용됩니다 . 내 접근 방식은 항상 다른 코드 줄 끝에 배치하여 블록 스타일과 혼동하지 않도록하는 것입니다 (아래 참조).

  3. 완전한 소스 파일까지 더 큰 파이썬 코드 블록에 대해 추가로 비활성화합니다.

    • 이것들은 다음과 같습니다 # pragma pylint: disable=bad-whitespace( pragma핵심 단어를 주목하십시오 ).

    • 이것은 pragma 다음모든 줄에 적용됩니다 . 이러한 블록을 파일 맨 위에두면 억제가 전체 파일에 적용됩니다. 파일에서 같은 블록을 낮추면 블록 뒤에 오는 행에만 적용됩니다. 나의 접근 방식은 항상 이것들을 그들 자신의 라인에 두어 단일 라인 스타일과 혼동하지 않도록하는 것입니다 (위 참조).

    • 억제가 코드 범위 내에서만 적용되어야하는 경우 억제 를 중지 하려면 # pragma pylint: enable=bad-whitespace(지금 사용 enable하지 않음 disable)을 사용하십시오 .

한 줄 # pylint을 비활성화 하면 구문이 사용 되지만이 줄을 비활성화 하면 구문이 사용 # pragma pylint됩니다. 복사 및 붙여 넣기시 혼동하기 쉽습니다.

함께 모아서

나는 보통 이러한 접근법을 혼합하여 사용합니다.

  • 나는 ~/.pylintrc절대적으로 세계 표준에 사용 합니다.

  • pylintrc프로젝트 별 표준이있을 때 Python 모듈 내의 다른 수준에서 프로젝트 수준 을 사용 합니다. 특히 다른 사람이나 팀에서 코드를 가져 오는 경우 선호하지 않는 규칙을 사용하지만 코드를 다시 작성하고 싶지는 않을 수 있습니다. 설정을이 수준으로 유지하면 이러한 관행을 다른 프로젝트에 전파하지 않아도됩니다.

  • 단일 소스 파일 맨 위에 블록 스타일 pragma를 사용합니다. 필자는 Pylint 표준에 대해서도 개발의 열기에서 pragma를 끄고 (메시지를 표시하지 않음) 동의하지 않습니다 (예 : “너무 적은 공용 메소드”-항상 사용자 정의 예외 클래스에 대해 경고가 나타납니다). 개발하는 동안 더 많은 / 아마도 모든 Pylint 메시지를 보는 것이 도움이됩니다. 이렇게하면 한 줄짜리 pragma (아래 참조)로 해결하려는 사례를 찾거나 다음 개발자에게 설명을 추가하여이 경우 경고가 괜찮은 이유를 설명 할 수 있습니다.

  • 코드를 체크인 할 준비가되어 있어도 일부 블록 스타일의 pragma를 활성화 된 상태로 둡니다. 그 중 몇 가지를 사용하려고 시도하지만 모듈에 적합하면 문서로 수행해도됩니다. 그러나 가능한 한 적은 수를 남겨 두려고 노력합니다.

  • 특히 강력한 오류를 해결하기 위해 한 줄 주석 스타일을 사용합니다. 실제로 할 의미가있는 장소가 있다면 예를 들어 except Exception as exc, 내가 넣어 # pylint: disable=broad-except이 기본적으로 문서의 형태로, 밖으로 호출 할 이상한 예외 요구하기 때문에 대신 좀 더 글로벌 접근 방식의 라인에.


파이썬의 다른 모든 것들과 마찬가지로, 당신은 다른 수준의 간접적으로 행동 할 수 있습니다. 내 조언은 Pylint에 너무 관대 한 접근으로 끝나지 않도록 어떤 수준에 속하는지 생각하는 것입니다.


답변

다음 명령을 사용할 수도 있습니다.

pylint --disable=C0321  test.py

내 pylint 버전은 0.25.1입니다.


답변

이것은 FAQ입니다 .

4.1 특정 메시지를 로컬에서 비활성화 할 수 있습니까?

예,이 기능은 Pylint 0.11에 추가되었습니다. 이것은 추가하여 수행 할 수 있습니다
# pylint: disable=some-message,another-one 원하는 블록 레벨 또는 원하는 코드 라인의 끝에 .

4.2 특정 모듈에 대해서만 메시지를 비활성화하는 방법이 있습니까?

예, 파일 상단의 주석에 해당 옵션을 추가하여 모듈 수준에서 메시지를 비활성화하거나 활성화 할 수 있습니다 (전역 비활성화).

# pylint: disable=wildcard-import, method-hidden
# pylint: enable=too-many-lines

다음과 같은 방법으로 메시지를 비활성화 할 수 있습니다.

  • 숫자 ID : E1101 , E1102
  • 상징적 인 메시지가 no-member,undefined-variable
  • 수표 그룹의 이름. 당신은 그들을 잡을 수 있습니다pylint --list-groups .
  • 체크 카테고리 : C, R,W , 등
  • 로 모든 수표를 확인하십시오 all.

님 의 전체 메시지 목록은 문서를 참조하십시오 (또는 pylint --list-msgs터미널에서 실행 ) pylint. 문서는 또한 이 기능을 사용하는 방법에 대한 좋은 를 제공 합니다.