【发布时间】:2022-12-12 22:15:40
【问题描述】:
我需要从覆盖构建中排除 C++ 源文件。此文件名为 XMLHelperUtil.cpp,是我正在构建的解决方案中包含的众多 C++ 项目之一的一部分。我尝试将它添加到 XML 配置文件但没有成功。
我做了以下事情:
(1)使用以下命令创建配置文件:
cov-configure --config e:\temp\my_config.xml --msvc --xml-option=skip_file:"XMLHelperUtil.cpp"
这将为 msvc 创建一系列模板,其中包括以下 skip_file 节点:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE coverity SYSTEM "coverity_config.dtd">
<coverity>
<!-- THIS FILE IS AUTOMATICALLY GENERATED - YOU MAY ADD XML ENTITIES -->
<!-- TO UPDATE THE COMPILER CONFIGURATION AFTER THE begin_command_line_config CLOSING TAG. -->
<cit_version>1</cit_version>
<config>
<build>
<compiler>
<template_compiler>true</template_compiler>
<comp_name>devenv</comp_name>
<comp_translator>msvc_devenv</comp_translator>
<comp_lang>C</comp_lang>
<comp_generic>msvc</comp_generic>
</compiler>
<options>
<id>msvc_devenv-devenv-.*</id>
<opt_preinclude_file>$CONFIGDIR$/../user_nodefs.h</opt_preinclude_file>
<begin_command_line_config></begin_command_line_config>
<skip_file>XMLHelperUtil.cpp</skip_file>
</options>
</build>
</config>
<md5>e471f73f8137b3bb42fd78a4695ff14f</md5>
</coverity>
(2)使用以下命令构建项目:
cov-build --config e:\temp\my_config.xml
--dir "E:\cov-int-out"
"d:\Program Files\Microsoft Visual Studio\2022\Professional\Msbuild\Current\Bin\MSBuild"
"<path>\mysolution.sln" /p:Configuration=Release /p:Platform=x64
文件不会被跳过。我究竟做错了什么?
参考:
- https://community.synopsys.com/s/article/Exclude-Unwanted-Files-from-Coverity-Scan-and-Manage-Unwanted-Issues-in-CIM
- https://community.synopsys.com/s/article/Exclude-folders-from-Coverity-Scan-Analysis
- https://community.synopsys.com/s/article/cli-integration-cheatsheet
更新阅读 build_log.txt 文件,我可以看到该文件实际上被跳过了:
[STATUS] Ignoring file XMLHelperUtil.cpp because file "<path>\XMLHelperUtil.cpp" matches skip_file pattern "XMLHelperUtil"
我可以看到它继续处理其他文件并在此处停止:
..|cov-translate|5052|output|> "FilePath.cpp": using precompiled header file "E:\cov-int\emit\pch\__coverity_ms_pch__1"
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> "..\PtrRefCtr_.h", line 290: warning #1087: the object has type
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> qualifiers that are not compatible with the member function
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> "CPtrRefCtrBase::Validate"
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> object type is: const CPtrRefCtrBase
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> Validate();
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> ^
..|cov-translate|5052|output|>
..|cov-translate|5052|output|>
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> "..\PtrRefCtr_.h", line 383: warning #442: argument list for class
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> template "CRefCtrAuto" is missing
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> CRefCtrCom( Pointee *pObj ): CRefCtrAuto(pObj) { (this)->AddRef(); }
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> ^
..|cov-translate|5052|output|>
..|cov-translate|5052|output|>
..|cov-translate|5052|output|>
..|cov-translate|5052|output|>
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> catastrophic signal: C0000005 (EXCEPTION_ACCESS_VIOLATION)
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> tried to read from addr 0x0000000000000064
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> call stack backtrace:
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> cov-emit.exe mingw64 2021.9.0
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000f7f3e0
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000004b2167
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000f7f39d
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000f7f6fb
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> KERNELBASE.dll mingw64 2021.9.0
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000001800e1922
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> ntdll.dll mingw64 2021.9.0
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00007ff8dc0eec73
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00007ff8dc0d18b6
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00007ff8dc0e2f3d
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00007ff8dc0a4557
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00007ff8dc0e20ca
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> cov-emit.exe mingw64 2021.9.0
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000004b2167
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000004f880f
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000515463
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000515bb4
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000004d77d1
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000004f87d8
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000004f90ba
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000560fa0
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x000000000050f98b
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x000000000050fb25
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000005110c6
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000561308
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000005154f3
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000515aa5
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000004c0dfd
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000004f89d0
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000515463
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000515998
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000004cee81
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000004f85ff
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000515463
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000515aa5
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000004cee81
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000004f85ff
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000004f90ba
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000560fa0
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x000000000051085a
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000699690
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000006aa44c
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000633fbd
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000635511
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x000000000063629e
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000638096
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000638a7f
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000006390ce
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000004f06d5
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000673f02
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000006724fa
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x000000000053d079
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x000000000053e51b
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000004949ae
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x000000000048e405
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x000000000048e9fe
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x0000000000490e5e
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x00000000004928c3
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> (last 4 repeated 2 more times)
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> 0x000000000048e405
..|cov-translate|5052|output|>
..|cov-translate|5052|output|> WARNING: cov-emit returned with code 4 for FilePath.cpp
在此之后什么也没有发生。有很多cov-emit进程在运行:
如果我开始一次终止一个进程,它会在某个时候重新启动。我看到日志中出现了新内容。虽然控制台中没有新的输出,但在处理了几个文件后它以相同的方式停止。
【问题讨论】:
-
skip_file应该为此工作;我不清楚为什么它在这里不起作用。你会把你的build.log文件(由cov-build写到中间目录)添加到你的帖子吗?这可能包含一个线索。要获得完整的日志文件,请使用任务管理器杀死挂起的cov-emit(尽管部分日志文件仍然有用)。 -
这有助于找出文件被跳过并且错误完全不同。请参阅上面我的问题的更新部分。
-
从日志文件我们可以看到
cov-emit肯定至少崩溃了一次,你说它也挂了好几次。这些问题可能超出了通过本论坛诊断或修复的可行范围。 (除非您的二进制文件可能已损坏?)我认为您必须向 Synopsys 开具支持票。 -
我刚刚意识到问题实际上是在我从 Visual Studio 2019 升级到 Visual Studio 2022 之后开始的。问题可能是 MSBuild 或 Coverity 与它的交互。我运行的是 2021.09 版本,并且有更新的版本可用。我会安装那个,看看它的行为是否相同。
-
我安装的是2021.12.1版本,也是同样的问题。我得到了数百个
catastrophic signal: C0000005 (EXCEPTION_ACCESS_VIOLATION)。似乎发生的唯一变化是在这样的崩溃之后产生了一个新的cov-emit进程并且构建继续。我会尝试使用 Synopsys。
标签: coverity