2010-01-22 20 views
9
#!/usr/bin/python 
str = "this" 
if(1): 
    print "Hi" 
else: 
    print str.any_random_function() 

Điều này không thành công khi tôi chạy chương trình. Tôi đã thử py_compile nhưng điều đó không cho biết lỗi trong vòng lặp 'else' khác. Bây giờ làm thế nào tôi có thể biên dịch chương trình và phát hiện lỗi đáng tin cậy trong mã python?Làm cách nào để kiểm tra lỗi biên dịch trong python?

Cảm ơn.

+4

Tôi không nghĩ rằng nó có thể làm điều đó trong python. Các phương thức có thể được thêm vào thực tế, ngoại lệ bị bắt hoặc phương thức __getattr__ bị quá tải. Trong bất kỳ trường hợp nào, lỗi của bạn sẽ hoàn toàn phụ thuộc hoặc thông tin thời gian chạy. – fserb

+0

Thực ra, ví dụ cụ thể này phải được đánh dấu bằng pylint. – Geo

+1

Nó không thất bại vì nó không sai. Mô-đun của bạn có thể được nhập trong ngữ cảnh trong đó 'any_random_function' được định nghĩa đúng cho lớp chuỗi dựng sẵn. –

Trả lời

5

Tôi nghĩ đặt cược tốt nhất của bạn sẽ là pylint.

2

Python là một ngôn ngữ động, vì vậy bạn không thể đơn giản kiểm tra các lỗi biên dịch như trong ngôn ngữ tĩnh (C/C++/Java). Nếu bạn chỉ định str.any_random_function, mã ở trên sẽ đúng (ví dụ đó là một ví dụ không hợp lệ ...).

Tôi khuyên bạn nên sử dụng PyDev for Eclipse tự động tìm thấy nhiều sự cố phổ biến trong mã của bạn, như thiếu chức năng/mô-đun v.v. Nó cũng hỗ trợ pylint (tùy chọn).

+0

Thật dễ dàng để một kho khóa ngẫu nhiên thêm một ký tự vào một cuộc gọi hàm. Vì vậy, nó được đề nghị để chạy pylint thông qua toàn bộ codebase hoặc có các bài kiểm tra đơn vị và bảo hiểm mã 100% để bắt rằng cuộc gọi chức năng sai? Cảm ơn bạn đã trả lời. – stacka

+0

Phải mất một thời gian để làm quen với pylint và nó có thể tạo ra nhiều thông báo (vô dụng) nếu không được định cấu hình chính xác. Dù sao, với tư cách là một kỹ sư phần mềm tốt, bạn nên luôn nhắm mục tiêu 100% phạm vi mã bằng cách sử dụng các bài kiểm tra đơn vị. Ưu điểm là chúng có thể được chạy (bán) một cách tự động - thông điệp pylint phải được người ta giải thích. – AndiDog

+0

Tôi cũng đề nghị kiểm tra đơn vị. –

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