# <fxcop>

[This is preliminary documentation and subject to change.]

Analyzes managed code assemblies and reports information about the assemblies, such as possible design, localization, performance, and security improvements.

Note: this task relies on fxcopcmd.exe being in your PATH environment variable. You can download the latest FxCop from http://www.gotdotnet.com/team/fxcop/.

### Parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
analysisReportFilename | string | Specifies the file name for the analysis report. | False
applyOutXsl | bool | Applies the XSL transformation specified in /outXsl to the analysis report before saving the file. | False
basedir | directory | The directory in which the command will be executed. | False
consoleXsl | string | Specifies the XSL or XSLT file that contains a transformation to be applied to the analysis output before it is displayed in the console. | False
directOutputToConsole | bool | Directs analysis output to the console or to the Output window in Visual Studio .NET. By default, the XSL file FxCopConsoleOutput.xsl is applied to the output before it is displayed. | False
failOnAnalysisError | bool | Determines if the task should fail when analysis errors occur | False
includeSummaryReport | bool | Includes a summary report with the informational messages returned by FxCopCmd. | False
outputXslFilename | string | Specifies the XSL or XSLT file that is referenced by the xml-stylesheet processing instruction in the analysis report. | False
platformDirectory | string | Specifies the location of the version of Mscorlib.dll that was used when building the target assemblies if this version is not installed on the computer running FxCopCmd. | False
projectFile | string | Specifies the filename of FxCop project file. | False
saveResults | bool | Saves the results of the analysis in the project file. | False
typeList | string | Comma-separated list of type names to analyze. This option disables analysis of assemblies, namespaces, and resources; only the specified types and their members are included in the analysis. Use the wildcard character '*' at the end of the name to select multiple types. | False
failonerror | bool | Determines if task failure stops the build, or is just reported. The default is true. | False
if | bool | If true then the task will be executed; otherwise, skipped. The default is true. | False
timeout | int | The maximum amount of time the application is allowed to execute, expressed in milliseconds. Defaults to no time-out. | False
unless | bool | Opposite of `if`. If false then the task will be executed; otherwise, skipped. The default is false. | False
verbose | bool | Determines whether the task should report detailed build log messages. The default is false. | False

### Framework-configurable parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
exename | string | The name of the executable that should be used to launch the external program. | False
managed | ManagedExecution | Specifies whether the external program should be treated as a managed application, possibly forcing it to be executed under the currently targeted version of the CLR. | False
useruntimeengine | bool | Deprecated. Specifies whether the external program is a managed application which should be executed using a runtime engine, if configured. The default is false. | False

### Nested Elements:

#### <dependencyDirectories>

Specifies additional directories to search for assembly dependencies. FxCopCmd always searches the target assembly directory and the current working directory.

#### </dependencyDirectories>

#### <targets>

Specifies the target assembly to analyze.

#### </targets>

#### <imports>

Specifies the name of an analysis report or project file to import. Any messages in the imported file that are marked as excluded are not included in the analysis results.

#### </imports>

#### <rules>

Specifies the filename(s) of FxCop project file(s).

#### </rules>

#### <arg>

The command-line arguments for the external program.

Represents a command-line argument.

When passed to an external application, the argument will be quoted when appropriate. This does not apply to the `line` parameter, which is always passed as is.

### Parameters

Attribute | Type | Description | Required
--- | --- | --- | ---
dir | directory | The value for a directory-based command-line argument; will be replaced with the absolute path of the directory. | False
file | file | The name of a file as a single command-line argument; will be replaced with the absolute filename of the file. | False
if | bool | Indicates if the argument should be passed to the external program. If true then the argument will be passed; otherwise, skipped. The default is true. | False
line | string | List of command-line arguments; will be passed to the executable as is. | False
path | <path> | The value for a PATH-like command-line argument; you can use `:` or `;` as path separators and NAnt will convert it to the platform's local conventions, while resolving references to environment variables. | False
unless | bool | Indicates if the argument should not be passed to the external program. If false then the argument will be passed; otherwise, skipped. The default is false. | False
value | string | A single command-line argument; can contain space characters. | False

### Nested Elements:

#### <path>

Sets a single command-line argument and treats it like a PATH - ensures the right separator for the local platform is used.

#### </path>

### Examples

- A single command-line argument containing a space character.

      <arg value="-l -a" />

- Two separate command-line arguments.

      <arg line="-l -a" />

- A single command-line argument with the value `\dir;\dir2;\dir3` on DOS-based systems and `/dir:/dir2:/dir3` on Unix-like systems.

      <arg path="/dir;/dir2:\dir3" />

#### </arg>

### Examples

-     <fxcop directOutputToConsole="true" projectFile="${build.dir}\Sample.fxcop">
          <targets>
              <include name="${build.dir}\bin\*.dll" />
          </targets>
          <rules>
              <include name="${build.dir}\rules\*.dll" />
          </rules>
      </fxcop>

### Requirements

Assembly: NAnt.Contrib.Tasks (0.93.5002.0)