Usage warnings support proper usage of the .NET Framework.
Attribute string literals should parse correctly
Call base class methods on ISerializable types
Call GC.SuppressFinalize correctly
Collection properties should be read only
Disposable fields should be disposed
Disposable types should declare finalizer
Do not call overridable methods in constructors
Do not decrease inherited member visibility
Do not ignore method results
Do not mark enums with FlagsAttribute
Do not mark serviced components with WebMethod
Do not raise exceptions in exception clauses
Do not raise reserved exception types
Do not ship unreleased resource formats
Finalizers should be protected
Finalizers should call base class finalizer
Implement ISerializable correctly
Implement serialization constructors
Implement serialization methods correctly
Initialize value type static fields inline
Instantiate argument exceptions correctly
Mark all non-serializable fields
Mark ISerializable types with SerializableAttribute
Mark Windows Forms entry points with STAThread
Members should differ by more than return type
Non-constant fields should not be visible
Operations should not overflow
Operator overloads have named alternates
Operators should have symmetrical overloads
Override equals on overloading operator equals
Override GetHashCode on overriding Equals
Overload operator equals on overriding ValueType.Equals
Pass System.Uri objects instead of strings
Provide deserialization methods for optional fields
Rethrow to preserve stack details
Review unused parameters
Test for NaN correctly
Use managed equivalents of Win32 API
Use params for variable arguments