繁体   English   中英

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

[英]Any MSBuild command line option to disable code analysis for c++ project dynamically?

在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>

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

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

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

检查此文档 ,可以使用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.将此文件放在解决方案文件夹中,或将其放在项目目录结构中的路径中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM