私はコードコントラクトについて読んでいます。これは一見かなり革命的であるように見えますが、それらを機能させることができないようです。Windows8とVisualStudio2012 Premium(両方のリリースバージョン)を実行しています。次に、[コードコントラクトのダウンロード]リンクをクリックして、ここからコードコントラクトをインストールしました。
次に、新しいコンソールアプリで次のコードを記述しました。
class Program
{
static void Main(string[] args)
{
var answer = Add(0, 5);
Console.Write(answer);
Console.ReadLine();
}
static int Add(int x, int y)
{
Contract.Requires(x > 0 && y > 0);
return x + y;
}
}
の最初のパラメータが0であるため、コンパイルが失敗することを期待していますAdd
が、プログラムは成功し、5をコンソールに出力します。
私はデフォルトのコードコントラクト設定を試してみましたが、少しも無駄になっています。私の現在の設定は次のようになります。
私が間違っていることについて何か考えはありますか?
アップデート:
ビルドウィンドウの結果は次のとおりです。何かをしているように見えますが、エラーではなく警告を発しているだけです。私が見たビデオでは、これらのものはコンパイルエラーとしてフラグが立てられ、プログラムは実行されませんでした。
1>------ Build started: Project: DeleteMe, Configuration: Debug Any CPU ------
1> DeleteMe -> c:\users\mike\documents\visual studio 2012\Projects\DeleteMe\DeleteMe\bin\Debug\DeleteMe.exe
1> CodeContracts: Task manager is unavailable.
1> CodeContracts: DeleteMe: Run static contract analysis.
1> CodeContracts: Suggested requires: Contract.Requires(false);
1> CodeContracts: DeleteMe: Validated: 0.0 %
1> CodeContracts: DeleteMe: Contract density: 0.87
1> CodeContracts: DeleteMe: Total methods analyzed 4
1> CodeContracts: DeleteMe: Methods with 0 warnings 3
1> CodeContracts: DeleteMe: Total time 4.974sec. 1243ms/method
1> CodeContracts: DeleteMe: Methods with necessary preconditions: 1
1> CodeContracts: DeleteMe: Discovered 1 new candidate preconditions in 00:00:00.1718843
1> CodeContracts: DeleteMe: Retained 1 preconditions after filtering
1> CodeContracts: DeleteMe: Inferred 0 object invariants
1> CodeContracts: DeleteMe: Retained 0 object invariants after filtering
1> CodeContracts: DeleteMe: Detected 0 code fixes
1> CodeContracts: DeleteMe: Proof obligations with a code fix: 0
1>c:\Users\Mike\Documents\Visual Studio 2012\Projects\DeleteMe\DeleteMe\Program.cs(14,10,14,33): warning : CodeContracts: requires is false: x > 0 && y > 0
1>c:\Users\Mike\Documents\Visual Studio 2012\Projects\DeleteMe\DeleteMe\Program.cs(22,10,22,44): warning : CodeContracts: location related to previous warning
1> CodeContracts: Checked 1 assertion: 1 false
1> CodeContracts: DeleteMe:
1> CodeContracts: DeleteMe: Static contract analysis done.
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========