有人知道如何在使用MSBuild时禁用代码分析吗?
在构建服务器TFSBuild.proj中定义的RunCodeAnalysis设置与本地MSBuild项目模式选项存在显著差异。
构建服务器支持RunCodeAnalysis的“始终,默认,从不”值。相比之下,本地MSBuild支持RunCodeAnalysis的“True或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。
在构建服务器上:
“始终”告诉MSBuild使用RunCodeAnalysis=True编译所有项目。
“从不”告诉MSBuild在所有项目上禁止代码分析(RunCodeAnalysis=False)。
因此,RunCodeAnalysis的值是“默认、始终、从不”或“True、False”,具体取决于您的构建方式。
您可以参考
如何:编辑构建类型和
CodeAnalysis、FxCop和Team Build以获取更详细的信息。
更新:
根据mu88的回复,我在Jenkins上创建了一个测试演示,其中
RunCodeAnalysis=False
,预期地禁用了代码分析。以下是我的Jenkins配置:
![enter image description here](https://istack.dev59.com/fBkO7.webp)
此外,您还可以检查构建日志是否包含从“
Running Code Analysis...
”到“
Code Analysis Complete
”的部分。对于警告SAxxxx仍然出现在输出中,这不是代码分析结果。您可以在Visual Studio上进行测试,而无需进行代码分析。安装StyleCop.Analyzers包后,构建项目,您将获得这些警告。
因此,请在使用参数
:/p:RunCodeAnalysis=False
构建项目后,仔细检查Jenkins上的构建日志是否包含“
Running Code Analysis...
”和“
Code Analysis Complete
”部分。
更新2:
如果您想要抑制StyleCop警告,则可以通过在.cs文件顶部添加此标头来欺骗StyleCop根本不处理该文件:
//------------------------------------------------------------------------------
// <auto-generated>
// Well, not really. This is just a trick to get StyleCop off my back.
// </auto-generated>
//------------------------------------------------------------------------------