5

Hôm qua tôi đã đăng câu hỏi ở đây (FxCop and Code Analysis Rules) về việc nhận FxCop để chạy các quy tắc tương tự như Phân tích Mã và tôi nghĩ rằng nó đã được giải quyết.Làm thế nào để có được FxCop có cùng một bộ quy tắc như của Visual Studio Mã phân tích?

Tuy nhiên, có vẻ như không có cách nào thực sự để FxCop chạy cùng một bộ quy tắc chính xác như Phân tích mã của Visual Studio 2010. Ví dụ một khi tôi đã nhận được tất cả mọi thứ làm việc với thiết lập FxCopCmd của tôi nó bắt đầu sủa về các quy tắc được biểu thị trong các quy tắc quy tắc tối thiểu được đề xuất như CA2000. Nếu tôi loại bỏ các quy tắc nó không thích nó chạy các phân tích và tất cả mọi thứ có vẻ tốt. . . ngoại trừ nó thực sự không chạy cùng một ruleset!

Điều này có vẻ hơi điên rồ đối với tôi! Có anyway để có được FxCop để phân tích chính xác cùng một bộ quy tắc mà Visual Studio Mã phân tích có thể phân tích chống lại? Có một .dll để thêm vào các quy tắc để phân tích để có được các quy tắc như CA2000 và những người khác?

Trả lời

3

Phân tích mã VS bao gồm một số quy tắc không được bao gồm trong FxCop độc lập. Bạn sẽ cần phải đảm bảo rằng các assembly quy tắc bổ sung có sẵn cho fxcopcmd.exe. Cách dễ nhất để thực hiện điều này là thay thế nội dung của thư mục FxCop xây dựng nguồn của bạn bằng các cài đặt Visual Studio của bạn vì một trong các quy tắc (DataflowRules.dll) sử dụng một công cụ phân tích không có trong FxCop độc lập hoặc, và điều đó phụ thuộc vào một loạt các hội đồng khác cũng được bao gồm trong thư mục FxCop theo hệ thống phân cấp thư mục cài đặt VS.

+0

Đó là những gì tôi nghĩ nhưng khi tôi chuyển từ gọi FxCop từ "C: \ Program Files (x86) \ Microsoft Fxcop 10.0 \ FxCopCmd.exe" thành "C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Công cụ nhóm \ Công cụ phân tích tĩnh \ FxCop \ FxCopCmd.exe "nó vẫn cuộn cảm trên các quy tắc bổ sung. Tôi cảm thấy như vậy nên làm trò lừa, đúng không? – Chris

+0

Tôi đã tìm ra vấn đề của mình, tệp dự án FxCop của tôi không đề cập đến tất cả các quy tắc dll. Tôi đã thêm tài liệu tham khảo dll vào và mọi thứ hoạt động như mong đợi. – Chris