TFS Build 2013 избежать анализа кода - PullRequest
0 голосов
/ 04 мая 2018

Как можно избежать анализа кода, выполняемого в сборках TFS на уровне решения?

Я понимаю, что могу сделать это на уровне проекта, но в моем решении на C # более 200 проектов, и я хотел бы отключить анализ кода на уровне решения, если это возможно.

Мне все еще нужно запустить анализ кода на машинах разработчиков.

Я хочу сэкономить время, не выполняя анализ кода в конкретной сборке TFS (мы используем SonarQube для CodeAnalysis в отдельном конвейере сборки и поэтому нам не нужна сборка TFS для выполнения собственного анализа кода)

В своих аргументах MSBuild я попробовал следующее:

/p:RunCodeAnalysis=false
/p:RunCodeAnalysis=Never 

(используется TfcvTemplate.12.xaml по умолчанию)

Но даже с этими изменениями я все еще вижу из журналов сборки, что анализ кода все еще происходит:

csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:TRACE /highentropyva+ 
/debug:pdbonly /optimize+ /out:obj\Release\xyx.dll 
/ruleset:"..\Rule Sets\MinimumRecommendedRules.ruleset" 
/subsystemversion:6.00 /target:library /utf8output 
xyz.cs

Полные аргументы MSBuild, которые я использую:

/m /tv:14.0 /p:RunCodeAnalysis=false /p:GenerateProjectSpecificOutputFolder=True 

Я использую Инструменты версии 14 в сочетании с пакетом Microsoft.Compilers NuGet, чтобы разрешить C # 6 на нашем сервере сборки TFS 2013.

Есть ли способ избежать анализа кода на уровне решения, используя только аргументы MSBuild в определении сборки TFS2013?

1 Ответ

0 голосов
/ 04 мая 2018

Свойство RunCodeAnalysis используется статическими двоичными анализаторами FxCop старого стиля. Новые анализаторы Roslyn не поддерживают этот параметр.

Есть два варианта ...

Вы можете создать файл Directory.Build.targets 1 в корневой папке вашего решения (вы можете создать его во время сборки при необходимости) и удалить анализаторы непосредственно перед вызовом компилятора:

<Target Name="DisableAnalyzersForBuild"
        BeforeTargets="CoreCompile"
        Condition="'$(TF_BUILD)'=='True'">
  <ItemGroup>
    <Analyzer Remove="@(Analyzer)"/>
  </ItemGroup>
</Target>

Вы можете включить проверку TF_BUILD, чтобы определить, что вы находитесь в прогоне Team Build.

Вы также можете создать файл набора правил, который отключит все правила и переопределит его как часть сборки:

/p:CodeAnalysisRuleSet=AllDisabled.ruleset

1 ) Не уверен, работает ли это с расширениями компилятора Nuget.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...