C和C ++的静态分析工具PC-lint Plus v1.3更新内容:总体改进(中)

翻译|行业资讯|编辑:莫成敏|2019-12-04 14:02:11.070|阅读 95 次

概述:本文描述了在PC-lint Plus v1.3版本中的更新内容之一,总体改进,该内容较多,分为上中下三个部分,这是第二部分内容哦~

# 您正在找协同办公软件吗?点击这里站长给您推荐 #

相关链接:

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

本文描述了在PC-lint Plus v1.3版本中的更新内容之一,总体改进,该内容较多,分为上中下三个部分,这是第二部分内容哦~感兴趣的朋友可以请看下面内容~

点击下载PC-lint Plus最新版


总体改进:

  • PCLP-2610 消息548和9013不再在功能模板实例中发出

    不再为函数模板实例化发出消息548(如果语句没有主体,否则)和9013(“if ... else if”链的末尾没有“else”)。

  • PCLP-2622 现在为单个模块发出消息759和765

    以前,PC-lint Plus在分析多个模块时仅会发出消息759(符号的标头声明可以从标头移动到模块)和765(外部符号可以变为静态)。尽管这与PC-lint 9的行为相匹配,但是这是仅有的两条以这种方式表现的分析消息,它们对用户而言是不直观且不受欢迎的。现在,将在分析单个模块时发出这些消息,并且可以使用常规抑制选项或执行禁用所有全局总结分析的单元检出(-u或-unit_check)来抑制这些消息。

  • PCLP-2627 消息9098软化以进行强制转换

    消息9098(指针参数未指向指针类型或本质上有符号、无符号、布尔或枚举类型的消息)现在将对memcmp的参数进行强制转换。现在可以通过将参数强制转换为适当的类型来抑制此消息。

  • PCLP-2628 消息907和908的增强

    消息907和908的文本已被修改为包括分配上下文并首先引用源类型。先前已在不涉及分配的情况下发布了消息,该分配也已得到纠正。

  • PCLP-2631 改进了针对pclp_config的未知编译器名称的错误消息

    现在,当提供未知的编译器名称时,pclp_config.py实用程序将发出更详细的错误消息。

  • PCLP-2632 扩展消息449和2434的范围

    现在,当访问已释放结构的成员或将数组下标应用于单个已释放对象的地址时,将发出消息449和2434。

  • PCLP-2635 澄清消息9079的文本

    消息9079已被重新措词以阐明参数化类型是目标指针类型,而不是它指向的类型。

  • PCLP-2638 为消息648的变体协调文本

    根据报告消息的上下文,使用不同的文本发布了消息648(计算常量中的溢出)。消息文本已在所有上下文中进行了标准化。

  • PCLP-2639 修复了-help和-dump_messages选项的消息描述中缺少的“C ++”文本。

    在通过-help和-dump_messages选项发出的消息描述中,有时会省略对“C ++”的引用。此问题已得到纠正。

  • PCLP-2658 消息9233的偏移增加了一个已知的负值

    当RHS是常量表达式(作为特殊例外)时,消息9233(按位运算符可能不应用于带符号基础类型的操作数)之前已被移位运算符抑制。此取消操作未考虑常量表达式的值,该值会导致在将消息偏移恒定的负值时被抑制。此问题已得到纠正,并且当以已知的非负值进行移位时,消息9233不只是会为移位运算符进行抑制。

  • PCLP-2659 没有发出消息981转换为类类型

    不打算发出消息981来转换为类类型。解决了在使用initializer_list构造函数时针对类类型显示消息的情况。

  • PCLP-2664 完善消息1762的关闭成员

    消息1762将不再报告可以自动将由lambda表达式创建的闭包类型的成员函数设为const。

  • PCLP-2672 无法打开文件时发出消息305

    当文件存在但PC-lint Plus无法打开它(例如,因为它是目录或没有读取权限)时,有时会发出错误4083(错误读取文件),而不是标准的致命错误305。消息305将代替在这种情况下发出。

  • PCLP-2697 改进了-dump_messages和-dump_message_list的消息文本

    使用-dump_messages和-dump_message_list选项转储消息列表时,有几条消息会在参数化周围插入空格字符。例如,消息330呈现为static_assert failed__ string__而不是static_assert failed __string__。此问题已得到纠正。

  • PCLP-2698 对__has_unique_object_representations类型固有的支持

    PC-lint Plus现在为GCC和Visual Studio 2017使用的__has_unique_object_representations类型特征固有函数提供内置支持。

  • PCLP-2729 支持_Float128用于由pclp_config生成的GCC配置。

    使用pclp_config生成的GCC配置现在将支持_Float128类型。

  • PCLP-2773 不再为依赖表达式发出消息866

    消息866(sizeof的异常参数)先前是针对sizeof的从属表达式发出的,这可能导致误报。对于依赖表达式,将不再发出此消息。

  • PCLP-2784 允许在不同的选项环境中重用间接文件

    以前,多次引用同一个间接文件将导致致命错误314(无法再次使用间接文件)。现在允许重用间接文件,只要在同一选项环境(或祖先选项环境)中未多次引用同一文件即可。此更改旨在简化对选项环境和间接文件的管理。例如,如果您有一个间接文件包含项目级配置,project.lnt和仅适用于某些模块的间接文件,例如opts1.lnt,opts2.lnt等,您现在可以说:

