Microsoft.Contracts
От: Flem1234  
Дата: 04.10.10 15:36
Оценка:
Пробую использовать это чудо в проекте:

Contract.Requires(gates != null);
Contract.Requires(Contract.ForAll(gates, gate => gate != null));
...
 foreach (var gate in gates)
                gate.PrepareForRecognize(operations);


Warning    23    contracts: Possibly calling a method on a null reference 'gate'


Кто-нибудь реально работал с ним, как его утихомирить? Сейчас просто отключил статическую проверку.
Re: Microsoft.Contracts
От: Sinix  
Дата: 04.10.10 16:12
Оценка: 12 (2)
Здравствуйте, Flem1234, Вы писали:

F>Кто-нибудь реально работал с ним, как его утихомирить? Сейчас просто отключил статическую проверку.

Очевидно, gates — нестандартная коллекция и Static Analysis думает, что IEnumerator (который создаётся в foreach) может быть null. Выделили бы строчку на которую ругается — подсказал бы точнее.

1) Выключите implicit not-null obligations
2) Если у вас версия младше 1.4.30909.0 — обновитесь.

И да, до RTM-а я бы ограничился только статическим анализом. Нужные ассерты можно реализовать самостоятельно. Пометите ContractArgumentValidatorAttribute (читаем юзердок [pdf]) — будут учитываться CC.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.