2008-10-06 31 views
17

Tôi muốn nhận ý kiến ​​từ những người đã sử dụng hoặc đánh giá Coverity để phân tích tĩnh mã Java. Tôi biết nó phổ biến trong thế giới C/C++, nhưng nó có đáng để chi tiêu tiền cho phân tích Java hay tôi tốt hơn với PMD, Findbugs và các công cụ nguồn mở khác?Độ che phủ cho phân tích tĩnh Java

Trả lời

4

Tôi sẽ liên kết với câu trả lời có liên quan. Tôi đã sử dụng Klocwork cho cả mã Java và C. Klocwork là một đối thủ cạnh tranh gần gũi của Coverity ... chi phí khôn ngoan họ là như nhau (nhìn kỹ, Klocwork trông rẻ hơn cho đến khi bạn thực sự mua những gì bạn cần), và tính năng khôn ngoan họ chiến đấu qua lại.

Đối với C/C++, thật tuyệt vời. Đối với Java .... tốt, nó đã giúp tìm thấy rất nhiều rò rỉ tài nguyên (# $ @^# ing các nhà phát triển Java dường như quên rằng các tài nguyên như xử lý tập tin không phải là rác thu thập được), nhưng nó dường như không tìm thấy nhiều " "lỗi nghiêm trọng". Có lẽ vì ngôn ngữ chính nó không giúp bảo vệ chống lại một số lỗi cơ bản hơn nhưng khó tìm thấy (mảng tràn, tham nhũng con trỏ, vv).

Nhận bảo hiểm để chạy bản trình diễn, chúng vui hơn. Xem những thứ họ tìm thấy.

15

Nếu bạn không sử dụng bất kỳ thứ gì ngày hôm nay, tôi sẽ bắt đầu với Findbugs và PMD. Chúng rất dễ cài đặt và sử dụng. Tập trung vào việc xem xét và sửa lỗi chính xác với Findbugs trước tiên - chúng khuyên bạn nên bắt đầu với các lỗi chính xác mức độ nghiêm trọng cao và trung bình vì các cờ có các xác thực sai rất thấp và bạn sẽ nhận được lợi tức tốt. Yêu cầu các nhà phát triển sử dụng PMD để dọn dẹp mã và plugin Findbugs trong Eclipse để xem lại mã mới. Làm việc từng bước sẽ giúp các nhà phát triển hiểu và mua vào tính hữu ích của các công cụ này.

Trình kiểm tra Java của Coverity vẫn còn yếu so với các trình kiểm tra C/C++ của chúng. Chúng tôi sử dụng Findbugs, PMD, Coverity và Klocwork bởi vì tất cả đều có những điểm mạnh khác nhau và chúng tôi là hoang tưởng. Nếu bạn không hoang tưởng, bạn có thể gắn bó với các công cụ nguồn mở và nhận được rất nhiều giá trị. Hoặc nếu bạn cần kiểm tra an ninh: sau đó Klocwork hoặc đặc biệt là Fortify nên làm một công việc kỹ lưỡng hơn cho bạn.

+0

bạn có so sánh các công cụ này cho Java không? –

+0

của nó đủ để sử dụng findbugs, thậm chí bao gồm sử dụng đó. kiểm tra các tính năng chính (tiêu đề phụ FindBugs) http://www.coverity.com/library/pdf/coverity-ds-java.pdf – ozhan

3

Tôi cũng sẽ thêm tôi hạn chế vào các câu trả lời trước, phần nào bị hạn chế bởi NDA bìa tôi bị ràng buộc bởi. Coverity Prevent có hồ sơ theo dõi công khai ấn tượng để tìm lỗi trong mã C/C++ nguồn mở, nhưng sản phẩm Java của họ mới hơn rất nhiều. (Coverity có một thông cáo báo chí về chủ nhân cũ của tôi, vì vậy tôi có thể nói rằng nó đã giúp tìm và sửa rất nhiều lỗi trong mã C/C++ của chúng tôi, nhiều hơn tôi đã tìm thấy trong tất cả sự nghiệp trước đây của tôi trong việc săn tìm lỗi.) FindBugs một công việc ấn tượng trên mã Java, và bạn không thể đánh bại giá cả. Nhưng điểm lớn đã được thực hiện: hãy thử cả hai số này trên mã thực sự trước khi bạn mua. Không có thay thế cho thực tế, và sự khôn ngoan thông thường trong phân tích tĩnh là có sự chồng chéo nhỏ đáng ngạc nhiên trong những gì các công cụ khám phá.

0

Như những người khác đã nói, cách tốt nhất để quyết định là thử tất cả các công cụ này.

Tính bảo mật gần đây đã công bố sản phẩm phân tích tĩnh như một dịch vụ được lưu trữ được gọi là Code Spotter(), hiện đang ở giai đoạn thử nghiệm. Nó sử dụng cùng một công cụ phân tích như sản phẩm doanh nghiệp Coverity, nhưng nó được gói trong một giao diện người dùng (đơn giản) khác. Vì đây là một dịch vụ được lưu trữ nên rất dễ chơi với nó để hiểu được khả năng phân tích Coverity.

Tại thời điểm viết bài này, Code Spotter chỉ là Java, nhưng các ngôn ngữ được hỗ trợ khác của Coverity sẽ sớm ra mắt.

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