主要内容

指定目标环境和编译器行为

在进行验证之前,需指定您的源代码语言(C 或 C++)、目标处理器以及用于编译代码的编译器。在某些情况下,为了模拟编译器的行为,您可能还需要指定其他选项。

根据您的设定,验证过程会确定基本类型的大小,将某些宏视为已定义,并解释编译器对标准的特定扩展。如果选项与您的运行环境不一致,可能会遇到以下情况:

  • 编译错误

  • 验证结果可能不适用于您的目标。

如果您使用 gmake 等编译命令来编译代码,且该编译命令满足某些限制,则可以在执行命令后从编译命令中提取相关选项。否则,请显式指定选项。

从编译命令中提取选项

如果您使用编译自动化脚本编译源代码,则可以通过脚本来设置 Polyspace® 工程。与编译器相关的选项会在该工程中指定。

在 Polyspace 桌面产品中,有关如何从以下位置跟踪编译命令的信息:

在 Polyspace 服务器产品中,有关如何跟踪编译命令的信息,请参阅 从编译命令 (makefile) 创建 Polyspace 分析配置

对于 Polyspace 工程创建,您的编译自动化脚本 (makefile) 必须满足一定的要求。请参阅从编译系统创建工程的要求

显式指定选项

如果您无法追踪编译命令,需要手动创建工程,则必须显式指定相关选项。

按顺序指定选项。

  • 必需选项:

    • 源代码语言 (-lang):如果所有文件的扩展名均为 .c.cpp,则验证过程将根据扩展名确定源代码语言。否则,请显式指定该选项。

    • 编译器 (-compiler):选择用于编译源代码的编译器。如果找不到编译器,请使用与编译器最接近的选项。

    • 目标处理器类型 (-target):指定您计划在哪个目标处理器上执行您的代码。对于某些处理器,您可以更改默认设定。例如,对于处理器 hc08,您可以将类型 doublelong double 的大小从 32 位更改为 64 位。

      如果找不到目标处理器,可以创建自己的目标,并指定基本类型的大小、char 的默认符号以及目标机器的字节序。请参阅Generic target options

  • 语言特定选项:

    • C 标准版本 (-c-version):C 语言的默认标准取决于您的编译器设定。如果您未显式指定编译器,默认分析将使用 C99 标准。您可以指定更早的标准(如 C90)或更晚的标准(如 C11)。

    • C++ 标准版本 (-cpp-version):默认的 C++ 语言标准取决于您的编译器设定。如果您未显式指定编译器,默认分析将使用 C++03 标准。您可以指定更高的标准,例如 C++11 或 C++14。

  • 编译器特定选项:

    这些选项是否可用取决于您对编译器 (-compiler) 的设定。例如,如果您选择了 visual 编译器,则可使用选项包对齐值 (-pack-alignment-value)。使用此选项,您可以模拟在 Visual Studio® 中使用的编译器选项 /Zp

    有关所有编译器特定选项的信息,请参阅 目标和编译器

  • 高级选项:

    使用这些选项,您可以修改验证结果。例如,如果您使用选项向下取整 (-div-round-down),则验证会认为负数除法或取模运算的商视为向下取整。仅当您在编译代码时使用了类似选项时,才应使用这些选项。

    有关所有高级选项的信息,请参阅目标和编译器

  • 编译器头文件:

    如果指定了 diabtaskinggreenhills 编译器,则必须指定编译器头文件的路径。请参阅为 Polyspace 分析提供标准库头文件

如果运行分析后仍然出现编译错误,您可能还需要指定其他选项:

  • 定义宏:有时,编译错误发生是因为分析将宏视为未定义。显式定义这些宏。请参阅预处理器定义 (-D)

  • 指定包含文件:有时,由于编译器对标准库函数的定义与 Polyspace 不同,并且您未提供编译器包含文件,因此会发生编译错误。请显式指定编译器包含文件的路径。请参阅为 Polyspace 分析提供标准库头文件

另请参阅

| | | | |

主题