Code Analysis
Memory for managed code is handled by the garbage collector, but if you use any kind of unmanaged code, like native resources of any kind, open files, streams and window handles, your application may leak memory if these are not properly handled. To handle such resources the classes that own these in your application should implement the IDisposable interface, and preferably implement it according to the pattern described for that interface. When you suspect a memory leak, the immediate impulse would...
There have been several reports on problems with the Static Code Analysis (SCA) not adhering to the statements of the Code Contract tools. See these links: connect, forum1, forum2. The problem can be shown in the following code snippet: Code Problem: public int FindLength1(string something) { Contract.Requires(something != null); return something.Length; } Running a Code Analysis gives a CA1062 warning (note: use a ruleset which enables this warning) saying: Warning 5 CA1062 : Microsoft.Design :...
In Visual Studio the settings for static analysis is done on the project property page, a tab called Code Analysis. You can set which code analysis rules you want to be active. The default in Visual Studio 2008 is to use all. If you run with this default setting you will generate a lot of "noise", since there are a large set of rules. You need to create a set containing the rules you and your team find are suitable for your organization and project. This set you have to apply to every C# project...
When I do either Code Analysis, Code Metrics or looking at Code Coverage results, I don't want to have any generated code affecting the results. It just confuses the numbers, and I do not really care how generated code looks - it should just be invisible. Generated code appears several places, code is generated by any of the multitude of wizards and designers in Visual Studio, or it may be generated by a 3rd part tool or generated by a self-written tool. There exist an attribute which, if attached...