Wikipedia duy trì một số list of static code analysis tools cho các ngôn ngữ khác nhau (bao gồm C).
Cá nhân, tôi đã sử dụng cả hai PC-Lint
và Splint
. Lựa chọn tốt nhất tùy thuộc vào loại ứng dụng bạn đã viết. Tuy nhiên không có vấn đề mà công cụ bạn sử dụng, sẽ có một tín hiệu thấp để tiếng ồn tỷ lệ cho đến khi bạn đúng cách điều chỉnh công cụ và mã của bạn.
PC-Lint
là công cụ Lint mạnh nhất mà tôi đã sử dụng. Nếu bạn thêm nó vào một dự án hiện có, tỷ lệ tín hiệu trên nhiễu có thể thấp. Tuy nhiên, một khi công cụ và mã của bạn được cấu hình đúng, nó có thể được sử dụng như một phần của quá trình xây dựng tiêu chuẩn của bạn. Dự án lớn cuối cùng mà tôi đã sử dụng nó, chúng tôi đặt nó để cảnh báo PC-Lint
sẽ phá vỡ bản dựng. Giấy phép cho PC-Lint có giá 389 đô la, nhưng đáng giá.
Splint
là một công cụ nguồn mở tuyệt vời. Tôi đã sử dụng nó trên một số dự án, nhưng thấy rằng nó có thể được khó khăn để cấu hình khi sử dụng một trình biên dịch với không mở rộng ANSI C (ví dụ như trên các dự án hệ thống nhúng).
Valgrind
cũng đáng xem xét như một công cụ phân tích động.
Bạn đã yêu cầu phản hồi cụ thể trên SourceMonitor
. Công cụ này cung cấp các số liệu thú vị trên mã của bạn, nhưng nên được sử dụng như một bổ sung cho công cụ Lint tốt vì nó không cung cấp loại phân tích đó.
Như đã trình bày trên trang nhà của họ, SourceMonitor
sẽ:
... tìm hiểu có bao nhiêu mã bạn có và để xác định mức độ phức tạp tương đối của module của bạn. Ví dụ: bạn có thể sử dụng SourceMonitor để xác định mã có nhiều khả năng chứa lỗi nhất và do đó đảm bảo xem xét chính thức.
Tôi đã sử dụng nó trên một dự án gần đây và thấy nó dễ sử dụng (ngay cả đối với mã hệ thống nhúng). Chỉ số phức tạp là một tài nguyên tuyệt vời để phát triển mã sẽ ít bị lỗi và dễ bảo trì hơn.
SourceMonitor
cung cấp biểu đồ đẹp về đầu ra của nó cũng như XML được định dạng tốt nếu bạn muốn tự động thu thập số liệu. Nhược điểm duy nhất là công cụ này chỉ chạy trên Windows.
Nguồn
2009-07-17 19:44:47
Để mở rộng câu hỏi của tôi: Có ai đã sử dụng SourceMonitor (http://www.campwoodsw.com/sourcemonitor.html) không và bạn đánh giá như thế nào? – Josip
Bản sao của http://stackoverflow.com/questions/2873/choosing-a-static-code-analysis-tool? –