まずVisualStudioに、拡張機能を追加する。
そして、コンソールアプリケーションを新規作成する。
using System.Diagnostics.Contracts;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int a = 3;
int b = 2;
Console.WriteLine("{0} / {1} = {2}", a, b, Program.Div(a, b));
Console.ReadLine();
}
public static int Div(int a, int b)
{
Contract.Requires(b != 0); // 入力の契約
Contract.Ensures(Contract.Result() >= 0); // 出力の契約
return a / b;
}
}
}
プロジェクトのプロパティに、見慣れないものが??
わざとb=0にしてコンパイルすると・・・
実行しなくても、ちゃんと契約違反を見つけてくれる!
面白い機能なのだが、漫坊的には採用NGの判定となった。
ExpressEditionでビルドができて、MSBuildで自動化ができるようになったら、再び検討してみるつもりである。
わざとb=0にしてコンパイルすると・・・
static void Main(string[] args)
{
int a = 3;
int b = 0;
Console.WriteLine("{0} / {1} = {2}", a, b, Program.Div(a, b));
Console.ReadLine();
}
実行しなくても、ちゃんと契約違反を見つけてくれる!
面白い機能なのだが、漫坊的には採用NGの判定となった。
- ExpressEditionでコンパイルできない
べつに拡張機能が使えるようにしろよ、とか言うつもりはないが、開発関係者全員がプロ版を使えるわけではないので、これは痛い。
ソースの関連行が無効になってくれたらよいのだが。 - 重い
こんな小さなソースでも、7秒くらいかかる。まるでVS2012のWPFデバッグ開始みたいだ。とても毎回実行したいと思わない。
ExpressEditionでビルドができて、MSBuildで自動化ができるようになったら、再び検討してみるつもりである。



0 件のコメント:
コメントを投稿