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.