[Mono-list] FxCop?

Jeroen Janssen japj@xs4all.nl
Mon, 03 Feb 2003 19:28:39 +0100

Miguel de Icaza wrote:

>Yes, you are allowed to use FxCop to improve Mono's class libraries.
>Be warned though that there are too many warnings generated that should
>be ignored, so it should not be done blindly.
I already figured that much out :)

>>If the answer is yes, then how are we going to proceed with this?
>>Do we agree with all the rules it checks, etc? Is it ok for me to run 
>>the tool on a certain assembly and start "fixing" things?
>I think we should run the tool on our assemblies and generate a set of
>settings that we are comfortable having.  
That sounds like a good idea, I think the tool allows this with regards 
to saving/loading an "exclude" set.
So we could probably define a mono 'exludes' file and have it in CVS.

>At the same time, there are
>some very simple things that we should do *anyways*, so lets post
>patches to the list and take it from there.

What do we do with the following rules (I started with Mono.PEToolkit - 
but I think starting with any assembly will result in the same general 
rules to be 'hit'):

* Assemblies are marked CLSCompliant ('Mono.PEToolkit' should have the 
CLSCompliantAttribute, and its value should be true.)

* Assemblies have strong names (Sign 'Mono.PEToolkit' with a strong name 
I think we can skip this one for now, right?

* Assemblies have version numbers (Add an AssemblyVersion attribute to 
the 'Mono.PEToolkit' assembly.)

* Exceptions do not extend System.Exception (Change 
'BadMetaDataException' to extend either ApplicationException or 

* Exceptions require multiple constructors (Add a constructor with a 
string parameter and exception parameter to custom exception 
'BadMetaDataException'. Add a protected constructor with a 
SerializationInfo object parameter and a StreamingContext object 
parameter to custom exception 'BadMetaDataException'.)

* Exceptions are marked Serializable (Add a Serializable attribute to 

That should be enough to start discussing/working on for now.
Jeroen Janssen