2009-06-15 8 views
13

Có ai thực hiện bất kỳ so sánh nào trên các công cụ phân tích mã tĩnh có sẵn cho Linux không?So sánh các công cụ phân tích mã tĩnh trong Linux?

  • Lintian,
  • thưa thớt,
  • Splint,
  • RATS,
  • Sử dụng tùy chọn -Wall: những điểm mạnh và điểm yếu của công cụ sau đây là gì.

Bạn có nghĩ rằng chỉ sử dụng một trong những công cụ này là đủ?

Tôi không tìm kiếm các đề xuất (tôi có thể tìm thấy nhiều đề xuất đó) nhưng so sánh trực tiếp giữa các công cụ có sẵn.

Trả lời

6

Có tất nhiên là wikipedia list. Danh sách đó chỉ là danh sách và không so sánh, nhưng một trong số the links trên trang dường như ít nhất là trả lời một phần câu hỏi của bạn và (rất ngắn) đề cập đến một vài chương trình bạn đã liệt kê.

4

Sử dụng -Bất kỳ phải là vấn đề đối với mọi nhà phát triển c. Ngoài ra, sử dụng thêm -Wextra có thể là một ý tưởng tốt.

Nẹp có thể tìm thấy các điểm yếu tiềm ẩn khác trong ứng dụng của bạn nhưng trong hầu hết các trường hợp (!) Nó in cảnh báo sai, do đó bạn phải thực sự hiểu ý nghĩa của những gì bạn muốn chèn chú thích như/ra/hoặc/không sử dụng/trong mã của bạn để nẹp không kêu lên bạn. Với nẹp, bạn nên lọc ra các cảnh báo không quan trọng đối với bạn, nếu không bạn đã dành quá nhiều thời gian để phân tích và cuộn qua nhiều thư.

Lưu ý rằng các công cụ này chỉ thực hiện kiểm tra mã tĩnh. Bạn nên sử dụng valgrind để tìm rò rỉ bộ nhớ thời gian chạy.

+0

Vâng, tôi có kinh nghiệm về các trình kiểm tra tĩnh trong thế giới Windows vì vậy tôi nhận thức được vấn đề về các mặt tích cực sai. – Makis

3

Tôi đã sử dụng nẹp vài lần và thấy nó quá dài: Tôi tắt hầu hết các cảnh báo. Tôi nghĩ rằng công cụ này có thể cung cấp kết quả thú vị nếu bạn chú thích chính xác mã của mình. Nếu không có mã chú thích, công cụ này không hữu ích.

Đôi khi tôi sử dụng thưa thớt và coi đó là công cụ có giá trị. Nó cung cấp một trình bao bọc xung quanh gcc, được gọi là "cgcc". Kết quả là, đơn giản để chạy thưa thớt trên một chương trình ngay cả khi nó chứa nhiều tệp nguồn (export CC=cgcc và voilà). Chương trình này hoạt động tốt nhất nếu bạn đang phân tích Mã nguồn hạt nhân.

Là một phụ trang, tôi cũng sử dụng pmccabe một cách thường xuyên. pmccabe không phải là một phân tích tĩnh : nó tính toán độ phức tạp chu kỳ. Nó có thể giúp bạn tìm các chức năng phức tạp nhất trong chương trình của bạn. Các chức năng đó là có khả năng bị lỗi và khó kiểm tra.