The FxCop task provides a basic wrapper over FxCopCmd.exe. See http://msdn.microsoft.com/en-gb/library/bb429449(VS.80).aspx for more details.

Valid TaskActions are:

Analyse (Required: Project or Files, OutputFile Optional: DependencyDirectories, Imports, Rules, ShowSummary, UpdateProject, Verbose, UpdateProject, LogToConsole, Types, FxCopPath, ReportXsl, OutputFile, ConsoleXsl, Project Output: AnalysisFailed, OutputText)

Remote Execution Support: NA

Namespace:  MSBuild.ExtensionPack.CodeQuality
Assembly:  MSBuild.ExtensionPack (in MSBuild.ExtensionPack.dll) Version: 3.5.0.0 (3.5.1.0)

Examples

CopyXML
<Project ToolsVersion="3.5" DefaultTargets="Default" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <TPath>$(MSBuildProjectDirectory)\..\MSBuild.ExtensionPack.tasks</TPath>
        <TPath Condition="Exists('$(MSBuildProjectDirectory)\..\..\Common\MSBuild.ExtensionPack.tasks')">$(MSBuildProjectDirectory)\..\..\Common\MSBuild.ExtensionPack.tasks</TPath>
    </PropertyGroup>
    <Import Project="$(TPath)"/>
    <ItemGroup>
        <!--- Need to add to the dependencies because MSBuild.ExtensionPack.CodeQuality.StyleCop.dll references StyleCop -->
        <DependencyDirectories Include="c:\Program Files (x86)\MSBuild\Microsoft\StyleCop\v4.3"/>
        <!-- Define a bespoke set of rules to run. Prefix the Rules path with ! to treat warnings as errors -->
        <Rules Include="c:\Program Files (x86)\Microsoft FxCop 1.36\Rules\DesignRules.dll"/>
        <Files Include="C:\Projects\CodePlex\MSBuildExtensionPack\Solutions\Main3.5\BuildBinaries\MSBuild.ExtensionPack.CodeQuality.StyleCop.dll"/>
    </ItemGroup>
    <Target Name="Default">
        <!-- Call the task using a collection of files and all default rules -->
        <MSBuild.ExtensionPack.CodeQuality.FxCop TaskAction="Analyse" Files="@(Files)" OutputFile="c:\fxcoplog1.txt">
            <Output TaskParameter="AnalysisFailed" PropertyName="Result"/>
        </MSBuild.ExtensionPack.CodeQuality.FxCop>
        <Message Text="CA1 Failed: $(Result)"/>
        <!-- Call the task using a project file -->        
        <MSBuild.ExtensionPack.CodeQuality.FxCop TaskAction="Analyse" Project="c:\Projects\CodePlex\MSBuildExtensionPack\Solutions\Main3.5\MSBuildFramework\XmlSamples\FXCop.FxCop" DependencyDirectories="@(DependencyDirectories)" OutputFile="c:\fxcoplog2.txt">
            <Output TaskParameter="AnalysisFailed" PropertyName="Result"/>            
        </MSBuild.ExtensionPack.CodeQuality.FxCop>
        <Message Text="CA2 Failed: $(Result)"/>
        <!-- Call the task using a collection of files and bespoke rules. We can access the exact failure message using OutputText -->
        <MSBuild.ExtensionPack.CodeQuality.FxCop TaskAction="Analyse" Rules="@(Rules)" Files="@(Files)"  OutputFile="c:\fxcoplog3.txt" LogToConsole="true">
            <Output TaskParameter="AnalysisFailed" PropertyName="Result"/>
            <Output TaskParameter="OutputText" PropertyName="Text"/>
        </MSBuild.ExtensionPack.CodeQuality.FxCop>
        <Message Text="CA3 Failed: $(Result)"/>
        <Message Text="Failure Text: $(Text)" Condition="$(Result) == 'true'"/>
    </Target>
</Project>

Inheritance Hierarchy

System..::.Object
  Microsoft.Build.Utilities..::.Task
    MSBuild.ExtensionPack..::.BaseTask
      MSBuild.ExtensionPack.CodeQuality..::.FxCop

See Also