2010-09-18 31 views
4

J'essaie d'incorporer FxCop directement dans ma construction. J'utilise les tâches de la communauté MSBuild. J'ai des objectifs fichier comme ceci:FxCop ne respecte pas mes exclus

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <PropertyGroup> 
     <FxCopToolPath Condition="'$(FxCopToolPath)' == ''">$(MetaSharpLibPath)\FxCop</FxCopToolPath> 
     <FxCopCustomDictionary Condition="'$(FxCopCustomDictionary)' == ''">$(FxCopTooLPath)\CustomDictionary.xml</FxCopCustomDictionary> 

     <MSBuildCommunityTasksLib>..\MSBuild.Community.Tasks\MSBuild.Community.Tasks.dll</MSBuildCommunityTasksLib> 
    </PropertyGroup> 

    <UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.FxCop" /> 

    <Target Name="AfterBuild" > 

     <ItemGroup> 
      <FxCopRuleAssemblies Include="DesignRules.dll" /> 
      <FxCopRuleAssemblies Include="GlobalizationRules.dll" /> 
      <FxCopRuleAssemblies Include="InteroperabilityRules.dll" /> 
      <FxCopRuleAssemblies Include="MobilityRules.dll" /> 
      <FxCopRuleAssemblies Include="NamingRules.dll" /> 
      <FxCopRuleAssemblies Include="PerformanceRules.dll" /> 
      <FxCopRuleAssemblies Include="PortabilityRules.dll" /> 
      <FxCopRuleAssemblies Include="SecurityRules.dll" /> 
      <FxCopRuleAssemblies Include="SecurityTransparencyRules.dll" /> 
      <FxCopRuleAssemblies Include="UsageRules.dll" /> 

      <FxCopTargetAssembly Include="@(MainAssembly)" /> 
     </ItemGroup> 

     <FxCop 
      ToolPath="$(FxCopToolPath)" 
      CustomDictionary="$(FxCopCustomDictionary)" 
      RuleLibraries="@(FxCopRuleAssemblies)" 
      TargetAssemblies="@(FxCopTargetAssembly)" 
      DependencyDirectories="@(ReferencePath)" 
      FailOnError="True" 
      ConsoleXslFileName="$(FxCopToolPath)\Xml\VSConsoleOutput.xsl" 
      DirectOutputToConsole="true" /> 

    </Target> 

</Project> 

Il fonctionne très bien, sauf que j'ajoute [SuppressMessage] avertissements qu'ils montrent des signes encore dans ma sortie. J'ai créé un fichier de projet .fxcop et inclus l'assemblage de sortie et essayé de l'exécuter de cette façon mais la même chose arrive. Il semble que FxCop ne respecte pas mes suppressions, des idées?

Voici un exemple d'une suppression qui ne fonctionne pas (GlobalSuppressions.cs):

[module: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "MetaSharp.Transformation.Lang")] 

Ce qui a été généré par l'outil de FxCop. Des idées?

Répondre

8

Avez-vous ajouté le symbole CODE_ANALYSIS aux symboles de compilation conditionnelle de votre projet?