Как указать CodeAnalysisRules в MSBuild через командную строку - PullRequest
5 голосов
/ 23 октября 2009

Я хочу иметь возможность указывать Code AnalysisRules в командной строке MSBuild (для Code Analysis / FXCOP). В файле проекта будет что-то вроде этого:

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

Итак, я бы предположил, что я использую что-то вроде этого:

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

Что отлично работает, , но , когда я хочу добавить другое правило, ему не нравится точка с запятой:

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

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

Как мне указать более одного правила?

Я рад ссылаться на файл, но я не хочу просто изменять файлы проекта.

Backgroud : Я хочу создать набор правил для сервера непрерывной интеграции (в моем случае Хадсон).

Примечание: Я использую Visual Studio 2005

Ответы [ 2 ]

1 голос
/ 29 декабря 2009

Попробуйте это:

msbuild /property:RunCodeAnalysis=true;CodeAnalysisRules=-Microsoft.Globalizati
on#CA1301%3B-Microsoft.Globalization#CA1302
0 голосов
/ 04 января 2010

Предложение 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>

Я храню файл исключения в репозитории, и каждое решение и проект используют его. Довольно аккуратно:)

...