[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 
key.)
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 
SystemException.)

* 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 
'BadMetaDataException'.)

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