Share via


FAQ: Which Code Analysis rules shipped in which version?

In response to a lot of recent requests, we've put together a complete list of rules that shipped in the different versions of Visual Studio Code Analysis and FxCop. Attached is an Excel worksheet providing this information for Visual Studio 2005, Visual Studio 2008, FxCop 1.35 and FxCop 1.36 Beta.

One of things you'll notice as you read through the list is that we removed some rules from the later versions. There are a few reasons for this:

  • Noise and applicability. We use feedback from customers, SQM data (to see which rules users turn off), and input from internal teams (Windows, Office, CLR, etc) to determine the rules that are noisy without adding any perceivable value. There are also rules that are either no longer applicable or can no longer fire. for example, a rule could have been firing on a limitation of the CLR which has since been fixed in later versions.

  • Merged rules. Sometimes it makes sense to merge rules that fire on similar things, for example, the analysis in SecureGetObjectDataOverrides was already covered by OverrideLinkDemandsShouldBeIdenticalToBase, so these two rules were merged. Similarly, LongAcronymsShouldBePascalCased, ShortAcronymsShouldBeUppercase and IdentifiersShouldBeCasedCorrectly all fired on the casing of identifiers, and hence were merged in the later.

  • Analysis engine removed. In Visual Studio 2008 and FxCop 1.36 we removed one of our analysis engines. This engine was removed for a variety of reasons; it increased analysis time (although the engine encompassed less than 5% our analysis, it took up 50% of our time-to-analyze), indeterministic results (results appearing and disappearing between runs), and bugs found within the engine (and hence the rules that depended on it) required huge architectural changes. We instead decided to invest the resources that we would have spent on fixing the old engine, on a new data flow analysis engine based on Phoenix, which we will ship in a future version of Visual Studio.

There are also more differences between Visual Studio Code Analysis and FxCop than just the rules - in a future blog post I will cover these in detail.

CodeAnalysisRules.xls

Comments

  • Anonymous
    January 07, 2008
    The comment has been removed

  • Anonymous
    January 07, 2008
    Thanks Nicole. I wasn't aware of these changes - I'll investigate and get back to you.

  • Anonymous
    January 07, 2008
    I am using Visual Studio Pro and find out that FxCop 1.36 Beta cannot work well with it. When I try to go to source, even though a Visual Studio instance is already launched, FxCop launches another one for me. Silly! I cannot afford Visual Studio Team Suite, but could you make FxCop works better with Pro? Even open source SharpDevelop has a better connection with FxCop.

  • Anonymous
    January 09, 2008
    Michal on Small Orcas Improvement - part 2. Ed Hintz on Over 1 Billion Served. The SRL Team Blog on Working...

  • Anonymous
    January 13, 2008
    I was very sad to hear that a few beloved rules were removed from code analysis (aka FxCop) in Visual

  • Anonymous
    January 13, 2008
    Why are the maintainability and reliability rules not also part of FxCop 1.36? Other than that, it's an exact match on rules with VS2008 which is great for those of us that only have VS2008 Express or Professional editions.

  • Anonymous
    April 01, 2008
    In CodeAnalysisRules.xls, what does "Removed in data flow engine" mean?

  • Anonymous
    May 16, 2008
    Visual Studio® Team System 2008 Team Foundation Server and Team Suite VPC Image (Trial) http://www.microsoft

  • Anonymous
    May 16, 2008
    Visual Studio® Team System 2008 Team Foundation Server and Team Suite VPC Image (Trial) http://www.microsoft.com/downloads/details.aspx?FamilyID=c7a809d8-8c9f-439f-8147-948bc6957812&displaylang=en

  • Anonymous
    February 05, 2009
    [ Nacsa Sándor , 2009. január 19. – február 5.] Ez a Team System változat fejlett eszközrendszert kínál

  • Anonymous
    March 15, 2009
    The comment has been removed