2009-04-02 40 views
9

Tôi đang cố gắng đăng ký để kiểm tra mã nguồn của mình cho các quy ước. Bằng cách nào đó một số tên biến được kết hợp với regex cho hằng số (const-rgx) thay vì tên biến regex (variable-rgx). Làm thế nào để phù hợp với tên biến với variable-rgx? Hoặc tôi có nên mở rộng const-rgx bằng công cụ variable-rgx của mình không?quy ước mã python sử dụng pylint

ví dụ:
C0103: 31: Invalid name "settings" (should match (([A-Z_][A-Z1-9_]*)|(__.*__))$)

Trả lời

27

Bằng cách nào đó một số tên biến được kết hợp với regex cho hằng (const-rgx) thay vì tên regex biến (variable-rgx).

Các biến đó có được khai báo ở cấp mô-đun không? Có lẽ đó là lý do tại sao chúng được coi là hằng số (ít nhất đó là cách chúng được khai báo, theo PEP-8).

+1

+1 để trả lời câu hỏi thực sự, tức là về việc regex nào đang được sử dụng, không phải là regex thực tế. – DNS

+0

Chúng thực sự được khai báo ở cấp mô-đun! –

+3

cảnh báo gây phiền nhiễu nhất đến khi kiểm tra này bật lên trong khối '____ == '__main __' ', nhưng nó là chính xác vì tất cả các biến vẫn còn ở cấp mô-đun. Cách dễ nhất để khắc phục vấn đề là chỉ gọi đến một hàm main (...) riêng biệt – van

10

Tôi chỉ vô hiệu cảnh báo đó vì tôi không tuân theo các quy ước đặt tên đó.

Để làm điều đó, thêm dòng này vào đầu bạn mô-đun:

# pylint: disable-msg=C0103 

Nếu bạn muốn vô hiệu hóa trên toàn cầu, sau đó thêm nó vào lệnh pylint:

python lint.py --disable-msg=C0103 ... 
0

(should match (([A-Z_][A-Z1-9_]*)|(__.*__))$) 

như bạn đã nói đó là const-rgx chỉ phù hợp với tên UPPERCASE hoặc tên được bao quanh bởi dấu gạch dưới kép.

các biến-rgx là

([a-z_][a-z0-9_]{2,30}$)

nếu biến của bạn được gọi là 'Cài đặt' mà thực sự phải phù hợp với các biến-rgx

tôi có thể nghĩ đến chỉ có 2 lý do cho việc này .. hoặc thiết lập là hằng số hoặc đó là lỗi trong PyLint.

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