CoverageScanner工具套件的适配

要使用Coco配合新类型的编译器或工具链,必须编写一个新的配置文件,将CoverageScanner适配到编译器。本节描述了配置文件的内容。有关使用配置文件与Coco的信息,请参见调用CoverageScanner

注意:某些不是编译器的其他命令,例如ldar,也通过配置文件进行了封装,因为它们涉及到编译过程。

配置文件允许CoverageScanner

配置文件是一个文本文件,具有形式为<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将检测到符号DEF1DEF2
  • 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++>:
    • NONECoverageScanner 不提供函数 __coveragescanner_install()。在嵌入式系统上,这两个函数 signal()atexit() 都不可用,因此应将 CUSTOM_SETUP 设置为 NONE。

      只有当调用 __coveragescanner_save() 时,才会保存代码覆盖率信息。

    • POSIXCoverageScanner 提供了一个函数 __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.在芬兰和/或其他国家的商标。所有其他商标均为其各自所有者的财产。