Smokey is a command line tool used to analyze assemblies and report problems. Problems include buggy code (e.g. infinite recursion, null deref, malformed format string), performance issues (e.g. string concatenation in loops, excessive boxing, large structs), violations of the .NET design guidelines (e.g. inheriting from ApplicationException or ICloneable, naming, and swallowing exceptions), and miscellaneous rules like misspelled words in string literals.
You can download Smokey from <https://home.comcast.net/~jesse98/ public/smokey-0.4.0.0.tar.gz>. There's also a sample report at <https://home.comcast.net/~jesse98/public/System.Xml.dll.txt> for a 1.2.5 candidate release 5 assembly. Note that Smokey found a few serious errors as well as a host of lesser problems: * An infinitely recursive property. * Two clear cases of null being dereferenced along with two more cases which may or may not be problematic. Changes from Smokey 0.3.0.0: * Smoking assemblies is now over 13x faster. Smokey should also scale better as new rules are added. * The Dataflow class has been completely rewritten and is now reusable, much faster, more correct, and easier to understand. * Added some new rules: - AttributesNeedUsage, attribute was defined without an AttributeUsage - ConsistentEquality, equals methods and GetHashCode need to match - ReservedExceptions, can't throw a handful of exceptions reserved by CLR - StructOverrides, structs should override both Equals and GetHashCode - ValueHashCode, very inefficient to use the default ValueType::GetHashCode - VisibleFields, public type has non-constant public or protected fields * Added Nitpick severity level and accompanying -severity option. -- Jesse _______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list
