CoverageScanner工具套件的适配
要使用Coco配合新类型的编译器或工具链,必须编写一个新的配置文件,将CoverageScanner适配到编译器。本节描述了配置文件的内容。有关使用配置文件与Coco的信息,请参见调用CoverageScanner。
注意:某些不是编译器的其他命令,例如ld
或ar
,也通过配置文件进行了封装,因为它们涉及到编译过程。
配置文件允许CoverageScanner
- 解释编译器的命令行(请参阅编译器设置配置文件参数)。
- 解释连接器的命令行(请参阅连接器设置配置文件参数)。
- 自定义覆盖率分析的结果,这对于无法访问文件系统的嵌入式系统可能是必要的(请参阅自定义IO配置文件参数)。
配置文件是一个文本文件,具有形式为<tool name>.cspro
的名称。它必须位于Coco安装目录中。配置文件可能包含
- 注释:以
#
字符开始的行被视为注释。 - 全局参数:可以使用以下语法将配置文件参数分配值:
<parameter>
=<value>每行只能允许一个定义。
- 特定架构的参数:有一些参数的特定版本只与特定架构一起使用。架构的名称放在参数后面的方括号中,格式如下
<parameter>[<architecture>]=<value>
这种定义必须放在全局参数定义之后。
除非使用--cs-architecture
指定,否则架构将自动确定。
架构设置配置文件参数
ARCHITECTURE
=<string>:列出在编译过程中使用的架构命令行参数。此参数应放置在配置文件的第一行。ARCHITECTURE_APPEND=<YES/NO/ALLOW>
:如果设置,则命令行选项的参数将直接附加(选项和参数之间不放置空格字符)。
设置配置参数
COVERAGESCANNER_DUMP_ON_EVENT
=<正则表达式>:激活正在侦听全局事件Global\COVERAGE
的Windows®事件处理器的正则表达式。COVERAGESCANNER_RUNTIME_LOG
=<正则表达式>:激活CoverageScanner
API的路由模式的正则表达式。COVERAGESCANNER_COVERAGE_ON
=<正则表达式>:如果表达式匹配命令行参数,则会激活代码覆盖率分析(等同于--cs-on
)的正则表达式。SOURCE_IGNORE_INSTRUMENTATION
=<列表>:未进行 instrumentation 的源文件列表。列表是一组匹配绝对文件路径的通配符表达式。通过将名称置于两个美元符号之间来访问环境变量。例如,键入$HOME$
以访问HOME
环境变量。在此处还可以使用附加变量
$NATIVE_TOOLCHAIN_ROOT$
。如果原生命令编译器位于bin
目录中,则该变量将替换为bin
的父目录。这可以用来排除与原生命令编译器位置相关的头文件。例如,如果原生命令编译器的路径是C:\path\to\bin\compiler.exe
,则$NATIVE_TOOLCHAIN_ROOT$\include
将排除在C:\path\to\include
中的头文件。
设置配置参数
PREPROCESSOR_KEEP_DEFINES
=<字符串>:传递给预处理器和编译器命令的预处理器定义列表。只有出现在CoverageScanner
命令行参数中的预处理器定义才会被考虑。PREPROCESSOR_HIDE_OPTION_NO_ARG
=<字符串>:不应传递给本地预处理器的单选项(无参数)列表。PREPROCESSOR_HIDE_OPTION_ONE_ARG
=<字符串>:不应传递给本地预处理器的带有一个参数的选项列表。PREPROCESSOR_HIDE_OPTION_ONE_ARG_APPEND=<YES/NO/ALLOW>
:如果设置为 true,则将被隐藏的选项的参数将直接附加(选项和参数之间无空格)。PREPROCESSOR_KEEP_OPTION_ONE_ARG
=<字符串>:必须传递给本地预处理器的一个参数的选项列表。PREPROCESSOR_KEEP_OPTION_ONE_ARG_APPEND=<YES/NO/ALLOW>
:如果设置为 true,则必须传递的选项的参数将直接附加(选项和参数之间无空格)。PREPROCESSOR_DEFINE_OPTION
=<字符串>:允许定义 C 或 C++ 符号的预处理器命令行选项。例如:-D
PREPROCESSOR_DEFINE_OPTION_APPEND=<YES/NO/ALLOW>
:允许在命令行选项字符串之后直接附加预处理器符号(无空格:-DNDEBUG
)。PREPROCESSOR_INCLUDE_OPTION
=<字符串>:允许直接包含一些源文件的预处理器命令行选项。例如:/FI
。PREPROCESSOR_INCLUDE_OPTION_APPEND=<YES/NO/ALLOW>
:允许在命令行选项字符串之后直接附加包含文件名(无空格:/FImyheader.h
)。PREPROCESSOR_DEFINE_SEPARATOR_OPTION
=<字符串>:预处理器符号列表的分隔符。例如,如果设置为,
,则在解析字符串DEF1,DEF2
时,CoverageScanner
将检测到符号DEF1
和DEF2
。PREPROCESSOR_CMD
=<字符串>:预处理器命令行。CoverageScanner
仅分析预处理器文件。该命令生成的用于代码覆盖率分析的 C 或 C++ 文件。以下变量是可用的
$TMP1$...$TMP9$
:临时文件名。退出时将删除临时文件。$OPTIONS$
:从命令行参数中提取的预处理器选项,包含包含文件列表、预处理器符号等。$TOOL$
:编译器命令(TOOL
变量)。$ARCHITECTURE$
:检测到的或通过--cs-architecture
指定的架构。$PROFILE_PATH$
:配置文件路径。$NATIVE_TOOLCHAIN$
:原生工具链路径。$SOURCE$
:源文件名。$OUTPUT$
:预处理器输出文件名。如果该变量出现在命令行中,则包含用于预处理器输出的临时文件名。如果不出现,则假定预处理器将输出生成到stdout
。
预处理器输出是
stdout
。如果配置中省略了此参数,则跳过预处理器步骤。预处理器命令必须将符号
__COVERAGESCANNER__
设置为 1。例如$TOOL$ $OPTIONS$ -D__COVERAGESCANNER__=1 -E $SOURCE$
链接器设置配置的配置文件参数
LINKER_HIDE_OPTION_NO_ARG
=<字符串>:应禁传给原生链接器的选项列表(无参数)。LINKER_HIDE_OPTION_ONE_ARG
=<字符串>:不应传给原生链接器的具有一个参数的选项列表。LINKER_HIDE_OPTION_ONE_ARG_APPEND=<YES/NO/ALLOW>
:如果设置,则隐藏的选项参数将直接附加(选项和参数之间不放置空格字符)。OBJ_EXT
=<字符串>:以分号分隔的对象文件扩展名列表。例如:.obj
。DYN_LIB_EXT
=<字符串>:以分号分隔的动态库扩展名列表。例如:.dll
。STATIC_LIB_EXT
=<字符串>:以分号分隔的静态库扩展名列表。例如:.lib
。UNIX_LIBRARY_NAME=<YES/NO>
:库名称遵循 Unix 标准。LINK_LIBRARY_OPTION
=<字符串>:选择库的链接选项。例如:-l
。LINK_LIBRARY_OPTION_APPEND=<YES/NO/ALLOW>
:直接在链接选项字符串之后附加库(-lfoo
)。LINK_OUTPUT_OPTION
=<字符串>:链接器输出选项。例如:-o
。LINK_OUTPUT_OPTION_APPEND=<YES/NO/ALLOW>
:在选项字符串之后直接附加链接器输出文件(没有空格,-ofoo.o
)。LINK_OUTPUT_DEFAULT
=<字符串>:链接器输出默认文件名。以下变量是可用的
$TMP1$...$TMP9$
:临时文件名。退出时将删除临时文件。$BASENAME_SRC$
:第一个源文件的基本名称。基本名称是不带扩展名的文件名。例如:$BASENAME_SRC$.exe
LINK_ADDITIONAL_ARGUMENTS
=<列表>:在源代码进行代码插入测量时传递给链接器的额外参数。DEFAULT_LIB_PATH
=<字符串>:包含共享库的目录列表。例如:/usr/library;/usr/share/library
。DLL_OPTION
=<字符串>:生成共享库或 DLL 的链接器命令行选项。例如:/DLL
。DLL_OUTPUT_STATIC_LIB
=<字符串>:与 DLL 相关的静态库输出文件名。例如:/IMPLIB:foo.lib
。DLL_OUTPUT_STATIC_LIB_APPEND=<YES/NO/ALLOW>
:在选项字符串之后直接附加与 DLL 相关的静态库输出文件(没有空格,/IMPLIB:foo.lib
)。STATIC_LIB_AS_DEFAULT=<YES/NO>
:代码插入数据库名称使用与 DLL 关联的静态库名称作为基本名称。LIBRARY_PATH_OPTION
=<字符串>:添加到库搜索路径的额外目录的链接选项。例如:-L
。LIBRARY_PATH_OPTION_APPEND=<YES/NO/ALLOW>
:在选项字符串之后直接附加目录名。例如:-L/foo
。AR_COMMAND_FORMAT_OPTION=<YES/NO>
:当此选项设置时,支持GNU库管理器(ar
)的特定命令行语法。OUTPUT_IS_FIRST_ARGUMENT=<YES/NO>
:命令行参数的第一个参数为输出文件。STDIN_MRI_SCRIPT_OPTION
=<list>:使用MRI脚本来生成库。脚本通过标准输入提供。GENERATE_COVERAGESCANNER_LIBRARY=<YES/NO>
:在链接操作期间生成CoverageScanner库。生成静态库时禁用。SKIP_GENERATE_COVERAGESCANNER_LIBRARY_OPTION
=<string>:跳过CoverageScanner库的生成。LIBGEN_SHRA
=<YES/NO>:如果设置为NO,则当系统库未提供时,覆盖率扫描库不使用算术右移运算符。LIBGEN_CPP_ARGS
=<list>:在将覆盖率扫描库编译为C++源代码时使用的附加参数。LIBGEN_AUTODETECT_ARGS_OPTION_NO_ARG
=<string>:编译CoverageScanner库时应使用的无参单个编译选项列表。LIBGEN_AUTODETECT_ARGS_OPTION_ONE_ARG
=<string>:编译CoverageScanner库时应使用的一个参数编译选项列表。LIBGEN_AUTODETECT_ARGS_OPTION_ONE_ARG_APPEND=<YES/NO/ALLOW>
:如果设置,选项的参数将直接附加(选项和参数之间不放置空格字符)。AUTODETECT_MS_RUNTIME_OPTION
=<list>:选择运行时库的命令行选项列表(对于Visual Studio®:/MT;/MD;/ML;/MLd;/MTd;/MDd
)INSTRUMENTATION_TABLES_LINKED_DURING_RUNTIME=<YES/NO>
:在调用链接器时,而不是链接所有仪器表,而是在应用程序运行时链接。INSTRUMENTATION_TABLES_LINKED_DURING_RUNTIME_SUPPORT=<YES/NO>
:指定在应用程序运行时链接所有仪器表是否受支持。PLUGIN_REGISTRATION_API=<YES/NO>
:如果设置为YES,则CoverageScanner API提供__coveragescanner_register_library()
和__coveragescanner_unregister_library()
以在执行期间注册检测到的插件。FILE_FORMAT_SPECIFIER=<YES/NO>
:如果设置为YES,则在运行时支持文件格式说明符(查看命令行选项--cs-output
)。INSTRUMENTATION_TABLES_OF_DLL_LINKED_DURING_RUNTIME=<YES/NO>
:在调用链接器时,而不是链接DLL的所有仪器表,而是在应用程序运行时链接。COVERAGESCANNER_REGISTRATION_UID=<YES/NO>
:在每个静态和动态库中生成一个唯一的符号以检索代码覆盖率计数器。INJECT_COVERAGESCANNER_LIBRARY_AT_END=<YES/NO>
:如果设置为YES,则始终将覆盖率扫描库插入到链接器命令行参数的末尾。COSMIC_LINKER_SCRIPT=<YES/NO>
:支持COSMIC链接脚本。CoverageScanner将尝试通过解析它来识别脚本。COSMIC_LINKER_SCRIPT_EXT
=<string>:COSMIC链接文件的文件扩展名。GNU_LINKER_SCRIPT=<YES/NO>
:支持GNU链接脚本。CoverageScanner将尝试通过尝试解析它来识别脚本。GNU_LINKER_SCRIPT_OPTION
=<string>:一个GNU链接脚本。GNU_LINKER_SCRIPT_OPTION_APPEND=<YES/NO/ALLOW>
:将GNU链接脚本直接附加到链接器脚本命令行选项字符串之后。例如:-Tfoo.script
。VS_DEF_FILE_OPTION
=<string>:用于指定模块定义文件(.def文件)的命令行选项。例如:VS_DEF_FILE_OPTION=/DEF:
。VS_DEF_FILE_OPTION_APPEND=<YES/NO/ALLOW>
:如果设置,指定模块定义文件的命令行选项直接附加到文件名上(选项和参数之间没有放置空格字符)。
编译器设置配置参数
COMPILER_ONLY=<YES/NO>
:如果为真,原生工具只是一个编译器,没有链接器功能。COMPILER_HIDE_OPTION_ONE_ARG
=<字符串>:不应传递给原生编译器的带有一个参数的选项列表。COMPILER_HIDE_OPTION_ONE_ARG_APPEND=<YES/NO/ALLOW>
:如果设置,要隐藏的选项的参数直接附加(选项和参数之间没有放置空格字符)。BYTECODE_EMULATOR
=<字符串>:如果设置,通过调用字节码解释器来调用原生工具链。例如:
BYTECODE_EMULATOR=/math/to/mono.exe
允许在特定的 Mono 模拟器中强制调用mcs.exe
。TOOL
=<字符串>:原生编译器/链接器命令(例如:gcc)。以下变量是可用的
$PROFILE$
:不带扩展名的配置文件名。
REMOVE_EXT
=<字符串>:要从中移除的文件扩展名列表,用分号分隔。COVERAGESCANNER_DISABLE_EXT
=<字符串>:禁用 CoverageScanner 的文件扩展名列表,用分号分隔。IGNORE.Ext
=<字符串>:要忽略的文件扩展名列表,用分号分隔。忽略的文件不进行仪器化。C#_EXT
=<字符串>:C#文件的扩展名列表,用分号分隔。例如:.cs
。C_EXT
=<字符串>:C文件的扩展名列表,用分号分隔。例如:.c
。CPP_EXT
=<字符串>:C++文件的扩展名列表,用分号分隔。例如:.cpp;.cxx
。CPP_LANGUAGE_OPTION
=<字符串>:在 C++ 模式下传递给编译器的命令行选项列表。C_LANGUAGE_OPTION
=<字符串>:在 C 模式下传递给编译器的命令行选项列表。LANGUAGE_SELECTION_OPTION
=<字符串>:选择计算语言的命令行选项列表(C 或 C++)。LANGUAGE_SELECTION_OPTION_APPEND=<YES/NO/ALLOW>
:将选定的语言直接附加到选项字符串之后。LANGUAGE_SELECTION_OPTION_C_KEYWORD
=<字符串>:语言选择命令行选项的参数列表,强制在 C 模式下切换。LANGUAGE_SELECTION_OPTION_CPP_KEYWORD
=<字符串>:语言选择命令行选项的参数列表,强制在 C++ 模式下切换。COMPILER_CMD
=<字符串>:编译器命令行,在链接阶段用于生成 CoverageScanner 库。以下变量是可用的
$TMP1$...$TMP9$
:临时文件名。退出时将删除临时文件。$COMPILER$
:编译器命令(COMPILER
变量)。$SOURCE$
:源文件名。$DESTINATION$
:目标文件名。$LIBGEN$
:命令行选项--cs-libgen
的内容。
例如:
$COMPILER$ -c $SOURCE$ -o $DESTINATION$
。COMPILER_CMD_OPTION_NO_ARG
=<字符串>:从命令行提取的单个选项(无参数)列表,用于编译 CoverageScanner 库。COMPILER_CMD_OPTION_ONE_ARG
=<字符串>:从命令行提取的带有一个参数的选项列表,用于编译 CoverageScanner 库。编译器_CMD选项
:如果设置,用于编译的选项参数将直接附加(选项和参数之间没有空格字符)。编译器额外参数
:当对源代码进行测试时传递给编译器的额外参数。编译器选项
:编译命令行选项。例如:-c
。编译器输出选项
:编译器输出选项。例如:-o
。编译器输出选项在末尾添加
:<YES/NO>:如果没有在命令行中指定输出,请显式地将它添加到末尾(如果YES
)或命令行参数的开头。默认为YES
。编译器输出选项附加
:<YES/NO/ALLOW>:如果编译器输出选项附加
为真,则直接将编译器输出附加到选项字符串之后(没有空格,例如-ofoo.o
)。编译器默认输出文件名
:<string>。以下变量是可用的
$TMP1$...$TMP9$
:临时文件名。退出时将删除临时文件。$BASENAME_SRC$
:第一个源文件的基本名称。基本名称是不带扩展名的文件名。例如:$BASENAME_SRC$.obj
。
调用约定
:<string>:在Windows平台上的调用约定(例如__stdcall
,__cdecl
或__fastcall
)。函数属性
:<string>:添加到库中每个函数的额外编译器属性。 析构函数属性
:<string>:添加到自动调用函数的额外编译器属性,以重置应用程序关闭或动态库卸载时的代码覆盖率信息。只有当在运行时注册了测试表时,此属性才是必需的。构造函数属性
:<string>:添加到自动调用函数的额外编译器属性,以在应用程序启动时初始化代码覆盖率信息。只有当在运行时注册了测试表时,此属性才是必需的。析构函数指令
:<string>:添加到自动调用函数的额外编译器提示属性,以在应用程序关闭或动态库卸载时重置代码覆盖率信息。变量$SYMBOL$
会通过应用提示的符号进行解析和替换。只有当在运行时注册了测试表时,此属性才是必需的。构造函数指令
:<string>:添加到自动调用函数的额外编译器属性,以在应用程序启动时初始化代码覆盖率信息。变量$SYMBOL$
会通过应用提示的符号进行解析和替换。只有当在运行时注册了测试表时,此属性才是必需的。DLL导出
:<string>:从DLL/共享库中导出符号的编译器属性。DLL导入
:<string>:从DLL/共享库中导入符号的编译器属性。强制DLL导出
:<YES/NO>:在连接阶段强制使用DLL导出
属性,而不是DLL导入
。强制DLL导出选项
:<string>:当它在命令行中出现时,强制使用DLL导出
属性。并行编译选项附加
:<YES/NO/ALLOW>:指示是否直接将处理器数量附加到启用并行构建的命令中。并行编译选项
:<列表>:启用并行构建。如果该命令行参数后跟一个整数,则此值指示要执行的最大并行构建数。SYSTEM_INCLUDES
=<列表>:系统包含目录列表。例如:/usr/include
。INCLUDE_PATH_OPTION
=<字符串>:添加包含目录。例如:-I
。INCLUDE_PATH_OPTION_APPEND=<YES/NO/ALLOW>
:直接在选项字符串后添加包含目录名称。例如:-I/foo
。CUSTOM_MALLOC_INCLUDE
=<字符串>:自定义malloc()
/free()
函数的附加包含。例如:<stdlib.h>
。CUSTOM_MALLOC_FUNCTION
=<字符串>:自定义malloc()
函数的主体。主体应返回一个void*
类型,参数int size
指示要分配的字节数。例如:return malloc((size_t)size);
。CUSTOM_FREE_FUNCTION
=<字符串>:自定义free()
函数的主体。参数void* ptr
指向要释放的内存。例如:free(ptr);
。LOCALE_SYSTEM_FILE_ENCODING=<YES/NO>
:如果为YES
,则在编译源文件时使用文本编码的系统配置。OBJECT_DIR_OPTION
=<字符串>:存储对象的目录。例如:-object-dir=debug/
。OBJECT_DIR_OPTION_APPEND=<YES/NO/ALLOW>
:直接在选项字符串后添加目录(不包含空格,-object-dir=foo
)。WARNINGS_TO_DISABLE
=<列表>:要禁用的编译器警告列表。列表中的每个项将被用来生成一个编译器预处理指令,以启用/禁用一个编译器警告。WARNING_DISABLE_PRAGMA
=<字符串>:禁用编译器警告的预处理指令。变量$WARNING$
会被解析,包含应禁用的警告号,\n
被扩展为回车符。例如:#pragma warning disable $WARNING$
。WARNING_ENABLE_PRAGMA
=<字符串>:启用/恢复编译器警告的预处理指令。变量$WARNING$
会被解析,包含应启用的警告号,\n
被扩展为回车符。例如:#pragma warning restore $WARNING$
。COVERAGESCANNER_CSHARP_DYNAMIC
=<字符串>:使能 C# 动态类型支持的正则表达式。例如:^/define:.*\<COVERAGESCANNER_CSHARP_DYNAMIC\>.*$
。COVERAGESCANNER_NO_CSHARP_DYNAMIC
=<字符串>:禁用 C# 动态类型支持的正则表达式。例如:^/define:.*\<COVERAGESCANNER_NO_CSHARP_DYNAMIC\>.*$
。ACTIVATE_CSHARP_DYNAMIC
=<字符串>:设置定义__COVERAGESCANNER_CSHARP_DYNAMIC__
的命令行参数,以启用 C# 动态支持。例如:/define:__COVERAGESCANNER_CSHARP_DYNAMIC__
。SHARED_PTR_NAMESPACE
=<字符串>:为std::shared_ptr
模板指定的特定名称空间。如果设置为字符串XXX
,则假设共享指针的实现位于类std::XXX::shared_ptr
中。SHARED_PTR_NAMESPACE_INLINE
=YES/NO:如果标准 C++ 标准标题使用内联名称空间声明shared_ptr
智能指针,则应设置。UNIQUE_PTR_NAMESPACE
=<字符串>:为std::unique_ptr
模板指定的特定名称空间。如果设置为字符串XXX
,则假设唯一指针的实现位于类std::XXX::unique_ptr
中。UNIQUE_PTR_NAMESPACE_INLINE
=YES/NO: 应当设置为 "YES" 当标准 C++ 标准头文件使用内联命名空间来声明unique_ptr
智能指针。
预编译头文件支持的配置参数
PCH_EXT
=<字符串>: 预编译头文件的扩展名列表,用分号分隔。例如:.pch
。CREATE_PCH_OPTION_APPEND=<YES/NO/ALLOW>
: 指示生成的 PCH 头是否直接附加到命令行选项。CREATE_PCH_OPTION
=<列表>: 创建预编译头时使用的命令行选项列表。例如:/Yc
。USE_PCH_OPTION_APPEND=<YES/NO/ALLOW>
: 指示使用的 PCH 头是否直接附加到命令行选项。USE_PCH_OPTION
=<列表>: 选择预编译头时使用的命令行选项列表。例如:/Yu
。PCH_OUTPUT_OPTION
=<字符串>: 指定预编译头输出。例如:/Fp
。PCH_OUTPUT_OPTION_APPEND=<YES/NO/ALLOW>
: 如果PCH_OUTPUT_OPTION_APPEND
为真,则将预编译头输出直接附加到选项字符串之后(无空格,例如:-Fpfoo.pch
)。PCH_OUTPUT_DEFAULT
=<字符串>: 默认预编译头输出文件名。以下变量可用
$TMP1$...$TMP9$
:临时文件名。退出时将删除临时文件。$BASENAME_SRC$
: 第一个源文件的基本名称。基本名称是没有扩展名的文件名。
例如:
$BASENAME_SRC$.pdb
。
执行时间测量配置参数
PERF_CLOCK_HEADER
=<列表>: 附加用于访问性能计数器的 C 头文件。PERF_CLOCK_TYPE
=<字符串>: 性能计数器的类型名。例如:clock_t
。计数器的大小必须是 64 位。PERF_CLOCK_READ
=<字符串>: 读取性能计数器的函数。变量$OUT$
是此调用输出参数。PERF_CLOCK_ADD
=<字符串>: 将两个性能计数器相加的函数。变量$A$
和$B$
是此调用输入参数。变量$O$
存储输出结果。PERF_CLOCK_SUB
=<字符串>: 从两个性能计数器中减去一个的函数。变量$A$
和$B$
是此调用输入参数。变量$O$
存储输出结果。PERF_CLOCK_CONVERT
=<字符串>: 将性能计数器转换为字符串的函数。变量$I$
和$O$
是此调用输入和输出参数。输出是等同于秒的固定点浮点数。
性能分析配置参数
PROF_CLOCK_HEADER
=<列表>: 附加用于访问性能计数器的 C 头文件。PROF_CLOCK_ADDITIONAL_ARG
=<列表>: 用于支持剖析器构建代码的附加链接器参数。PROF_CLOCK_TYPE
=<字符串>: 性能计数器的类型名。例如:clock_t
。计数器的大小必须是 64 位。PROF_CLOCK_READ
=<字符串>: 读取性能计数器的函数。变量$OUT$
是此调用输出参数。PROF_CLOCK_ADD_ATOMIC
=<字符串>: 向性能计数器添加值的函数。变量$I$
是要添加的值。变量$O$
被修改并存储输出结果。此操作需要原子性,因为它用于多线程上下文。PROF_CLOCK_SUB
=<字符串>:用于减去两个性能计数器的函数。变量$A$
和$B$
是此调用的输入参数。变量$O$
存储输出结果。PROF_CLOCK_CONVERT
=<字符串>:将性能计数器转换为字符串的函数。变量$I$
和$O$
是此调用的输入和输出参数。输出是一个固定点浮点数,对应于秒。
自定义I/O的配置参数
CSEXE_FOPEN
=<字符串>:用于生成执行报告文件的fopen
函数。CSEXE_FCLOSE
=<字符串>:用于生成执行报告文件的fclose
函数。CSEXE_FPUTS
=<字符串>:用于生成执行报告文件的fputs
函数。CUSTOM_SETUP=<NONE/POSIX/MS/GNU/MSCE/C++>
:NONE
:CoverageScanner 不提供函数__coveragescanner_install()
。在嵌入式系统上,这两个函数signal()
和atexit()
都不可用,因此应将 CUSTOM_SETUP 设置为 NONE。只有当调用
__coveragescanner_save()
时,才会保存代码覆盖率信息。POSIX
:CoverageScanner 提供了一个函数__coveragescanner_install()
,该函数安装了一个处理程序,在应用程序终止时保存执行报告。此处理程序使用POSIX
函数signal()
和atexit()
安装。如果没有调用
__coveragescanner_install()
,则只有当调用__coveragescanner_save()
时,才会保存代码覆盖率信息。GNU
:类似于POSIX
设置,但如果未调用__coveragescanner_install()
,则将使用默认处理程序,并在正常应用程序退出时将代码覆盖率数据保存在文件coverage.csmes
中。如果没有调用
__coveragescanner_install()
,则不会在异常退出(如崩溃或软件中断)时保存代码覆盖率信息。MS
:与GNU
相同,但适用于 Microsoft Visual Studio 编译器。C++
:安装一个用 C++ 编写的处理程序,在正常应用程序退出时保存代码覆盖率数据到文件coverage.csmes
中。《CoverageScanner》提供了一个函数__coveragescanner_install()
,该函数仅更改目标文件的名称。MSCE
:与C++
相同,但适用于 Microsoft® eMbedded Visual C++® 编译器。
其他配置参数
FCNTL_FILE_LOCK=<YES/NO>
:使用某些 Unix 系统提供的fcntl
文件锁定。PCH_HIDE_OPTION_NO_ARG
=<字符串>:应不传送到原生工具(编译器或链接器)的单个选项(不带参数)列表,当使用--cs-no-pch
禁用预编译头时。例如:对于 Microsoft Visual Studio®,禁用预编译头时使用
-Yd;/Yd
。PCH_HIDE_OPTION_ONE_ARG
=<字符串>:应不传送到原生工具(编译器或链接器)的带有单个参数的选项列表,当使用--cs-no-pch
禁用预编译头时。例如:对于 Microsoft Visual Studio®,禁用预编译头时使用
-Yl;-Yc;-Yu;-YX;/Yl;/Yc;/Yu;/YX
。PCH_HIDE_OPTION_ONE_ARG_APPEND=<YES/NO/ALLOW>
:如果设置,在禁用预编译的头文件使用--cs-no-pch
时,要隐藏的选项的参数将直接附加(选项和参数之间没有空格字符)。HIDE_OPTION_NO_ARG
=<字符串>:不应传送到本地工具(编译器或链接器)的单个选项列表(不带参数)。例如:对于 Microsoft Visual Studio®,禁用预编译头时使用
-Yd;/Yd
。HIDE_OPTION_ONE_ARG
=<字符串>:不应传送到本地工具(编译器或链接器)的带有一个参数的选项列表。例如:对于 Microsoft Visual Studio®,禁用预编译头时使用
-Yl;-Yc;-Yu;-YX;/Yl;/Yc;/Yu;/YX
。HIDE_OPTION_ONE_ARG_APPEND=<YES/NO/ALLOW>
:如果设置,要隐藏的选项的参数将直接附加(选项和参数之间没有空格字符)。PDB_EXT
=<字符串>:使用分号分隔的调试信息文件扩展名列表。例如:.pdb
。PDB_OUTPUT_OPTION
=<字符串>:指定调试信息文件的命令行选项。例如:PDB_OUTPUT_OPTION=/Fd
。PDB_OUTPUT_OPTION_APPEND=<YES/NO/ALLOW>
:如果设置,指定调试信息文件的命令行选项将直接附加到文件名(选项和参数之间没有空格字符)。SBR_EXT
=<字符串>:使用分号分隔的符号浏览器文件扩展名列表。例如:.sbr
。SBR_OUTPUT_OPTION
=<字符串>:指定符号浏览器信息文件的命令行选项。例如:SBR_OUTPUT_OPTION=/Fr;/FR
。SBR_OUTPUT_OPTION_APPEND=<YES/NO/ALLOW>
:如果设置,指定符号浏览器信息文件的命令行选项将直接附加到文件名(选项和参数之间没有空格字符)。SOURCE_FILE_OPTION
=<字符串>:指定要编译的源文件的命令行选项。例如:SBR_OUTPUT_OPTION=--cpp_source=
。SOURCE_FILE_OPTION_APPEND=<YES/NO/ALLOW>
:如果设置,指定源文件的命令行选项将直接附加到文件名(选项和参数之间没有空格字符)。USE_RESPONSE_FILE=<YES/NO/ALLOW>
:将所有编译器/链接器命令行选项打包到响应文件中。这在Microsoft Windows上通常有必要,因为命令行限制长度。选项ALLOW
仅当在本地编译器的命令行参数中使用响应文件时才使用响应文件。仅在命令行大小达到由MINIMUM_COMMAND_LINE_SIZE_FOR_RESPONSE_FILE
定义的限制时才使用响应文件。MINIMUM_COMMAND_LINE_SIZE_FOR_RESPONSE_FILE
=<整数>:如果命令行参数少于指定的尺寸,则不使用响应文件。MAXIMUM_COMMAND_LINE_SIZE_FOR_RESPONSE_FILE
=<整数>:确保如果命令行大小超出此值,则使用响应文件。RESPONSE_FILE_EXT
=<字符串>:响应文件的文件扩展名列表。RESPONSE_FILE_OPTION
=<列表>:指定响应文件的命令行选项。例如:RESPONSE_FILE_OPTION=@
。RESPONSE_FILE_OPTION_APPEND=<YES/NO/ALLOW>
:如果设置,指定响应文件的命令行选项将直接附加到文件名(选项和参数之间没有空格字符)。ADDITIONAL_LINE_INFORMATION_FOR_DEBUGGING=<YES/NO>
:如果设置,将插入额外的 #line 信息以便在错误消息中包含列信息。STRIP_CPP_COMMENTS_IN_RESPONSE_FILE=<YES/NO>
:如果设置,将删除命令行选项中的C/C++注释。CODE_STYLE=<C++/C#>
:支持的语言。EXIT_FUNCTIONS
=<字符串>:引起应用程序退出的函数列表。例如:EXIT_FUNCTIONS=abort;exit
。ENABLE_COVERAGESCANNER_PER_DEFAULT=<YES/NO>
:默认启用代码覆盖分析。这相当于隐式设置命令行选项--cs-on
。此选项仅当本地可执行文件与 CoverageScanner 包装程序同名时才有影响。DEACTIVATE_COVERAGESCANNER=<YES/NO>
:如果设置为YES
,则全局禁用 CoverageScanner。DEACTIVATE_COVERAGESCANNER_OPTION_NO_ARG
=<string>:禁用 CoverageScanner 的命令行选项列表。例如:DEACTIVATE_COVERAGESCANNER_OPTION_NO_ARG=-M;-MM;-MD;-MMD
。DEACTIVATE_COVERAGESCANNER_OPTION_ONE_ARG
=<string>:禁用 CoverageScanner 的具有一个参数的命令行选项列表。DEACTIVATE_COVERAGESCANNER_OPTION_ONE_ARG_APPEND=<YES/NO/ALLOW>
:如果设置为,禁用 CoverageScanner 的命令行选项直接跟在参数后面(选项和参数之间没有空格字符)。COVERAGESCANNER_LIBRARY_OBJECT
=<string>:包含其库代码的 CoverageScanner 对象的名称。在 Unix 上,默认值为__cs_library.o
。在 Microsoft Windows 上,默认值为__cs_library.obj
。EXIT_VALUE_ON_SUCCESS
=<list>:本地链接器或编译器返回并表示命令成功的退出值列表。ERROR_TO_STDOUT=<YES/NO>
:将错误消息打印到标准输出而不是错误输出。ERROR_FORMAT
=<string>:错误的格式。以下项目将被解析%m
:错误消息。%f
:文件名。%e
:文件名,C-转义。%l
:行。%c
:列。%e
:错误类型(警告、信息或错误)%E
:错误类型(警告或错误)。与 %e 相同,但信息作为警告显示。%n
:新行。
ERROR_FORMAT_LINE
=<string>:与 ERROR_FORMAT 相同,但在没有列信息时使用。ERROR_FORMAT_TEXT
=<string>:与 ERROR_FORMAT 相同,但在没有列和行信息时使用。ERROR_FORMAT_BEGIN
=<string>:CoverageScanner 错误消息的起始横幅。ERROR_FORMAT_END
=<string>:CoverageScanner 错误消息的结束横幅。ERROR_FORMAT_ESCAPE_CHARS=<YES/NO>
:如果设置,文件名和错误消息中的所有反斜杠将被转义。ADDITIONAL_ARGUMENT_SEPARATOR
=<string>:用于命令行参数的分隔符。例如:VisualDSP++ 编译器的ADDITIONAL_ARGUMENT_SEPARATOR=,
。CORRECT_FILENAME_IN_COMPILER_MESSAGE=<YES/NO>
:如果启用,CoverageScanner 会将用于器械检测的文件名替换为项目的真实源文件名。SUPPRESS_PATH_ENTRY=<YES/NO>
:如果设置为YES
,则 CoverageScanner 在调用本地编译器时修改 PATH 变量并删除其自己的位置。ATEXIT
=<string>:用于注册应用程序退出处理程序的命令行,该处理程序在应用程序退出时保存执行报告。FORCE_ESCAPING_RULES_RESPONSE_FILE=<NO/MS/POSIX>
:响应文件中命令行参数的转义规则POSIX
:UNIX®平台的转义规则MS
:Microsoft Windows 的转义规则。NO
:当前平台的本地转义规则。
FILESYSTEM_8.3=<YES/NO>
:如果设置,执行报告文件名的扩展名为.cse
。如果应用程序文件名为application.exe
,生成的报告将是application.cse
,而不是application.exe.csexe
。OUTPUT_BUFFER_SIZE
=<整数>:用于生成执行报告的内部缓冲区大小。较高值可以允许更好的性能,因为它最小化了I/O系统调用。对于嵌入式系统,64应该是一个好的值,而对于其他平台,推荐使用32768。DIAGNOSTIC_COMMAND_LINE_OPTION_NO_ARG
=<字符串>:用于构建过程诊断的单个编译选项列表(不带参数)。DIAGNOSTIC_COMMAND_LINE_OPTION_ONE_ARG
=<字符串>:用于构建过程诊断的一个参数的编译选项列表。DIAGNOSTIC_COMMAND_LINE_OPTION_ONE_ARG_APPEND=<YES/NO/ALLOW>
:如果设置,则直接附加选项的参数(选项和参数之间不放置空格字符)。
仪器参数
RETURN_INSTRUMENTED_IN_EXPRESSION=<YES/NO>
:如果为真,则将返回语句仪器化到返回表达式中。例如:return inst[0]++, x;
。
Coco v7.2.0©2024 The Qt Company Ltd.
Qt及其相关标志是The Qt Company Ltd.在芬兰和/或其他国家的商标。所有其他商标均为其各自所有者的财产。