TFS Build 2013 避免代码分析
TFS Build 2013 avoid code analysis
如何避免在解决方案级别对 TFS 构建进行代码分析 运行?
我知道我可以在项目级别执行此操作,但我的 C# 解决方案中有 200 多个项目,如果可能的话,我想在解决方案级别关闭代码分析。
我仍然需要 运行 在开发人员机器上进行代码分析。
我想通过不 运行 对特定 TFS 构建进行代码分析来节省时间(我们在单独的构建管道上使用 SonarQube 进行代码分析,因此我们不需要 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
我正在使用 Tools Version 14 和 Microsoft.Compilers NuGet 包来允许在我们的 TFS 2013 构建服务器上使用 C#6。
有没有办法在解决方案级别避免 运行ning 代码分析,只使用 TFS2013 构建定义中的 MSBuild args?
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 编译器扩展。
如何避免在解决方案级别对 TFS 构建进行代码分析 运行?
我知道我可以在项目级别执行此操作,但我的 C# 解决方案中有 200 多个项目,如果可能的话,我想在解决方案级别关闭代码分析。
我仍然需要 运行 在开发人员机器上进行代码分析。
我想通过不 运行 对特定 TFS 构建进行代码分析来节省时间(我们在单独的构建管道上使用 SonarQube 进行代码分析,因此我们不需要 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
我正在使用 Tools Version 14 和 Microsoft.Compilers NuGet 包来允许在我们的 TFS 2013 构建服务器上使用 C#6。
有没有办法在解决方案级别避免 运行ning 代码分析,只使用 TFS2013 构建定义中的 MSBuild args?
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 编译器扩展。