C和C++静态分析工具PC-lint Plus v1.3.5更新:功能改进(下)

原创|产品更新|编辑:郑恭琳|2020-07-06 10:55:29.187|阅读 86 次

概述:1.3.5版本对PC-lint Plus进行了许多改进。包括:更新了AUTOSAR,MISRA C和MISRA C++,新消息和标志选项,对Visual Studio配置生成器GUI的改进等。

# 31款JAVA开发必备控件和工具 # 企业数字化建设合规无风险[专题]

相关链接:

PC-lint Plus是一种静态分析工具,通过分析C和C ++源代码来发现软件中的缺陷。与编译器一样,PC-lint Plus会解析源代码文件,执行语义分析,并构建一个抽象语法树来表示程序。PC-lint Plus采用各种机制,包括数据流分析,数值跟踪,读写分析,强类型检查,功能语义验证和许多其他技术,来提供对单个文件和整个项目强大而全面的分析。

点击免费试用PC-lint Plus最新版


功能改进

  • PCLP-3397 将默认的ftlenames添加到pclpvscfg对话框

pclpvscfg实用程序现在建议可选的输出文件默认文件名。

  • PCLP-3400 改进对带有质量类型的位片的处理

消息846、9212和9149以前出现在书面符号说明符的存在下,如果位字段的类型是constor volatile-container。这些信息将不再根据资格发布。

允许使用带有64位版本的MicrosoftVisualStudio2012、2010、2008和2005的pclpvscfg

MicrosoftVisualStudio2012、2010、2008和2005的64位版本的支持以前添加到PCLP-2889中。 pclpvscfg实用程序现在也允许使用这些工具。

  • PCLP-3407 允许语言标准选项由选项环境控制使用-std选项选择的语言标准现在受选项环境的约束,并且可以保存、恢复、推送和弹出。另外,无效

当更改所选语言标准为时已晚时,模块处理过程中出现的-std选项现在被报告。

  • PCLP-3411 模块处理期间引用内部缓冲区的消息的新行为
  • PCLP-3276 在模块处理过程中,消息通常在内部缓冲区内被抑制,但有一些例外。这意味着内部宏定义(例如 STDC)和使用-d选项定义的宏将不再触发指向内部缓冲区中合成#define指令的消息。这类信息以前被压制
  • PCLP-3220 命令行上的-d选项或模块之外的其他选项,但不适用于模块内注释中的-d选项;在这两种情况下,抑制现在是一致的。这种抑制的例外情况是错误或补充类别中的消息以及消息683和828(与用语义命名的函数命名的宏有关)。以前由宏定义创建的未诊断语法错误,现在将报告-d选项。
  • PCLP-3423 改进了消息857的兼容类型处理

消息857(memcmp/memcpy/memmove函数中的参数不兼容)是以前发布的,如果前两个参数是指向不同不合格类型的指针。消息现在只有在不同类型不兼容时才发出。

  • PCLP-3433 Meta Ware添加自动协调支持和文档CCAC

pclp_config.py实用程序现在将metaware_ccac识别为一个参数

-编译器选项,并为Meta Ware ccac编译器提供支持。文档描述了如何创建Meta Ware编译器配置以及如何将PC-lint Plus与基于Eclipse的IDE集成。

  • PCLP-3450 在宏上改进ctype.h函数的选择

以前使用的au-misra3-amd1.lnt配置文件++d选项定义ctype.h宏以扩展到相应函数的调用。现在,配置文件使用--u选项来防止首先定义宏窗体。

  • PCLP-3467 +emacro的描述中删除过时的限制

PC-lintPlus中,+的emacro选项可以用来导致消息只在特定宏的扩展期间发出。关于不能为此目的使用这一备选办法的过时说法已从这一备选办法的说明中删除。

  • PCLP-3468 “如何应用抑制选项”一节中包括-efunc和+efunc。

