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

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

本文关键字:项目 c++ 代码 动态 MSBuild 任何 命令行 选项 是否      更新时间:2023-10-16

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

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

c1xx:错误 C2220:警告被视为错误 - 未生成"对象"文件 [C:\jenkins\workspace\ABC-DEV\ABC\ABC.vcxproj]

c1xx:致命错误 C1250:无法加载插件"C:\程序文件 (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 Studio2017BuildToolsVCAuxiliaryBuildvcvarsall.bat" x64
"C:Program Files (x86)Microsoft Visual Studio2017BuildToolsMSBuild15.0BinMSBuild.exe"  C:WorkABC.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 Studio2017BuildToolsMSBuild15.0BinMSBuild.exe"  C:WorkABC.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>

看起来第二个错误已经被微软修复了: 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.将此文件放在解决方案文件夹中,或将其放在项目目录结构中的路径中。