彩票走势图

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

原创|产品更新|编辑:郑恭琳|2020-07-03 16:25:32.223|阅读 390 次

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

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

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

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


功能改进

  • PCLP-964 将线程信息添加到内部错误和崩溃消息中
  • PCLP-3162 内部错误和崩溃消息现在包括由发生错误的线程处理的文件名,如果它是可用的。
  • PCLP-1757使用默认构造函数识别显式初始化,并添加标志,使用显式声明的默认构造函数考虑隐式初始化是显式初始化

对于消息727、728、729和738,现在可以识别使用函数语法调用默认构造函数的显式初始化。此外,如果打开新标志fde,那么消息727、728和738将考虑使用显式声明的默认构造函数进行隐式初始化,以构成显式初始化。默认情况下,标志是关闭的。消息729的描述已经更新,以注意C++类的现有异常。

  • PCLP-1820 支持报文506,提高对报文717的支持

PC-lint Plus现在支持消息506。消息717已经从只覆盖整数文字0扩展到还包括false以匹配消息716,它已经考虑了1和true。这两条消息现在都包含文字,即使是在需要转换的时候。

  • PCLP-2298 AUTOSAR A5-0-2和M5-0-14指南的新支持,改进了MISRAC++对规则5-0-13和5-0-14的支持

新消息9177(语句条件具有非布尔型)和9178(条件运算符的谓词具有非布尔型)为MISRAC提供了改进的支持++规则5-0-13和5-0-14,其中消息909(隐式布尔转换)以前用于提供部分支持。新消息现在也用于支持AUTOSAR A5-0-2和M5-0-14准则。

  • PCLP-2973 支持AUTOSAR规则A12-8-7

AUTOSAR规则A12-8-7现在得到新消息9185的支持(赋值操作符声明没有lvalue ref-qualifier)。

  • PCLP-2975 支持AUTOSAR规则A13-2-3

AUTOSAR规则A13-2-3现在由新消息9186(用于比较函数的非布尔返回类型)支持。

  • PCLP-2996 堆栈使用信息现在以确定性顺序出现

堆栈使用消息和堆栈使用报告以前可以以不同的顺序列出函数,从一个运行到另一个运行,即使只使用一个线程。堆栈使用信息现在以确定性的顺序呈现。

  • PCLP-3085 更新文件关于手册凝结没有pclp_conftg
  • PCLP-3367 2.4节已经更新,以更准确地反映当代配置过程。
  • PCLP-31101 基于范围的抑制的性能改进