以前不存在的-efunc和+efunc选项现在被包含在“如何应用抑制选项”一节中的参数化选项列表中,这些选项使投票影响消息抑制。

  • PCLP-3471 在消息2425的实例中更正错误

在消息2425的实例中,当语义选项引用过多的参数索引时出现的单词“不存在”的拼写已被纠正。

  • PCLP-3480 AUTOSAR17规则A5-5-1的新支持

部分支持AUTOSAR17规则A5-5-1现在通过消息414(可能除以零)提供,这是当PC-lintPlus确定一个零值的潜在可能性作为模数除法的RHS时发出的。

  • PCLP-3481 支持AUTOSAR规则A7-1-3

const或volatile出现在typedef或使用name之前时,新消息9183(限定符先于typedef类型)将报告。此消息支持AUTOSAR规则A7-1-3。

  • PCLP-3483 支持AUTOSAR规则A13-5-1

新消息9187(在没有相应const版本的情况下声明的非重载下标操作符)是在类声明一个重载的非重载下标成员操作符而不声明一个等效的const版本时发出的。此消息支持AUTOSAR规则A13-5-1。

  • PCLP-3495 从堆栈使用中排除静态局部变量

静态局部变量不再增加所报告的函数的堆栈使用。

  • PCLP-3502 更新开源声明

添加了LLVM/clang的版权通知和OpenBSD Regex的属性。

  • PCLP-3506 添加新的+fls标志来控制外部调用后静态局部变量的处理

静态局部变量不再被假定为在调用函数时可能被修改而不执行其定义。以前的行为可以通过启用新的标志fls来恢复。

  • PCLP-3509 更新几条消息的描述

更新了信息10、19、52、53、72、82、305、307、318、337、432的说明,437,438,451,466,514,517,571,616,621,686,695,734,1101,1536,1537,1579,纠正拼写/语法和格式问题,纠正示例,澄清描述文本等。

  • PCLP-3513 包括PC-lintPlus功能安全证书和最佳实践文件

此版本的PC-lintPlus认证为ISO26262:2018(ASILD合格)和IEC61508:2010(SIL4合格)。PC-lint Plus发行版的doc/目录包括这些认证的相应证书,以及“在安全关键应用中使用PC-lint Plus的最佳做法”文件,该文件为在安全关键应用中使用PC-lint Plus提供了合格和使用指南。

  • PCLP-3552 当分配未连接函数的返回值时,静态变量的值丢失

值跟踪机制通常在调用未知函数时丢弃静态变量的已知值(例如。 其主体不可用)作为函数的人可以修改静态变量。以前,当一个静态变量被赋值时,一个值由对具有已知返回值的函数的调用组成(例如,具有内置或用户定义的返回语义的函数),该信息未保存在静态变量中。PC-lint Plus现在将保存这些信息。

  • PCLP-3555 将零长度数组视为值跟踪的不完全数组

零长度数组现在被视为值跟踪的不完全数组,如PC-lintPlus将不会对数组的实际大小作出任何假设。这可以防止在索引或访问此类数组的元素时(例如使用“struct hack”时)发出消息,例如415和416。

  • PCLP-3565 改进编译器固定产生的因为gcc pclp_config

针对编译器配置由pclp_config生成的GCC,现在预防宏_glibcxx_builtin_is_same_as和_GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED被定义。这些宏的抑制阻止了对这些宏的利用   is_same_as和GCC10头有条件地使用is_constant_evaluated编译器本质。这些intrinsic尚未得到PC-lint Plus的支持,如果PC-lint Plus遇到错误消息,将导致错误消息。

以前,_Float128关键字是无条件启用的,这可能导致在C++模式下处理GCC报头时出现错误,其中GCC将_Float128定义为typedef。_Float128现在通过在co-gcc.h中定义相应的typedef来支持C模块,该typedef只对在C模式中处理的模块激活。


更多更新详情请查看后续更新内容详解


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至hey@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
在线咨询
联系我们
TOP
在线客服系统
live chat