Simplified FxCop Report XML

XSL authors out there have surely noticed that FxCop's report XML is extremely hierarchical and has relationships expressed in it that aren't relevant to most presentation purposes. So, we've simplified the XML greatly. Here's a breakdown of how targets are represented

<Targets>
<Target>
 <Modules>
  <Module>
  <Namespaces>
   <Namespace>
   <Types>
    <Type>
    <Members>
     <Member>
     <Accessors>
      <Accessor>

Note that messages are no longer associated with Targets, as we've ripped Assembly level checks (there are now only Module checks). All types, no matter whether they are interfaces, enums or other structs, delegates or other reference classes, are now represented as types. All nested types are represented at the namespace root of the topmost container type. All members, whether constructors, methods, fields, events, or properties are represented at the Member type, with the exception of Property and Event accessors, which are found at the Accessors level of their associated member.

In addition to the above, all report targets will have additional attributes applied to their roots that describe Kind (interface, struct, enum, delegate, class, method, property, field, event, etc), Accessibility (public, protected, etc), and whether the item is ExternallyVisible (that is, it can be 'seen' or consumed by code that exists in a separate assembly). We also indicate whether a member is Static.

We've written migration code that will rewrite all 1.30 projects to conform to the new XML format. We will also update our XSL and XSD, of course.

Comments or questions are welcome,