Polyspace支金宝app持编译器
作者:Anirban Gangopadhyay和Puneet Lal
一个经常出现的问题是:Polyspace®金宝app支持我正在使用的编译器?有时会有人问这个问题的另一种变体:为什么像Polyspace这样的静态分析工具需要了解编译器?这并不是说该工具编译代码、创建二进制文件并执行二进制文件来检测运行时错误。运行时错误检测根本不涉及执行代码。
简单的回答是:Polyspace不需要知道编译器。您可以提供源代码并开始分析,但是如果指定编译器,则设置Polyspace分析会更简单。
为了进一步理解这一点,让我们看看Polyspace如何分析您的代码。
编译在Polyspace
当您运行Polyspace时,分析的第一步是编译。在这一步中,Polyspace根据C或c++标准检查代码语法。有关详细信息,请参见用于多元空间分析的语言标准.如果文件包含语法错误的代码,则分析不能继续进行。分析就像编译器一样显示语法错误,并从考虑中删除该文件。
编译器提供了标准中没有的额外语言扩展。例如,看到GCC扩展.如果Polyspace了解您的编译器,那么分析就可以识别这些特定于编译器的扩展。否则,语法检查将严格遵循标准,您必须手动为Polyspace定义这些扩展。
例如,GCC支持整数标量类型__金宝appint128
对于可以容纳128位的目标。如果您使用默认编译选项,Polyspace Bug Finder™错误如下: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如果您的代码被编写成可跨编译器移植的,那么来自编译器特定扩展的错误可能会更少。您可以使用Polyspace选项解决这些错误。例如,为了进行Polyspace分析(无需修改源代码),您可以将特定于编译器的数据类型替换为更容易识别的数据类型。
总之,Polyspace支持所有编译器。金宝app与其他编译器相比,有些编译器得到了更明确的支持。金宝app对于这些编译器,设置Polyspace分析只需要指定编译器名称。