• Hooks for mutation testing apply usual transforms to do mutation testing to the MSIL bodies.
  • Assertion message rewritting take the expression inside an Assert.IsTrue(expr) and pretty assertion message automatically. For example, by generating a pretty format string where the actual values would be inserted.
     Assert.IsTrue(x != y); 

    // rewritten
    var _x = x;
    var _y = y;
    Assert.IsTrue(_x != _y, "{0} != {1}", _x, _y); // Assert.IsTrue(bool condition, string formatString, params object[] args);
  • Injection of parameter null-checks: inject null-checks for all parameters unless specifically allowed, through simple name matching or attribute.
    void Foo([NotNull]Bar bar) { ...}

    // rewritten
    void Foo(Bar bar) {
        Contract.Requires(bar != null);
  • IPropertyNotifyChange implementation: automatically inline the boiler plate code to implement this interface:
int Foo {get; set;}

// rewritten
int Foo { get; // unchange
      // implement IPropertyNotifyChanged for this property
  • Assembly Rebinding: Automatically rebind an assembly to a different version of the CLR, without recompiling.
  • Desktop2Silverlight: rebind a desktop .NET applicatioin to the Silverlight .NET runtime, flag missing APIs along the way.
  • Inlined Methods: in the MSIL of a method body on every call site. Very cool F# feature.

Last edited Dec 11, 2009 at 5:07 AM by pelikhan, version 3


No comments yet.