Có thể bỏ qua một dòng cụ thể duy nhất với pylint?


150

Tôi có dòng sau trong tiêu đề của mình:

import config.logging_settings

Điều này thực sự thay đổi cài đặt ghi nhật ký python của tôi, nhưng pylint nghĩ rằng đó là một nhập khẩu không được sử dụng. Tôi không muốn xóa unused-importcác cảnh báo nói chung vì vậy có thể bỏ qua một dòng cụ thể này không?

Tôi không ngại có một .pylintrcdự án này vì vậy câu trả lời thay đổi tập tin cấu hình sẽ được chấp nhận.

Nếu không, một cái gì đó như thế này cũng sẽ được đánh giá cao:

import config.logging_settings # pylint: disable-this-line-in-some-way

Câu trả lời:


227

Kiểm soát thông điệp Pylint được ghi lại trong hướng dẫn sử dụng Pylint :

Có thể vô hiệu hóa cục bộ một tin nhắn cụ thể?

Có, tính năng này đã được thêm vào trong Pylint 0.11. Điều này có thể được thực hiện bằng cách thêm
# pylint: disable=some-message,another-one
ở cấp độ khối mong muốn hoặc ở cuối dòng mã mong muốn

Bạn có thể sử dụng mã tin nhắn hoặc tên tượng trưng.

Ví dụ

def test():
    # Disable all the no-member violations in this function
    # pylint: disable=no-member
    ...
global VAR # pylint: disable=global-statement

Hướng dẫn cũng có thêm ví dụ .

một wiki ghi lại tất cả các thông điệp chính và mã của họ.


Tôi thích flake8 s # noqa. Tôi không muốn thấy nhiều ý kiến ​​trong mã. # nolintsẽ còn rõ ràng hơn
Nils Lindemann

61
import config.logging_settings # pylint: disable=W0611

Điều đó thật đơn giản và cụ thể cho dòng đó.

Như sthenault vui lòng chỉ ra, bạn có thể và nên sử dụng hình thức dễ đọc hơn:

import config.logging_settings # pylint: disable=unused-import

Bạn lấy biểu tượng rõ ràng từ đâu? Kẻ nói dối của tôi (người trong điệp viên) không báo cáo và wiki được liên kết trong câu trả lời của jomo cũng không liệt kê nó.
Joooeey

Ý bạn là unused-importsao? Tôi nghĩ rằng kẻ nói dối của tôi đã cảnh báo tôi khi tôi sử dụng W0611, nhưng nó đã> 3 năm nên tôi không nhớ: / Xin lỗi
Con mèo bất hạnh

4

Tôi tin rằng những gì bạn đang tìm kiếm là ...

import config.logging_settings  # @UnusedImport

Lưu ý không gian kép trước khi nhận xét để tránh nhấn các cảnh báo định dạng khác.

Ngoài ra, tùy thuộc vào IDE của bạn (nếu bạn đang sử dụng một), có thể có một tùy chọn để thêm quy tắc bỏ qua chính xác (ví dụ: nhấn nhật thực Ctrl1trong khi con trỏ kết thúc cảnh báo sẽ tự động đề xuất@UnusedImport


2
Điều này có thể làm việc cho một số IDE, nhưng không hoạt động emacs/flycheck. Cảm ơn. Hãy giữ câu trả lời vì nó có thể giúp đỡ người khác.
The Unun Cat

Điều này không hoạt động khi chạy pylinthoặc flake8từ dòng lệnh.
Jacob Tomlinson

@JacobTomlinson Thú vị, cảm ơn. Đó là những gì Pydev chấp nhận và tôi đã có ấn tượng rằng pyclipse chỉ đơn giản là bóc vỏ thành pylint. Phải được tùy chỉnh một chút hoặc có thể nhật thực đang xử lý các chỉ thị đó và triệt tiêu đầu ra.
Cơ bản

4

Kiểm tra các tệp trong https://github.com/PyCQA/pylint/tree/master/pylint/checkers . Tôi chưa tìm thấy cách nào tốt hơn để lấy tên lỗi từ tin nhắn hơn là Ctrl + F-ing các tệp đó hoặc sử dụng tính năng tìm kiếm Github:

Nếu thông báo là "Không có tên ... trong mô-đun ...", hãy sử dụng tìm kiếm:

No name %r in module %r repo:PyCQA/pylint/tree/master path:/pylint/checkers

Hoặc, để có được kết quả ít hơn:

"No name %r in module %r" repo:PyCQA/pylint/tree/master path:/pylint/checkers

Github sẽ cho bạn thấy:

"E0611": (
    "No name %r in module %r",
    "no-name-in-module",
    "Used when a name cannot be found in a module.",

Sau đó bạn có thể làm:

from collections import Sequence # pylint: disable=no-name-in-module

1
bạn có thể tìm thấy tất cả trong các tài liệu
Esteban

Cảm ơn, nó tốt hơn nhiều so với việc đi qua nguồn. Tôi tìm thấy thêm hai tấm gương cho tài liệu pylint. Rõ ràng, readthedoc là tấm gương chính thức. Một cái khác là pylint.org
loxaxs
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.