是否有任何MSBuild命令行选项可以动态禁用c ++项目的代码分析?

时间:2019-07-10 07:44:53

标签: c++ docker jenkins msbuild code-analysis

在Windows容器“ windowservercore”中使用Build Tools 2017编译c ++项目(启用代码分析)时,出现以下错误。

C / C ++的运行代码分析...

c1xx:错误C2220:警告被视为错误-未生成任何“目标”文件[C:\ jenkins \ workspace \ ABC-DEV \ ABC \ ABC.vcxproj]

c1xx:致命错误C1250:无法加载插件“ C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ bin \ localespc.dll”。 [C:\ jenkins \ workspace \ ABC-DEV \ ABC \ ABC.vcxproj]

编译脚本:

call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64

"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe"  C:\Work\ABC.sln /p:configuration=Release /p:platform=x64 /t:rebuild

我如下编辑ABC.vcxproj,错误C2220和C1250得到解决。

<RunCodeAnalysis>false</RunCodeAnalysis>
<EnablePREfast>false</EnablePREfast>

但是我尝试使用以下编译命令来动态禁用代码分析,但是出现了另一个错误。

"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe"  C:\Work\ABC.sln /p:configuration=Release /p:platform=x64 /p:RunCodeAnalysis=false /t:rebuild

c1xx:致命错误C1253:无法加载模型文件'res://mspft140.dll/300'。

是否有MSBuild选项可以在不编辑项目文件的情况下禁用c ++项目的代码分析?


更新:

将Directory.Build.props放入ABC.sln文件的目录不会禁用代码分析。

Directory.Build.props

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <RunCodeAnalysis>false</RunCodeAnalysis>
  </PropertyGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <ClCompile>
      <EnablePREfast>false</EnablePREfast>
    </ClCompile>
  </ItemDefinitionGroup>
</Project>

这是我勾选“在构建中启用代码分析”复选框之后的ABC.vcxproj。

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
   <RunCodeAnalysis>false</RunCodeAnalysis>
</PropertyGroup>

<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <ClCompile>
       <EnablePREfast>false</EnablePREfast>
    </ClCompile>
</ItemDefinitionGroup>

2 个答案:

答案 0 :(得分:0)

似乎第二个错误已由Microsoft修复: https://developercommunity.visualstudio.com/content/problem/334430/unable-to-run-code-analysis-on-cmake-project.html。 那么您是否更新了Visual Studio 2019?

并且您不应该抑制错误或警告(尤其是在c ++中),在这些错误或警告中,运行时特别容易崩溃。

答案 1 :(得分:0)

  

是否有任何MSBuild选项来禁用C ++项目的代码分析   无需编辑项目文件?

选中this document,您可以使用Directory.Build.props来定义RunCodeAnalysis属性,而无需修改.vcxproj文件。

1。创建一个.txt文件,并将其重命名为Directory.Build.props

2。其内容应类似于:

    <Project>
         <PropertyGroup>
           <RunCodeAnalysis>false</RunCodeAnalysis>
         </PropertyGroup>
         ...
        </Project>

(禁用所有配置和平台的代码分析)

或类似的东西

<Project>
     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
       <RunCodeAnalysis>false</RunCodeAnalysis>
     </PropertyGroup>
     ...
</Project>

(仅禁用使用Release|x64组合进行构建的代码分析)

3。将此文件放在解决方案文件夹中,或将其放在项目目录结构中的路径中。