Fugue  Protocol checking for .NET code

Have you ever wished you could specify properties in your code that go beyond the type system of the language you are using? You may for example wish to specify that some parameter should never be null, and have the type checker complain about any caller that does not guarantee that.

Well, so did we and the result is the Fugue checker.

Fugue is a protocol checking tool from Microsoft Research, which allows many of the rules for using a managed API to be recorded as custom attributes. Fugue checks both that client code obeys the rules and that the class's implementation is consistent with its rules. The checker works over compiled assemblies (.dll and .exe) and is appropriate for managed code in any .NET language (C#, VB, or MC++).

Fugue is now available to download for non-commercial use.