C和C ++的静态分析工具PC-lint Plus v1.3更新内容:修复错误(上)

PC-lint Plus是C和C ++的首选静态分析工具。在PC-lint Plus v1.3版本中,修复了与返回的类对象的成员初始化有关的误报等内容,内容较多,本文是上半部分内容~

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

PC-lint Plus最新版


修复BUG:

  • PCLP-1806 修复与返回的类对象的成员初始化有关的误报

    修复了与函数返回的类对象的成员的初始化状态有关的消息530的误报实例。

  • PCLP-1835 内部错误A9BE308E(100829)与使用定义选项和预编译的头文件有关

    修复了使用定义选项定义预编译头文件中使用的宏时可能遇到的内部错误。

  • PCLP-1972 误报1762

  • PCLP-2612 消息1762(成员函数可以是常量)被错误地发出并且为通过一个成员变量的地址作为在通过函数指针进行的呼叫参数的成员函数。此问题已得到解决。

  • PCLP-2036 识别嵌套的switch语句无条件地转移控制权导致了在封闭switch语句后语句的不可达性的情况

    修复了在内部switch语句之后的情况下,最外层switch语句中消息616和825的误报情况,该情况由于内部嵌套的switch语句无条件地转移了控制,从而无条件地转移了控制权。相反,如果在此类switch语句后出现无法访问的代码,则现在将发出消息527。

  • PCLP-2227 名称处理错误,C ++模板参数中的C复合文字没有类别

    由于在C ++模板参数中使用C复合文字而无法将名称修改应用于声明的情况下,将不再发出消息号为0且没有类别的错误。 现在将发出错误消息180。

  • PCLP-2459 False positive981,用于在C语言中强制转换为_Bool

    在C语言中,将类型为int的布尔运算符转换为_Bool时,将不再报告消息981。

  • PCLP-2521 在C ++ 17模式下遵守冗余列表初始化

    以A a {A {42,1984}}等方式初始化的结构;使用-std = c ++ 17时,将不再错误地报告为未初始化某些成员。

  • PCLP-2560 zero_err和+ zero_err选项支持的警告级别

    -zero_err和+ zero_err被记录为除了消息编号之外还支持带有w前缀的警告级别参数,但是这些选项实际上并未接受该语法。 这些选项现在支持指定已记录的警告级别。

  • PCLP-2598False positive1762,用于在成员表达式中调用非常量函数

    当函数包含作为较大成员表达式一部分的对非const函数的调用时,有时会错误地发出误报

1 struct S { int x; };23 struct A {4 S f(void);5 };67 class B : public A {8 void g(void) {9 f().x;10 }11 };

尽管它调用了非常量成员函数A :: f,但这将导致为B :: g发出1762。此问题已经修复了。

  • PCLP-2621不会报告静态本地符号的问题522/714/729/759/765

    消息522(未访问外部变量)、714(未引用外部符号)、729(未显式初始化外部变量)、759(可将符号的标头声明从标题移至模块)和765(可将外部符号设为静态) 旨在发布具有外部链接的符号。具有外部可见性但没有外部链接的静态局部符号(例如,内联C ++函数中的静态局部变量)有时会错误地引发这些消息。此问题已经修复了。

  • PCLP-2624 消息967并非总是在预期时发出

    修复了消息967(头文件没有标准的包含保护)在预期时并非总是发出的错误。

  • PCLP-2626 消息1790应该考虑间接基类

    现在,消息1790会考虑间接基类中的虚函数,而不仅仅是直接基类。正如消息标题中所反映的,要发出此消息,即时基必须仍然是公共的,但是私有虚拟函数(和私有间接基)将被考虑,因为它们仍然可以被覆盖。

  • PCLP-2649 误报527,switch语句主体内的控制结构中的跳转语句

    消息527将不再报告在某些情况下switch语句结束后的语句是不可访问的,这是因为通过该交换机的唯一未将控制权转移到下一条语句的路径包含在if语句内的continue语句或goto语句,抛出或在for或while语句中返回。

    交换机内goto的行为已更新,可以避免误判,类似于在中断或继续时发生的误报。

本文内容就是这样了,希望文章内容对您有所帮助!后续小编将会更新“修复的bug”下半部分内容,敬请期待哦~感兴趣的朋友可以下载PC-lint Plus最新版抢先体验~

相关内容推荐:

C和C ++的静态分析工具PC-lint Plus v1.3更新内容:新消息摘要


想要购买PC-lint Plus正版授权,或了解更多产品信息请点击“咨询在线客服”

850×682.png

标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年10月1日
下一篇 2019年10月1日

相关推荐

发表回复

登录后才能评论