Tùy thuộc vào ý bạn bằng cách "chứng minh thuộc tính". Theo như tôi biết, có rất nhiều công cụ phân tích tĩnh để kiểm tra các thuộc tính đơn giản của các chương trình C, và chúng thay đổi rộng rãi về tính biểu cảm, dễ sử dụng, độ phân tích, vv. Chúng thường được sử dụng để kiểm tra các chương trình đó các lỗi thời gian chạy, nhưng không phải là rất tốt để kiểm tra các đặc tả chức năng đầy đủ. Đối với loại tài sản này, bạn có thể phải sử dụng một trình giải mã mạnh mẽ hơn yêu cầu bạn viết bằng chứng một cách thủ công, thay vì tự động kiểm tra một bằng chứng.
Vì bạn đề cập đến Coq, tôi muốn giới thiệu cho bạn hai công cụ dựa trên Coq để xác minh chương trình C (chúng không hoạt động với C++): trên danh mục thứ hai, có Verified Software Toolchain, lý luận về các chương trình C được nhúng bên trong Coq. Bạn có thể sử dụng nó để viết bằng chứng về hành vi của chương trình của bạn và có Coq kiểm tra chúng, bao gồm hiển thị rằng một chương trình đáp ứng đặc tả chức năng của nó. Trên danh mục cũ, có Verasco, một công cụ phân tích tĩnh tự động kiểm tra chương trình của bạn nếu không có lỗi thời gian chạy. Một tính năng thú vị của các công cụ này là chúng là các chương trình được xác minh, ngụ ý rằng bạn có thể có thêm mức độ tin cậy trong các phân tích mà chúng phân phối.
Các công cụ thú vị khác bao gồm Frama-C, như đã đề cập trong nhận xét ở trên và VCC, một máy phân tích tĩnh của Microsoft. Tuy nhiên, chúng không hoạt động với C++.
Nguồn
2014-12-14 20:20:16
Đối với C, có [Frama-C] (http://frama-c.com/), cố gắng giải thích về hành vi của một chương trình. Nếu mã thuật toán mã của bạn tương thích với/compilable như C, bạn có thể sử dụng nó. –