visual-studio-2010 - 使用 MSBuild 禁用某些项目的代码分析

标签 visual-studio-2010 static-code-analysis

我继承了一个使用 MSBuild 脚本编译多个解决方案的解决方案文件。大多数项目都配置了分析和规则集,我有一些单元测试项目没有。

启用分析的项目:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
  <DebugSymbols>true</DebugSymbols>
  <DebugType>full</DebugType>
  <DefineConstants>CODE_ANALYSIS;DEBUG;TRACE</DefineConstants>
  <Optimize>false</Optimize>
  <OutputPath>bin\Debug</OutputPath>
  <PlatformTarget>x86</PlatformTarget>
  <CodeAnalysisRuleSet>..\OurRules.ruleset</CodeAnalysisRuleSet>
  <RunCodeAnalysis>true</RunCodeAnalysis>
 </PropertyGroup>

关闭分析的项目:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
  <DebugSymbols>true</DebugSymbols>
  <DebugType>full</DebugType>
  <DefineConstants>DEBUG;TRACE</DefineConstants>
  <Optimize>false</Optimize>
  <OutputPath>bin\Debug</OutputPath>
  <PlatformTarget>x86</PlatformTarget>
  <RunCodeAnalysis>false</RunCodeAnalysis>
 </PropertyGroup>

当我运行我的构建脚本时,看起来有些项目不尊重项目设置:
msbuild.exe BuildScript.proj /p:SolutionRoot=%cd%; /p:Configuration=Debug /p:Platform:x86 /p:RunCodeAnalysis=True

当我检查输出文件夹时,我看到 RunCodeAnalysis 标志设置为 false 的项目的覆盖率分析 xml 输出。有人可以帮助我了解这里发生了什么吗?

最佳答案

发布后不久我就想到了这一点。

Team Build 支持 RunCodeAnalysis 的以下值:Always、Default、Never。

相比之下,本地 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>

这些设置然后在编译解决方案文件时传递到 msbuild 进程。

所以换句话说:

始终 告诉 MSBuild 使用 RunCodeAnalysis=True 编译所有项目

从不 告诉 MSBuild 禁止对所有项目进行代码分析 (RunCodeAnalysis=False)。

...并且不为 RunCodeAnalysis 指定值意味着 MSBuild 将遵守项目文件中的 RunCodeAnalysis 设置。因此,默认 设置。

只需从我的原始问题中删除/p:RunCodeAnalysis 即可获得正确的结果。打开分析的项目将运行代码分析。没有设置的项目不执行任何额外的工作。

更多相关信息,请访问:http://www.bryancook.net/2011/06/build-server-code-analysis-settings.html

关于visual-studio-2010 - 使用 MSBuild 禁用某些项目的代码分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6399014/

相关文章:

c++ - C++ DLL程序退出时: Run-Time Check Failure #2

c++ - 将 C++ 代码与汽车游戏连接起来

vb.net - 如何在 VB.NET 中单击按钮切换表单语言?

.net - 我正在寻找递归分析工具

java - 代码分析工具和类型间声明

C++ VS2010 未解析的符号

c++ - 使用 git 进行 VS2010 项目 : Can't add file *. opensdf

c - 在 cppcheck 中越界访问缓冲区

python - Python 中的静态代码分析?

c++ - cppcheck 如何抑制内联不匹配抑制?