7

Theo this feature matrix, Visual Studio 2010 Premium (RC) bao gồm "phân tích mã tĩnh".Visual studio 2010 Premium có bao gồm các công cụ hợp đồng không?

Tuy nhiên, việc thêm cuộc gọi vào Contract.Requires khi bắt đầu các phương pháp của tôi dường như không có bất kỳ ảnh hưởng nào. Tôi không nhận được ngoại lệ thời gian chạy nếu hợp đồng bị vi phạm. Tôi không nhận được cảnh báo trình biên dịch nếu một hợp đồng không thể được chứng minh. Tôi cũng không thể tìm thấy tab "Hợp đồng mã" trong cài đặt dự án.

Tôi có thiếu điều gì đó hiển nhiên hoặc tính năng này chỉ có sẵn trong ấn bản Ultimate không?

Trả lời

3

Có thực sự có vẻ là một số nhầm lẫn về việc có hay không Hợp đồng mã được bao gồm trong khuôn khổ đi kèm với bản beta 2 của VS2010, hoặc thậm chí trong bản thân VS2010. Các Code Contracts forum (và expecially this bài) có một số đề cập về điều này mà không có câu trả lời nào được nêu ra.


Tôi không nghĩ rằng Hợp đồng mã nằm trong nhóm phân tích mã tĩnh. Tôi nghĩ rằng phân tích mã tĩnh đề cập đến các công cụ phân tích mã khác như FxCop.

Tôi đã thử sử dụng Contract.Requires trong ấn bản cuối cùng phiên bản beta 2 VS2010 2, nhưng tôi nhận được hành vi tương tự như bạn. Nếu bạn nhìn vào các thuộc tính của dự án trong tab Phân tích mã, bạn có thể bật phân tích mã, nhưng điều này không liên quan đến các hợp đồng mã.

Theo nhận xét của Melitta (từ Base Class Libraries Team) về bài viết connect Make data contract static checking available in Professional Edition:

... nhưng hạn chế về công cụ phân tích tĩnh là viết tắt của phiên bản sắp tới này. Nó giữ cho câu chuyện phân tích mã nhất quán, trong đó các công cụ phân tích tĩnh yêu cầu VSTS.

Điều này cho thấy rằng bạn (sẽ) phải có phiên bản hệ thống nhóm để lấy phiên bản biên dịch của Hợp đồng mã.

+0

Thậm chí còn có "phiên bản nhóm" nữa trong vs2010 không? Ma trận tính năng không hiển thị nó. –

+1

Tôi nghĩ rằng các phiên bản Hệ thống nhóm biến thành phiên bản Ultimate của năm 2010 (http://www.microsoft.com/visualstudio/en-gb/products/msdn/default.mspx#roadmap) – adrianbanks

1

Bạn cần bật kiểm tra thời gian chạy hợp đồng mã trong thuộc tính dự án. Nếu cửa sổ thiết lập đó không tồn tại thì bạn cần phải cài đặt bản tải xuống Code Contracts từ Microsoft (mặc dù thực tế là Contract.Requires tồn tại trong khung công tác).

Chỉ kiểm tra thời gian chạy có sẵn trong ấn bản Professional.

3

Để phân tích tĩnh trong bản Beta 2, bạn phải tải xuống và cài đặt các bit Hợp đồng mã (1.2.21023.14 hoặc cao hơn) từ MSDN DevLabs. Sau đó, dưới thuộc tính dự án, bây giờ sẽ có tab Hợp đồng mã ... từ đây bạn có thể bật phân tích tĩnh ...

Hành vi bạn thấy là vì API hợp đồng mã nằm trong hội đồng mscorlib, cho phép khẳng định để làm việc, nhưng không có gì khác.

Tôi giả định điều này sẽ không cần thiết bởi RTM.

+0

Thật không may, điều này có vẻ như nó vẫn không làm việc trong RTM. MS làm hỏng cái này. Bạn có thể đặt trong Contracts.Requires, nhưng phép thuật không thực sự xảy ra cho đến khi bạn tải xuống các công cụ CodeContracts. –

Các vấn đề liên quan