Làm cách nào để tắt cảnh báo “thiếu chuỗi tài liệu” ở cấp tệp trong Pylint?


94

Pylint đưa ra lỗi rằng một số tệp bị thiếu docstrings. Tôi thử và thêm docstrings vào từng lớp, phương thức và hàm nhưng có vẻ như Pylint cũng kiểm tra xem các tệp có phải là docstring ở đầu nó hay không. Tôi có thể tắt điều này bằng cách nào đó không? Tôi muốn được thông báo về việc thiếu một chuỗi doc trong một lớp, hàm hoặc phương thức nhưng không bắt buộc tệp phải có chuỗi doc.

(Có một cụm từ thuật ngữ pháp lý thường thấy ở đầu tệp nguồn độc quyền không? Có ví dụ nào không? Tôi không biết liệu có được phép đăng một câu hỏi nhỏ như vậy một cách riêng biệt hay không.)

Câu trả lời:


106

Thật tuyệt khi một mô-đun Python có một chuỗi doc, giải thích những gì mô-đun làm, những gì nó cung cấp, ví dụ về cách sử dụng các lớp. Điều này khác với các nhận xét mà bạn thường thấy ở đầu tệp cung cấp thông tin bản quyền và giấy phép, mà IMO không nên đi trong chuỗi tài liệu (một số người thậm chí còn cho rằng chúng nên biến mất hoàn toàn, xem ví dụ: http: // hackerboss). com / get-rid-of-template / )

Với pylint 2.4 trở lên, bạn có thể phân biệt giữa các thông báo khác nhau missing-docstringbằng cách sử dụng ba thông báo phụ sau:

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

Vì vậy, .pylintrctệp sau sẽ hoạt động:

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

Đối với các phiên bản trước của Pylint, nó không có mã riêng cho những nơi khác nhau mà docstrings có thể xảy ra, vì vậy tất cả những gì bạn có thể làm là vô hiệu hóa C0111. Vấn đề là nếu bạn vô hiệu hóa điều này ở phạm vi mô-đun, thì nó sẽ bị vô hiệu hóa ở mọi nơi trong mô-đun (nghĩa là bạn sẽ không nhận được bất kỳ dòng C nào cho việc thiếu hàm / lớp / phương thức docstring. Điều được cho là không tốt đẹp).

Vì vậy, những gì tôi đề xuất là thêm chuỗi tài liệu bị thiếu nhỏ đó, nói điều gì đó như:

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

Đủ sớm, bạn sẽ tìm thấy những thứ hữu ích để đưa vào đó, chẳng hạn như cung cấp các ví dụ về cách sử dụng các lớp / hàm khác nhau của mô-đun mà không nhất thiết phải thuộc về các chuỗi tài liệu riêng lẻ của các lớp / hàm (chẳng hạn như cách những tương tác hoặc một cái gì đó giống như hướng dẫn bắt đầu nhanh).


9
+1 cho bảng soạn thảo hợp pháp (và khác) biến mất khỏi mã nguồn. Mọi thành phần của ô tô không có thông báo pháp lý kèm theo. Bằng mọi cách, hãy tạo một tệp với văn bản pháp lý của dự án của bạn trong đó. Đừng đặt bản sao của nó vào mọi tệp.
Jonathan Hartley,

22
-1 cho docstrings bắt đầu "Đây là foobar mô-đun." Nó đã tự rõ ràng mô-đun này là gì. Việc khôi phục lại nó là dư thừa và dễ bị lỗi thời nếu mô-đun thay đổi tên. Chỉ cần bao gồm phần "Cung cấp hỗ trợ cấp cao cho cái này và cái kia".
Jonathan Hartley,

@JonathanHartley: đã đồng ý. Tôi đã cập nhật phần cuối cùng của câu trả lời cho phù hợp.
gurney alex

16
Câu trả lời thất vọng. Đặc biệt là đối với các dự án Django. Form.py "Đây là các mô hình ... CHỈ CẦN THIẾT! Chúng là các biểu mẫu. Bởi vì, bạn biết đấy, tệp có tên là form.py. Đây không phải là Mật mã Da Vinci. Bạn nghĩ cái gì sẽ có ở đây?"
Cerin

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

65

Đã muộn, nhưng tôi vẫn thấy nó hữu ích. Vì vậy, chia sẻ. Tìm thấy cái này ở đây .

Bạn có thể thêm cờ "--errors-only" cho pylint để tắt cảnh báo.

Để làm điều này, hãy chuyển đến cài đặt. Chỉnh sửa dòng sau:

"python.linting.pylintArgs": []

Như

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

Và bạn tốt để đi!


32
Nó hữu ích, mặc dù "python.linting.pylintArgs": ["--disable=C0111"],có lẽ còn nhiều hơn vì nó chỉ làm dịu cảnh báo docstring. Tuy nhiên, cài đặt giải quyết câu hỏi của OP về cách tắt các cảnh báo này chỉ ở cấp mô-đun.
followben

Đây là một optiong tốt hơn vì bạn chỉ quan tâm đến những lỗi như thiếu lớp, ... thay vì một cảnh báo chuỗi tài liệu
Zerontelli

Thật buồn khi tôi thấy một dự án phải dùng đến điều này. pylint là một công cụ tốt để giữ mã sạch. Nó chỉ cần một số tình yêu.
Erik Aronesty

9

Tôi nghĩ rằng cách khắc phục tương đối dễ dàng mà không cần tắt tính năng này.

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

Tất cả những gì bạn cần làm là thêm chuỗi ba dấu ngoặc kép trong mọi hàm.


Cảm ơn. Tôi vừa phát hiện ra rằng thậm chí đơn báo giá công việc
vikas027

Vâng, nó vẫn gây khó chịu, ví dụ như nếu bạn làm việc trong một dự án Django, nó sẽ tạo ra một loạt các tệp mô-đun và bạn phải đi vào từng tệp đó để thực hiện. -chỉ "trong cài đặt người dùng pylint
Zerontelli

8

Tôi đi tìm câu trả lời bởi vì, như @cerin đã nói, trong các dự án của Django, việc thêm các docstrings mô-đun vào mỗi tệp mà django tự động tạo khi tạo một ứng dụng mới là rất cồng kềnh và dư thừa.

Vì vậy, như một giải pháp thay thế cho thực tế là pylint không cho phép bạn chỉ định sự khác biệt trong các loại docstring, bạn có thể làm điều này:

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

Bạn phải cập nhật msg-template để khi bạn grep bạn vẫn biết tên tệp. Điều này trả về tất cả các loại chuỗi docstring bị thiếu khác ngoại trừ mô-đun.

Sau đó, bạn có thể sửa tất cả các lỗi đó và sau đó chỉ cần chạy:

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

7

Không. Pylint hiện không cho phép bạn phân biệt giữa các cảnh báo doc-string.

Tuy nhiên, bạn có thể sử dụng flake8 để kiểm tra tất cả mã python cùng với phần mở rộng doc-string để bỏ qua cảnh báo này.

Cài đặt phần mở rộng doc-string bằng pip (Nội bộ, Nó sử dụng pydocstyle ).

pip install flake8_docstrings

Sau đó, bạn có thể chỉ cần sử dụng công --ignore D100tắc. Ví dụflake8 file.py --ignore D100


5

Với pylint 2.4 trở lên, bạn có thể phân biệt giữa các thông báo khác nhau missing-docstringbằng cách sử dụng ba thông báo phụ sau:

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

Vì vậy, .pylintrctệp sau sẽ hoạt động:

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

đã cứu sức khỏe tâm thần của tôi
Tsagana Nokhaeva

5

Chỉ cần đặt các dòng sau ở đầu bất kỳ tệp nào bạn muốn tắt các cảnh báo này.

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

1
Nếu bạn muốn tắt mọi thứ, bạn chỉ cần tắt missing-docstring(hoạt động cho phiên bản trước 2.4.0).
Pierre.Sassoulas

5

Chỉnh sửa "C: \ Users \ Your User \ AppData \ Roaming \ Code \ User \ settings.json" và thêm các python.linting.pylintArgsdòng này vào cuối như hình dưới đây:

{
    "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) Sau đó nhập và nhấp vào> tùy chọn: định cấu hình cài đặt ngôn ngữ cụ thể (3) và sau đó nhập python sau đó qua mã

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

}

0

Truy cập "settings.json" và tắt python pydocstyle

"python.linting.pydocstyleEnabled": false

0

Trong trường hợp của tôi, với pylint 2.6.0, các thông điệp docstring thiếu sẽ không biến mất, ngay cả sau khi dứt khoát vô hiệu hóa missing-module-docstring, missing-class-docstringmissing-function-docstringtrong tôi .pylintrctập tin. Cuối cùng, cấu hình sau đã làm việc cho tôi:

[MESSAGES CONTROL]

disable=missing-docstring,empty-docstring

Rõ ràng, pylint 2.6.0 vẫn xác thực docstrings trừ khi cả hai kiểm tra bị vô hiệu hóa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.