2011-02-08 32 views
6

Có ai biết nếu có một công cụ tốt để phân tích mã JavaScript và phát hiện lỗi loại? Tôi biết rằng bản thân JavaScript yếu và được nhập động, nhưng sẽ rất tuyệt nếu tôi có thể có một chương trình xác minh rằng tất cả các truy cập trường của tôi là hợp lý và tôi không thử xử lý một số như chuỗi. Tôi biết rằng có trường hợp sử dụng hợp lệ trong JavaScript, nơi thêm hoặc xóa trường hoặc chuyển đổi giữa các loại khác nhau là hợp lệ và được mong đợi, nhưng một số lỗi rất trắng trợn dường như chúng có thể bị bắt trước khi tập lệnh bắt đầu chạy.Trình kiểm tra loại cho JavaScript?

Tôi đã nghe nói về JSLint, nhưng sự hiểu biết của tôi là nó chủ yếu là một công cụ phong cách chứ không phải là một phân tích ngữ nghĩa. Nếu tôi sai về điều này, thì chỉ cần nói với tôi như vậy sẽ là một câu trả lời hợp lệ cho câu hỏi này.

+0

Câu hỏi thú vị, nhưng tôi không chắc liệu trình kiểm tra tĩnh có khả năng xác định sử dụng không đúng cách hay không, xem xét tần suất các đặc tính động của JS được đẩy tới giới hạn của nó. Bạn có thể đưa ra ví dụ về một số "lỗi trắng trợn" không? –

+0

Ví dụ, tôi có một đối tượng được tạo với 'new MyClass()'. Lớp này chỉ có một trường được gọi là 'giá trị'. Sau đó tôi có một số phần khác của mã cố gắng đọc trường 'notAValue', không được định nghĩa trong' MyClass'. – templatetypedef

Trả lời

1

Không thể thực hiện phân tích tĩnh với sự tự tin bằng cách sử dụng bất kỳ công cụ tự động nào do tính chất động của JavaScript. Tuy nhiên, một công cụ thực hiện công việc tuyệt vời là WebStorm của Jetbrain và các IDE khác của họ có hỗ trợ JavaScript.

0

Một lựa chọn khác - https://github.com/yarax/typelint

Đây là một Plugin EsLint, điều đó không gõ kiểm tra dựa trên chú thích JSDoc.

Ngoài ra, nó hỗ trợ phần mở rộng của chính nó để sử dụng trạng thái Redux hoặc lược đồ Swagger (về cơ bản là bất kỳ lược đồ JSON nào) để kiểm tra kiểu. Vì vậy, bạn không cần phải mô tả các loại tổng hợp phức tạp của chính mình.

0

Có trình kiểm tra kiểu mới từ Facebook - flow.

Và nó có một plugin sẽ chuyển đổi chú thích JSDoc của bạn thành chú thích dòng chảy.

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