Visual Studio 2010 Premiumには契約ツールが含まれていますか?
-
05-07-2019 - |
質問
この機能マトリックスによると、Visual Studio 2010 Premium(RC)には「静的コード分析」が含まれています。
ただし、メソッドの開始時に Contract.Requires
の呼び出しを追加しても効果はないようです。契約に違反しても実行時例外は発生しません。契約を証明できない場合、コンパイラの警告は表示されません。また、「コード契約」も見つかりません。プロジェクト設定のタブ。
明らかなものが足りないのですか、この機能はUltimateエディションでのみ利用できますか?
解決
コードコントラクトがVS2010のベータ2に付属するフレームワークに含まれているかどうか、またはVS2010自体にさえ含まれているかどうかについて、確かに混乱があるようです。 Code Contractsフォーラム(および特に this 投稿)にはいくつかの言及がありますこれはまだ答えがありません。
コードコントラクトが静的コード分析の見出しに該当するとは思わない。静的コード分析は、FxCopのような他のコード分析ツールを指すと思います。
VS2010 beta 2 Ultimate Editionで Contract.Requires
を使用しようとしましたが、同じ動作をします。 [コード分析]タブのプロジェクトプロパティを見ると、コード分析を有効にできますが、これはコードコントラクトとは関係ありません。
接続記事 Professional Editionでデータコントラクトの静的チェックを使用可能にする:
...しかし、静的解析ツールの制限はこの次のリリースを意味します。静的分析ツールにはVSTSが必要なため、コード分析のストーリーの一貫性が保たれます。
これは、コードコントラクトのコンパイル時バージョンを取得するには、チームシステムバージョンが必要であることを示唆しています。
他のヒント
ベータ2で静的分析を取得するには、 MSDN DevLabs 。次に、プロジェクトプロパティの下に[コードコントラクト]タブがあります。ここから静的分析を有効にできます...
表示されている動作は、コードコントラクトAPIがmscorlibアセンブリに含まれているためです。
RTMはこれを必要としないと考えています。
プロジェクトのプロパティでコードコントラクトのランタイムチェックをオンにする必要があります。その設定ペインが存在しない場合は、MicrosoftからダウンロードしたCode Contractsをインストールする必要があります(Contract.Requiresがフレームワークに存在するという事実にもかかわらず)。
Professionalエディションでは、ランタイムチェックのみが利用可能です。