Pylint의 파일 수준에서 "missing docstring"경고를 비활성화하려면 어떻게해야합니까?


94

Pylint는 일부 파일에 독 스트링이 없다는 오류가 발생합니다. 나는 각 클래스, 메소드 및 함수에 독 스트링을 추가하려고 시도하지만 Pylint는 파일이 시작될 때 독 스트링이되어야하는지도 확인하는 것 같습니다. 어떻게 든 이것을 비활성화 할 수 있습니까? 클래스, 함수 또는 메서드 내에 독 스트링이 누락되었다는 알림을 받고 싶지만 파일에 독 스트링이 있어야하는 것은 아닙니다.

(독점적 인 소스 파일의 시작 부분에서 흔히 볼 수있는 법적 전문 용어가 있습니까? 예가 있습니까? 그런 사소한 질문을 별도로 게시해도되는지 모르겠습니다.)

답변:


106

파이썬 모듈에 docstring이있어서 모듈이하는 일, 제공하는 것, 클래스 사용 방법의 예를 설명하는 것이 좋습니다. 이것은 IMO가 독 스트링에 들어가서 는 안되는 저작권 및 라이센스 정보를 제공하는 파일의 시작 부분에서 자주 보는 주석과 다릅니다 (일부는 완전히 사라져야한다고 주장하기도합니다. http : // hackerboss 참조). com / get-rid-of-templates / )

pylint 2.4 이상 missing-docstring에서는 다음 세 가지 하위 메시지를 사용하여 다양한 항목 을 구분할 수 있습니다 .

  • C0114( missing-module-docstring)
  • C0115( missing-class-docstring)
  • C0116( missing-function-docstring)

따라서 다음 .pylintrc파일이 작동합니다.

[MASTER]
disable=
    C0114, # missing-module-docstring

이전 버전의 Pylint의 경우 독 스트링이 발생할 수있는 다양한 위치에 대한 별도의 코드가 없으므로 C0111을 비활성화하기 만하면됩니다. 문제는 모듈 범위에서 이것을 비활성화하면 모듈의 모든 곳에서 비활성화된다는 것입니다 (즉, 함수 / 클래스 / 메서드 독 스트링 누락에 대한 C 라인을 얻지 못할 것입니다.

그래서 내가 제안하는 것은 작은 누락 된 독 스트링을 추가하여 다음과 같이 말하는 것입니다.

"""
high level support for doing this and that.
"""

머지 않아 클래스 / 함수의 개별 독 스트링에 반드시 속하지 않는 모듈의 다양한 클래스 / 함수를 사용하는 방법에 대한 예제를 제공하는 등 거기에 넣을 유용한 정보를 찾을 수있을 것입니다. 상호 작용하거나 빠른 시작 가이드와 같은 것).


9
소스 코드에서 사라지는 합법적 (및 기타) 상용구의 경우 +1. 자동차의 모든 구성 요소에는 법적 고지가 첨부되어 있지 않습니다. 반드시 프로젝트의 법적 텍스트가 포함 된 파일을 만드십시오. 모든 파일에 복사본을 넣지 마십시오.
— Jonathan Hartley

22
"This is module foobar."로 시작하는 독 스트링의 경우 -1 이 모듈이 무엇인지는 이미 자명합니다. 다시 작성하는 것은 중복되며 모듈의 이름이 변경되면 오래되기 쉽습니다. "이것과 저것에 대한 높은 수준의 지원을 제공합니다"부분을 포함하십시오.
— Jonathan Hartley

@JonathanHartley : 동의했습니다. 그에 따라 답변의 마지막 부분을 업데이트했습니다.
— gurney alex 2012

16
실망스러운 대답. 특히 Django 프로젝트의 경우. forms.py "이것들은 모델입니다 ... 농담입니다! 양식입니다. 파일 이름이 forms.py이기 때문입니다.이 파일은 Da Vinci 코드가 아닙니다. 여기에 무엇이있을 것이라고 생각 했습니까?"
— Cerin

10
$ cat my_module/test/__init__.py "Hey, PyLint? SHUT UP"
— clacke

65

늦었지만 여전히 유용하다는 것을 알았습니다. 그래서 공유. 여기 에서 찾았 습니다 .

경고를 비활성화하기 위해 pylint에 "--errors-only"플래그를 추가 할 수 있습니다.

이렇게하려면 설정으로 이동하십시오. 다음 행을 편집하십시오.

"python.linting.pylintArgs": []

같이

"python.linting.pylintArgs": ["--errors-only"]

그리고 당신은 갈 수 있습니다!


31
유용하지만 "python.linting.pylintArgs": ["--disable=C0111"],독 스트링 경고를 조용히하기 때문에 더 유용 할 것입니다. 그러나 설정은 모듈 수준에서만 이러한 경고를 비활성화하는 방법에 대한 OP의 질문을 해결합니다.
— followben

만 ...없는 클래스와 같은 오류에 대한 대신 문서 문자열을 경고 걱정 때문에 더 나은 optiong입니다
— Zerontelli

이것에 의지 한 프로젝트를 볼 때 너무 슬프다. pylint는 코드를 깨끗하게 유지하는 데 좋은 도구입니다. 약간의 사랑이 필요합니다.
— 에릭 Aronesty

9

이 기능을 비활성화하지 않고도 수정이 상대적으로 쉽다고 생각합니다.

def kos_root():
    """Return the pathname of the KOS root directory."""
    global _kos_root
    if _kos_root: return _kos_root

모든 함수에 트리플 큰 따옴표 문자열을 추가하기 만하면됩니다.


감사. 난 그냥 심지어 작은 따옴표 작업 발견
— vikas027

예를 들어 Django 프로젝트에서 작업하는 경우 여전히 성가신 일입니다. 여러 모듈 파일을 생성하고이를 수행하기 위해 각 파일로 이동해야합니다. ""-오류로 경고하는 것보다 오류 메시지 만 표시하는 것이 좋습니다. -only "를 pylint 사용자 설정에서
— Zerontelli

8

@cerin이 말했듯이 Django 프로젝트에서는 새 앱을 만들 때 django가 자동으로 생성하는 모든 파일에 모듈 독 스트링을 추가하는 것이 번거롭고 중복되기 때문에 답을 찾고 왔습니다.

따라서 pylint가 독 스트링 유형의 차이를 지정할 수 없다는 사실에 대한 해결 방법으로 다음과 같이 할 수 있습니다.

pylint */*.py --msg-template='{path}: {C}:{line:3d},{column:2d}: {msg}' | grep docstring | grep -v module

grep 할 때 파일 이름을 알 수 있도록 msg-template을 업데이트해야합니다. 모듈을 제외한 다른 모든 누락 된 독 스트링 유형을 반환합니다.

그런 다음 이러한 모든 오류를 수정하고 나중에 실행하면됩니다.

pylint */*.py --disable=missing-docstring

7

아니요. Pylint는 현재 doc-string 경고를 구별 할 수 없습니다.

그러나이 경고를 무시하기 위해 doc-string 확장과 함께 모든 파이썬 코드 검사에 flake8을 사용할 수 있습니다.

pip로 doc-string 확장을 설치합니다 (내부적으로 pydocstyle 사용 ).

pip install flake8_docstrings

그런 다음 --ignore D100스위치를 사용할 수 있습니다 . 예를 들면flake8 file.py --ignore D100


5

pylint 2.4 이상 missing-docstring에서는 다음 세 가지 하위 메시지를 사용하여 다양한 항목 을 구분할 수 있습니다 .

  • C0114( missing-module-docstring)
  • C0115( missing-class-docstring)
  • C0116( missing-function-docstring)

따라서 다음 .pylintrc파일이 작동합니다.

[MASTER]
disable=
    C0114, # missing-module-docstring

그건 내 정신 건강 저장
— Tsagana Nokhaeva

5

이 경고를 비활성화하려는 파일의 시작 부분에 다음 줄을 넣으십시오.

# pylint: disable=missing-module-docstring
# pylint: disable=missing-class-docstring
# pylint: disable=missing-function-docstring

1
모든 것을 비활성화하려면 비활성화해야합니다 missing-docstring(2.4.0 이전 버전에서 작동).
— Pierre.Sassoulas

5

"C : \ Users \ Your User \ AppData \ Roaming \ Code \ User \ settings.json"을 편집하고 python.linting.pylintArgs아래와 같이 끝에 다음 줄을 추가 합니다.

{
    "team.showWelcomeMessage": false,
    "python.dataScience.sendSelectionToInteractiveWindow": true,
    "git.enableSmartCommit": true,
    "powershell.codeFormatting.useCorrectCasing": true,
    "files.autoSave": "onWindowChange",
    "python.linting.pylintArgs": [
        "--load-plugins=pylint_django",
        "--errors-only"
    ],
}

1

(1) CTRL + SHIFT + P (2) 그런 다음> preferences를 입력하고 클릭합니다 : 언어 별 설정 구성 (3) 그런 다음 코드를 지나서 파이썬을 입력합니다.

{
"python.linting.pylintArgs": [
    "--load-plugins=pylint_django","--errors-only"
],

}

0

"settings.json"으로 이동하여 파이썬을 비활성화하십시오. pydocstyle

"python.linting.pydocstyleEnabled": false

0

내 경우에는, pylint 2.6.0로, 누락 된 문서화 문자열 메시지 후에도 명시 적으로 해제, 사라지지 않을 것입니다 missing-module-docstring, missing-class-docstring그리고 missing-function-docstring내에서 .pylintrc파일. 마지막으로 다음 구성이 저에게 효과적이었습니다.

[MESSAGES CONTROL]

disable=missing-docstring,empty-docstring

분명히 pylint 2.6.0은 두 검사를 모두 비활성화하지 않는 한 여전히 독 스트링의 유효성을 검사합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.