project.lnt
-env_save(PROJECT)
-env_restore(PROJECT) opts1.lnt module1.c
-env_restore(PROJECT) opts2.lnt module2.c
-env_restore(PROJECT) opts1.lnt opts3.lnt module3.c

允许在最后一行中重用opts1.lnt,因为在重用之前恢复了PROJECT环境,并且在保存选项环境时未引用opts1.lnt。

  • PCLP-2803 从MISRA作者文件中删除的对不存在消息的引用

    au-misra2.lnt和au-misra3.lnt文件包含对PC-lint Plus中不存在的消息的一些错误引用。这些参考已被适当删除/更新。

  • PCLP-2805 向au-misra3- amd1.lnt添加了对MISRA C 2012 AMD-1指令4.14的引用

    版本1.1中添加的au-misra3-amd1.lnt文件缺少MISRA C 2012 AMD-1指令4.14。

  • PCLP-2809 按来源位置对“可能是常量”消息进行排序

    早期版本的PC-lint Plus会以不确定的顺序发出“可能是常量”消息(818、843、844、952、953、954、1746、1764)。现在,PC-lint Plus将按照引用的源位置的顺序发出消息。

  • PCLP-2813 现在,从致命错误退出时,将写入SGML终止标签

    使用+ xml或+ html选项时,当PC-lint Plus因致命错误而终止时,不会发出关闭文档标签。现在,在PC-lint退出致命错误之前,将发出关闭标签。

  • PCLP-2821 通过空函数指针警告调用

    现在,当使用空函数指针进行函数调用时,将发出消息413和613。

  • PCLP-2823 不再为已删除的构造函数发出消息1931和9169

    先前为无法删除的构造函数发出了消息1931(构造函数可用于隐式转换)和9169(构造函数可用于从基本类型进行隐式转换)。在这种情况下,将不再发出这些消息。

  • PCLP-2833 改进的异常处理诊断

    PC-lint Plus以前曾假设可能会抛出外部“C”函数,这可能导致与异常有关的意外诊断,例如1550(函数抛出的异常不在抛出列表中)。现在,默认行为假定外部“C”函数未抛出与PC-lint 9行为匹配的函数。新的fxt标志可用于更改此假设。现在还可以识别GCC nothrow属性,该属性允许指定使用+ fxt表示单独假定此类函数抛出时,各个外部“C”函数不抛出。

  • PCLP-2835 在消息1705的文本中添加空间

    消息1705(可以使用嵌套名称说明符访问静态成员)现在在单词operator和字符串参数之间包含一个空格,其中包含所用运算符的拼写。

  • PCLP-2839 消息1762是由于调用了静态成员函数而没有可见的定义

    调用其定义不可见的成员函数通常会阻止将调用函数视为候选const成员函数,因为尚不清楚被调用函数是否修改了实例对象。调用不能修改非可变成员的const成员函数是一个例外。现在,该异常扩展到了静态成员函数(它们根本无法在实例上运行)。结果是消息1762(成员函数可以设为常量)不会仅仅因为调用了这样的函数而被抑制。

相关内容推荐:

C和C ++的静态分析工具PC-lint Plus v1.3更新内容:总体改进(上)


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

04-850x68.png



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,尊重他人劳动成果

文章转载自:Gimpel Software

登录 慧都网发表评论


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关厂商
相关产品
PC-lint Plus

PC-lint Plus是针对C和C ++的综合静态分析解决方案

在线
客服
咨询
电话
400-700-1020
在线
QQ
购物车 反馈 返回
顶部
在线客服系统
live chat