2014-09-28 23 views
6

Tôi đang sử dụng pylint trong một dự án và điều gì đó làm phiền tôi.Pylint: vô hiệu hóa cảnh báo cho lớp con

Ví dụ: tôi tạo một bài kiểm tra đơn vị (lớp con của unittest.TestCase). Lớp cha này có rất nhiều phương thức, vì vậy pylint nói "R0904: Quá nhiều phương thức công khai". Để "giải quyết" cảnh báo này, tôi vô hiệu hóa localy kiểm tra này.

Nhưng tôi cần phải viết rất nhiều bài kiểm tra đơn vị và nó làm phiền tôi để vô hiệu hóa localy kiểm tra này mỗi lần.

Vì vậy, tôi đang tìm cách vô hiệu hóa kiểm tra này cho tất cả các lớp con của unittest.TestCase. Trong một tập tin cấu hình pylint có thể được, nhưng tôi đã không tìm thấy bất cứ điều gì.

Bạn có ý tưởng nào để làm điều đó không?

Cảm ơn rất nhiều sự giúp đỡ của bạn.

+0

Hy vọng rằng có một tùy chọn đơn giản hơn, nhưng nếu không ... bạn luôn có thể viết một plugin mà lớp con (hoặc monkeypatches, nhưng subclassing có vẻ sạch hơn ở đây) kiểm tra thiết kế. Tôi sẽ làm điều đó bằng cách thêm một tùy chọn mới 'ignore-test-classes' và sử dụng nó để bỏ qua kiểm tra' max-public-method' cho bất kỳ lớp nào thừa hưởng từ bất kỳ lớp bị bỏ qua nào. (Mã lệnh xử lý 'ignore-iface-methods' của trình kiểm tra lớp học nên là một mô hình tốt.) Thực tế, điều này có vẻ như nó có thể là sử dụng toàn diện mà bạn có thể gửi nó ngược dòng nếu bạn làm điều đó. – abarnert

+2

Không hoàn toàn đưa bạn đến đó, nhưng bạn luôn có thể thả một 'pylintrc' vào một gói (tức là bất kỳ thư mục nào có' __init __. Py' trong đó), vì vậy nếu bạn có tất cả các bài kiểm tra trong một thư mục 'tests', ví dụ, bạn ít nhất có thể vô hiệu hóa nó trên cơ sở dự án, ngay cả khi không phải trên toàn cầu. –

+0

Cảm ơn câu trả lời của bạn. Abarnert, tôi sẽ kiểm tra làm thế nào để tạo ra một plugin cho điều đó. Vấn đề của tôi không chỉ dành cho lớp học không tốt nhất. Ví dụ, tôi sử dụng sqlalchemy và cho lớp con của sqlalchemy.types.TypeDecorator. Tôi sẽ cố gắng viết một plugin chung để thêm tùy chọn như disable-XXXX = unittest.TestCase, ..., ... –

Trả lời

2

Bạn có thể xác định tệp pylintrc và chạy thông tin bằng cách sử dụng điều đó. Bạn có thể làm điều đó như sau:

$ pylint --generate-rcfile > pylintrc 

Điều này tạo tệp pylintrc mặc định. Điều này cần có một đoạn mà trông giống như:

# 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= 

Bạn muốn thêm dòng sau đây sau khi đoạn đó (nhưng trong thông điệp điều khiển phần):

disable=R0904 

hay:

disable=too-many-public-methods 

Sau đó, bạn cần chạy pylint với tệp rcfile đó. Điều này có thể được thực hiện bằng cách sử dụng đối số --rcfile=<file>.

Các vấn đề liên quan