2010-02-10 5 views
6

Có cách nào để FxCop phân tích mã C++ không được quản lý không? Đặt cờ/clr cho phép FxCop mở .exe. Nó tìm thấy rất nhiều mục C++, nhưng phân tích trên mã rất yếu. Ví dụ, đoạn mã sau đã bị bỏ qua:FxCop (hoặc tương đương) đối với mã Non -.Net C++


int i=0; 
if (i=2) printf("Don't worry..everything will be okay."); 

Tôi muốn một công cụ có thể bắt i=2 và cảnh báo rằng nó phải được i==2. Bất kỳ lời khuyên nào về việc đưa FxCop trở nên kỹ lưỡng hơn hoặc một công cụ khác mà những người khác thấy hữu ích?

Trả lời

4

MSVC (ít nhất VC9/VS2008) đã cảnh báo về ví dụ cụ thể của bạn:

warning C4706: assignment within conditional expression 

(Oops:. Tôi chỉ nhận ra rằng tôi có các cài đặt các dự án thử nghiệm của tôi cranked lên đến Báo động cấp 4 -/W4 MSVC không đưa ra cảnh báo này ở cài đặt mặc định). Vì vậy, thiết lập các thiết lập dự án đến/W4 và nhận được nhiều chẩn đoán hơn (hy vọng không có quá nhiều tiếng ồn).

Tôi thấy các cảnh báo trong VC9 khá tốt và bạn có thể dễ dàng đặt trình biên dịch để xử lý chúng dưới dạng lỗi nếu bạn muốn ép buộc sự cố.

Phiên bản Team Server của Visual Studio chứa hỗ trợ cho PREfast - công cụ phân tích tĩnh của Microsoft (tùy chọn trong Phân tích mã nâng cao/kích hoạt của C++ cho C/C++). Bạn cũng có thể nhận được các công cụ trong Windows Driver Kit và/hoặc Windows SDK, mặc dù tôi không thể xác minh cho các hướng dẫn trên nhận được/phiên bản SDK WDK tích hợp vào Visual Studio:

Một số thay thế khác (không miễn phí) là Gimpel's PC-Lint product.

0

chúng tôi sử dụng trang bìa, không miễn phí nhưng công cụ phân tích tĩnh tuyệt vời