分析包含大量基于范围的抑制的项目时的性能(例如--e(#))已经改进。

  • PCLP-3117 禁止在显式默认函数主体PC-lintPlus内部发出的消息表示默认函数,使用自动生成的默认函数的实现。对于显式默认函数(使用=默认语法的函数),PC-lintPlus以前将这些生成的实现与用户代码进行相同的分析,这可能导致不受欢迎的诊断,而这些诊断不反映编写的源代码。 例如:
 struct X {
int array[10];
void f(X a, X b) { a = b; }
X& operator=(const X&) = default;
 };

将导致消息545(获取数组地址)以及用于实现复制分配运算符功能的几个可选注释。

显式默认函数的内部实现不再受此分析的影响。

  • PCLP-3119 消息981不再用于模板实例化

消息981(冗余铸造)不再在模板实例化中发布。

  • PCLP-3146 用于描述消息1544的更新示例

消息1544的描述(由于运行时间初始化,变量的值不确定)已经被更新,以包括一个更好地阐明消息发布情况的示例。

  • PCLP-3170 改进Const变量豁免选择-in解释

MISRA C++解释忽略了以前应用于常量变量的常量表达式基础类型规则,该变量的值仅在豁免递归地应用于所有这些操作数时才依赖于多个操作数。如果所有其他操作数都是整数常量表达式,那么任何这样的操作数都可以被豁免。

  • PCLP-3171 更新消息1919的描述

对消息1919的描述已经更新,以更清楚地阐明其目的。

  • PCLP-3172 更新消息1930的描述

消息1930的描述已经更新,以澄清没有报告显式转换运算符。

  • PCLP-3184 参数化抑制和+paraminfo支持补充消息894和897

消息894现在可以使用对应于特定步行描述的字符串参数和对应于特定步行调用的函数的符号参数来抑制。只有当调用者和callee的主体在同一个模块内时,符号才可用。现在可以使用一个字符串参数来抑制消息897,该参数对应于实例化是一个“类”模板还是一个“函数”模板,一个字符串参数对应于在消息文本中出现的带有模板参数的实例化名称,以及与实例化的声明相对应的符号参数。请注意,符号参数可以同时使用-esym和-etype来抑制。+paraminfo选项现在可以与两个消息以及消息893一起使用(消息893已经将宏名作为字符串参数提供)。

  • PCLP-3185 记录消息893、894和897不受直接单行抑制的影响

对!e选项的描述现在注意到消息893、894和897不受直接单行抑制的影响。

  • PCLP-3188 删除未使用的补充消息890的列表

补充消息890不再包含在消息列表中,因为它没有被使用。

  • PCLP-3191 改进对MISRA C2012的支持

消息2662(指针上的指针算法可能不引用数组)已添加到支持MISRAC2012规则18.1的消息列表中,从而增强了对该规则的支持。

  • PCLP-3193 改进了对消息857的数组参数的处理

消息857(memcmp/memcpy/memmove函数中的参数不兼容)以前没有发出,当时分析函数调用的前两个参数中的一个或两个参数都是经过数组以指针衰减的数组。这样的调用现在是857的候选,并且将适当地分析不兼容的参数。

  • PCLP-3194 改进支助A5-2-2

准则A5-2-2以前得到1924号电文的支持。现在,1954年的新消息使它得到了增强,该消息报告已失效。这两个消息现在都由源类型和目标类型参数化。

  • PCLP-3199 澄清消息9075对对象操作,而不是函数

消息9075的描述(外部符号在没有事先声明的情况下定义)以前暗示消息在只报告对象定义时同时报告对象和函数定义。消息的描述已经细化,消息957报告定义的功能,没有原型在范围内。

  • PCLP-3202 消息829现在被发布,用于使用多个包含#pragma once,现在适用于预编译头

消息829(以前为报头发出了一个+的报头警告选项)以前只是在第一次发出指定的报头是#include’d时发出的,当时报头使用了一个#pragma once指令,或者受到报头保护,并且fho标志选项处于活动状态。如果头的第一个包含出现在库代码中(其中此消息通常被抑制),那么随后在非库代码中包含头将不会被诊断。消息829现在为适当的标题发出,而不管是否存在#pragma once或头保护。

  • PCLP-3203 正确的错误描述信息9134

消息9134的描述已被更新,以替换消息文本中使用预期未签名的单词的出现。

  • PCLP-3206 改进对报告块范围函数声明的支持

消息1798已添加到AUTOSARM3-1-2和MISRAC++规则3-1-2。消息9108在C++模块中不再受限制。这两条信息的描述已经澄清。

  • PCLP-3207 改进静态存储持续时间变量的处理,当调用带有断言语义的函数时

跟踪静态局部变量和全局变量,在调用函数时具有内置的特殊语义断言功能已得到改进。

  • PCLP-3212 报告通过成员-init-list初始化发生的隐式转换。当转换发生在成员列表初始化中时,一些隐式转换消息(包括712、915、919和9117)没有发出。现已报告这种转换。
  • PCLP-3214 改善对信息管理系统C2004年的支助

消息9234(移位量超过操作数的底层类型的大小),用于支持MISRAC2004规则12.8,现在报告了除了简单的移位操作符之外涉及复合移位分配的违规行为。


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


标签:

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


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP