任何人都知道如何在使用 MSBuild 时禁用代码分析?
构建服务器 TFSBuild.proj 中定义的 RunCodeAnalysis 设置与本地 MSBuild 项目架构选项有很大不同。
构建服务器支持RunCodeAnalysis的“ Always, Default, Never ”值。相比之下,本地 MSBuild 支持 RunCodeAnalysis 的“ True or False ”。
您可以检查 Microsoft.TeamFoundation.Build.targets 文件的部分:
<Target Name="CoreCompileSolution">
<PropertyGroup>
<CodeAnalysisOption Condition=" '$(RunCodeAnalysis)'=='Always'">RunCodeAnalysis=true</CodeAnalysisOption>
<CodeAnalysisOption Condition=" '$(RunCodeAnalysis)'=='Never'">RunCodeAnalysis=false</CodeAnalysisOption>
<!-- ... -->
</PropertyGroup>
<!-- ... -->
</Target>
由此我们可以推断“默认”设置不为运行时提供值,而“始终”和“从不”分别映射到 True/False。
在构建服务器上:
Always
告诉 MSBuild 用 RunCodeAnalysis=True 编译所有项目
Never
告诉 MSBuild 禁止对所有项目进行代码分析 (RunCodeAnalysis=False)。
因此 RunCodeAnalysis 的值是Default,Always,Never
或True,False
,具体取决于您的构建方式。
您可以参考如何:编辑构建类型和代码分析、FxCop 和团队构建以获取更详细的信息。
更新:
根据 mu88 回复,我在 Jenkins 上创建了一个测试演示RunCodeAnalysis=False
,代码分析按预期禁用。以下是我在 Jenkins 上的配置:
此外,您还可以检查构建日志是否有从“ Running Code Analysis...
”到“ Code Analysis Complete
”的部分并且对于警告SAxxxx留在输出中,这不是代码分析结果。您可以在 Visual Studio 上对其进行测试,而无需进行代码分析。安装包 StyleCop.Analyzers 后,然后构建项目,您将收到这些警告。
因此,请仔细检查Jenkins上的构建日志是否包含在构建带有参数的项目后的“ Running Code Analysis...
”和“ ”部分。Code Analysis Complete
:/p:RunCodeAnalysis=False
更新2:
如果您想禁止 StyleCop 警告,您可以通过在 .cs 文件顶部添加此标头来欺骗 StyleCop 根本不处理文件:
//------------------------------------------------------------------------------
// <auto-generated>
// Well, not really. This is just a trick to get StyleCop off my back.
// </auto-generated>
//------------------------------------------------------------------------------