まず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 件のコメント:
コメントを投稿