ReSharper Code Inspection Additions
c#, resharper, static-analysis
Solution
Per Daniel's suggestion, resharper supports a good deal of annotations to assist with inspection.
Specifically, via the documentation what we're looking for here is something like:
[ContractAnnotation("d:null => false")]
static public bool IsValid(double? d)
{
return d != null && IsValid(d.Value);
}
Which does the trick perfectly, and the static check works beautifully.
Love that resharper!
Problem
Is it possible to extend resharper code inspection/annotations to handle cases you know staticly are correct? For example, I have utility function I know satisfy certain conditions, such as: ``` static public bool IsValid(double? d) { return d != null && IsValid(d.Value); } static public bool IsValid(double d) { return !Double.IsNaN(d) && !Double.IsInfinity(d); } ``` So this ensures a nullable has a value, and I'd like the "Possible System.InvalidOperationException" inspection not to fire for something like: ``` if (Utils.IsValid(nullableValue)) { DoSomethingWith(nullableValue.Value); } ``` Sure I could suppress the inspection/etc, but is it possible to extend the static typing to indicate that this would actually ensure the value is non-nullable? (I suppose a related but overly general question is should I be using another static typing check instead of resharper that might handle it, but I won't ask for fear of being overly broad!)