build - 在 TFSBuild.proj 中设置代码分析设置

标签 build tfs msbuild code-analysis

我正在尝试在 TFS 的 TEST 安装中设置/覆盖一些设置,以在构建过程中强制进行代码分析和相关设置(无论项目文件中的设置如何)

我们目前在 TEST TFS 安装中使用:

  • Visual Studio 2012 Ultimate 在我们的开发机器和构建服务器上
  • 在一台服务器上安装 TFS 2012(应用程序和数据层)
  • 在另一台服务器上安装 TFS 2012 构建服务( Controller 和代理)

  • 我们可以按预期编译示例 .net 4.5 项目(类库 (DLL)、Web 应用程序等)。这仅与覆盖关联的代码分析设置有关(希望如此)。

    场景 1 - 在我们开发人员机器上的示例应用程序中,当您选择项目设置时(右键单击 -> 解决方案资源管理器中的属性),如果我打开“在构建时启用代码分析”并选择规则,请转到代码分析选项卡下拉菜单中的设置按预期执行,因此会产生一些警告。此技术添加 <RunCodeAnalysis>false</RunCodeAnalysis>如果在记事本中打开到 *.csproj 文件。如果执行构建以编译示例项目/解决方案,则按预期执行代码分析。我不想在每个项目上都这样做,因为开发人员可以将其关闭(尽管我希望有 checkin 政策和/或私有(private)/门控 checkin 以及强制执行此操作)。

    场景 2 - 我可以禁用“在构建时启用代码分析”复选框并在我们的 TFSBuild.proj 文件中强制进行代码分析(我们(将)使用默认的 upgradetemplate.xaml 作为我们的流程定义,因为我们将从 TFS 2008 升级到我们的LIVE TFS 安装)通过具有:

    <RunCodeAnalysis>Always</RunCodeAnalysis>



    这是可行的,这就是我们将如何强制(仍有待学习的类(class):-))对我们的构建进行代码分析。

    然后在设置其他相关的代码分析设置时出现问题。例如,应用/使用哪些默认规则集或将 CA 警告视为错误。其中一些设置可以在 VS 中设置,也可以通过在记事本中编辑 *.csproj 来设置。如果我编辑 *.csproj,那么这些值将按预期在构建中使用(以及在开发人员机器上本地使用)。这并不理想,因为我想在 TFSBuild.proj 中集中完成,而不必编辑每个项目文件。我相信我可以使用 TFSbuild.proj 文件中的设置:
    <PropertyGroup>
        <RunCodeAnalysis>Always</RunCodeAnalysis>
        <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
        <CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
    </PropertyGroup>
    

    但它们似乎不起作用,或者我把它们放在错误的地方?如何正确修复/使用它们?

    仅供引用,我通过以下方式在 TFSBuild.proj 中构建我的解决方案:
    <Project DefaultTargets="DesktopBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
    
      <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets" />
              <ItemGroup>
                <SolutionToBuild Include="/some folder/some solution.sln" />
                <ConfigurationToBuild Include="Debug|Any CPU">
                   <FlavorToBuild>Debug</FlavorToBuild>
                   <PlatformToBuild>Any CPU</PlatformToBuild>
                 </ConfigurationToBuild>
              </ItemGroup>
    </Project>
    

    在构建服务器上,我确实在 c:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\CodeAnalysis 找到了对代码分析目标文件的引用,但我不想更改构建服务器上的默认行为(虽然当我这样做时它确实有效)。例如 CodeAnalysisTreatWarningsAsErrors 的条件必须被评估为假。就像我的值不是从 TFSBuild.proj 读取的,而是从 .csproj 文件中读取的。

    如有任何问题,请随时提出并提前致谢

    最佳答案

    我有一个我认为与巡航控制类似的问题,没有使用 CODE_ANALYSIS 进行编译编译符号,即使在 VS.Net 中选中了“在构建时启用代码分析(定义 CODE_ANALYSIS 常量)”。

    看是不是check,CODE_ANALYSIS实际上并没有显式添加到 csproj 中的编译符号列表中(即使它出现在文本框“条件编译符号”中),只有 <RunCodeAnalysis>true</RunCodeAnalysis>被添加。

    通过 VS.Net 编译时,CODE_ANALYSIS会自动添加,但在使用巡航控制使用的 MSBuild 时不会。

    我最终在 VS.Net 中将“条件编译符号”从“CODE_ANALYSIS;MySymbol”更改为“MySymbol;CODE_ANALYSIS”。这样做迫使 CODE_ANALYSIS也出现在 csproj 中。

    关于build - 在 TFSBuild.proj 中设置代码分析设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12354412/

    相关文章:

    c# - 每次我打开我的 VS 解决方案时,我都会得到 “Projects have recently been added to this solution. Do you want to get them from source control?”

    c# - 无法将 TFS 项目映射到 Visual Studio 2013 中的网络驱动器

    visual-studio-2008 - Hudson 可以为 msbuild 任务导出/设置/使用我的环境变量吗?

    visual-studio-2008 - 使用带有 maxcpucount 选项的 MSBUILD 时出现问题

    c++ - 我可以在 MSBuild 中为 C++ 文件组合基于 clr 的目标吗?

    java - Maven 增加 POM 中的项目版本,但过滤资源得到旧版本

    visual-studio-2012 - TFS- "Could not find part of path"错误

    c++ - 在 Windows 10 中构建 OpenCV 时出现 Qt 和 cvv 的链接错误

    grails - Grails 1.2.4:更改ProxySettings.groovy的位置

    visual-studio - 如何阻止数据库项目的构建