Est-il un moyen d'indiquer à ReSharper qu'une référence null n'a pas lieu en raison de la Conception par Contrat Requiert la vérification? Par exemple, le code suivant va augmenter l'avertissement (Possible 'null' assignment to entity marked with 'NotNull' attribute
) dans ReSharper sur les lignes 7 et 8:
private Dictionary<string, string> _Lookup = new Dictionary<string, string>();
public void Foo(string s)
{
Contract.Requires(!String.IsNullOrEmpty(s));
if (_Lookup.ContainsKey(s))
_Lookup.Remove(s);
}
Ce qui est vraiment bizarre c'est que si vous supprimez l' Contract.Requires(...)
de la ligne, la ReSharper message disparaît.
Mise à jour
J'ai trouvé la solution grâce à ExternalAnnotations qui a également été mentionné par Mike ci-dessous. Voici un exemple de comment le faire pour une fonction dans Microsoft.Les contrats:
- Créez un répertoire appelé
Microsoft.Contracts
sous l'ExternalAnnotations
ReSharper répertoire. - Ensuite, Créez un fichier appelé
Microsoft.Contracts.xml
et remplir comme suit:
<assembly name="Microsoft.Contracts">
<member name="M:System.Diagnostics.Contracts.Contract.Requires(System.Boolean)">
<attribute ctor="M:JetBrains.Annotations.AssertionMethodAttribute.#ctor"/>
<parameter name="condition">
<attribute ctor="M:JetBrains.Annotations.AssertionConditionAttribute.#ctor(JetBrains.Annotations.AssertionConditionType)">
<argument>0</argument>
</attribute>
</parameter>
</member>
</assembly>
- Redémarrez Visual Studio, et le message disparaît!