Polyspace支金宝app持编译器

一个经常出现的问题:Polyspace®金宝app支持我使用的编译器?有时一个变种的这个问题会问:为什么一个静态分析工具喜欢Polyspace需要了解编译器吗?好像不是这个工具编译代码,创建一个二进制文件,并执行二进制检测运行时错误。运行时错误检测不涉及执行代码。

简短的答案是:Polyspace不需要知道你的编译器。您可以提供您的源代码,并开始分析,但设置Polyspace分析更简单如果你指定编译器。

进一步理解这一点,让我们看看Polyspace分析代码。

编译在Polyspace

当您运行Polyspace,分析是编译的第一步。在这一步中,Polyspace检查您的代码的语法与C或c++标准。有关详细信息,请参见Polyspace分析中使用的语言标准。如果一个文件包含语法错误的代码,分析无法进一步推进。分析显示语法错误就像一个编译器,从考虑删除这个文件。

运行一个Polyspace分析。

编译器提供额外的语言扩展中没有找到标准。例如,看到GCC扩展。如果Polyspace知道你的编译器,可以识别这些compiler-specific扩展分析。否则,语法检查严格坚持标准,你必须手动为Polyspace定义这些扩展。

例如,GCC支持整数标量类型__金宝appint128可以容纳128位的目标。如果您使用默认编译选项,Polyspace错误发现者™错误在这条线:
const __int128 m = 3329589384618324948;

错误:
标识符“__int128”是未定义的

仅仅通过指定版本的GCC编译器和目标可以装128位的,你可以避免这个错误。

设置甚至更容易如果你已经使用一个构建命令(makefile)来构建您的源代码。你甚至不需要显式地指定一个编译器。Polyspace可以跟踪您的构建命令和检测到您正在使用的编译器。不仅如此,Polyspace也检测到编译器选项,包括语法检查。例如,如果您使用GCC选项std = c + + 14,Polyspace检测该使用和检查您的代码与GCC根据c++ 14标准扩展。

编译器在Polyspace直接支持金宝app

R2019a, Polyspace直接支持这些编译器:金宝app

  • 海湾合作委员会
  • Visual c++®
  • 铿锵声
  • 凯尔
  • 迪亚布™(风河系统公司®)
  • NXP™CodeWarrior®
  • 青山®
  • IAR嵌入式工作台
  • 任务®
  • 德州仪器™
  • 手臂®

编译器支持的完整列表,请参阅金宝appPolyspace文档

即使编译器并不直接支持,你仍然可以分析你的代码与Polyspace。金宝app如果您的代码编写跨编译器移植,你可能会从compiler-specific扩展更少的错误。你可以用Polyspace解决这些错误选项。例如,你可以换一个compiler-specific数据类型更认识到数据类型的目的只是为了Polyspace分析(无需修改源代码)。

总而言之,Polyspace支持所有编译器。金宝app有些编译器相比更显式支持。金宝app对于这些编译器,设置一个Polyspace分析包括简单地指定编译器的名字。