[Mono-list] [ANN] Smokey

Jesse Jones jesjones at mindspring.com
Thu Aug 23 21:13:30 EDT 2007

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  

You can download Smokey from <https://home.comcast.net/~jesse98/ 
public/smokey->. 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
* 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  
    - 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  
    - ValueHashCode, very inefficient to use the default  
    - VisibleFields, public type has non-constant public or protected  
* Added Nitpick severity level and accompanying -severity option.

   -- Jesse

More information about the Mono-list mailing list