5

I want to be able to specify the Code AnalysisRules in commandline MSBuild (for Code Analysis / FXCOP). The project file would have something like this in it:

<CodeAnalysisRules>-Microsoft.Globalization#CA1301;-Microsoft.Globalization#CA1302</CodeAnalysisRules>

So I would assume that I use something like this:

MSBuild.exe /property:RunCodeAnalysis=true /property:CodeAnalysisRules=-Microsoft.Globalization#CA1301

Which works fine, but when I want to add another rule, it does not like the semi colon:

MSBuild.exe /property:RunCodeAnalysis=true /property:CodeAnalysisRules=-Microsoft.Globalization#CA1301;-Microsoft.Globalization#CA1302

MSBUILD : error MSB1006: Property is not valid. Switch: -Microsoft.Globalization#CA1302

How can I specify more than one rule?

I am happy to reference a file, but I don't want to just change the project files.

Backgroud: I want to create a set of rules for a continuous integration server (Hudson in my case).

Note: I am running Visual Studio 2005

4

2 回答 2

1

尝试这个:

msbuild /property:RunCodeAnalysis=true;CodeAnalysisRules=-Microsoft.Globalizati
on#CA1301%3B-Microsoft.Globalization#CA1302
于 2009-12-29T19:09:18.150 回答
0

KMoraz 的建议似乎只适用于单一规则。我想要的是能够删除多个规则。我也希望能够为多个项目做到这一点。

我已经弄清楚我需要做什么:我维护一个“规则”文件,其中包含要用于每个项目的所有排除项。然后我在项目文件中引用这个文件。所以它看起来像这样:

项目文件:

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!--the other project stuff here-->
  <Import Project="X:\Hudson\jobs\bin\DefaultRules.targets" xmlns="" />
</Project>

排除文件 (DefaultRules.targets):

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <RunCodeAnalysis>true</RunCodeAnalysis>
      <CodeAnalysisRules>-Microsoft.Design#CA2210;-Microsoft.Design#CA1014;-Microsoft.Design#CA2210;-Microsoft.Naming#CA1705;-Microsoft.Globalization#CA1300;-Microsoft.Globalization#CA1301;-Microsoft.Globalization#CA1302;-Microsoft.Globalization#CA1303;-Microsoft.Globalization#CA1306;-Microsoft.Globalization#CA1304;-Microsoft.Globalization#CA1305</CodeAnalysisRules>
   <TreatWarningsAsErrors>`false`</TreatWarningsAsErrors>
  </PropertyGroup>
</Project>

我将排除文件存储在存储库中,每个解决方案和项目都使用它。挺整洁的 :)

于 2010-01-03T22:15:46.993 回答