FxCop 不尊重我的排除

Posted

技术标签:

【中文标题】FxCop 不尊重我的排除【英文标题】:FxCop is not respecting my excludes 【发布时间】:2010-09-18 16:35:26 【问题描述】:

我正在尝试将 FxCop 直接合并到我的构建中。我正在使用 MSBuild 社区任务。我有一个这样的目标文件:

<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>

它工作得很好,除了当我添加 [SuppressMessage] 警告时,它们仍然显示在我的输出中。我创建了一个 .fxcop 项目文件并包含输出程序集并尝试以这种方式运行它,但同样的事情发生了。 FxCop 似乎不尊重我的压制,有什么想法吗?

这是一个无效的抑制示例 (GlobalSuppressions.cs):

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

由 fxcop 工具生成。有什么想法吗?

【问题讨论】:

【参考方案1】:

您是否在项目的条件编译符号中添加了 CODE_ANALYSIS 符号?

【讨论】:

以上是关于FxCop 不尊重我的排除的主要内容,如果未能解决你的问题,请参考以下文章

从 FxCop 代码分析中排除完整的命名空间?

通过命令行从 FXCop 中排除规则

自动生成项目时如何在源中排除 FxCop?

vs 代码分析工具——FxCop analyzers & nuget 包 排除

使用 FxcopIntegrator 时排除类/方法

汇总不排除排除的包