C和C++静态分析工具PC-lint Plus v1.3.5更新:BUG修复(上)

原创|产品更新|编辑:郑恭琳|2020-07-07 13:40:11.147|阅读 172 次

概述: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最新版


BUG修复

  • PCLP-2812 联合定义的误报9045

消息9045(在这个翻译单元中,结构/联盟的完整定义是不必要的)以前为C模块中定义的所有联盟发布。此消息现在只在翻译单元中不需要联合定义的情况下发出。此外,消息9045现在总是带有与定义声明相对应的位置(以前它可以在前向声明的位置发布)。

  • PCLP-2885 通过lambda中的引用捕获变量的误报550

消息550(本地变量随后未被访问)有时会为变量发出,尽管当这个捕获是通过引用完成时,变量是由lambda捕获的。

  • PCLP-3093 解决可能在堆栈使用报告中显示为不完整条目的问题

以前,调用至少一个其他函数的函数的callee可能被错误地报告为(没有函数),在平台特定的情况下,对于分析的源代码中的微小变化非常敏感。这个问题已经解决了。

  • PCLP-3145 改进循环内消息438和838的处理
  • PCLP-2076 在循环中声明的局部变量现在有资格在迭代结束时由消息438报告。消息838将不再向一个变量报告循环中的某些赋值实例,该变量的前一个值是在循环之前分配的。
  • PCLP-3176 修复消息2427的否定错误

已经解决了一个问题,它可以防止在不返回本地变量时出现消息2427实例。

  • PCLP-3179 用内联报告main声明时修复丢失的位置或者解释者

消息2447以前在声明main的位置发出,当报告main被声明为静态的或被定义为删除的时候,但是当报告main被内联声明或constexpr时没有出现位置。消息现在也将在后两种情况下发出一个位置。

  • PCLP-3180 改进交换机语句的堆栈使用

包含switch语句的函数的堆栈使用的准确性已经通过在以前未计算的交换机中包含堆栈使用而得到了提高。现在考虑条件(包括可能的声明)和主体。

  • PCLP-3181 解决一个问题,在这个问题中,联合类型Punning可能导致不受欢迎的未初始化访问消息

解决初始化后直接访问除已初始化的工会成员以外的工会成员时,可能表现为误报530的问题。

  • PCLP-3183 丢失消息2707

消息2707(函数可以声明为‘noreturn’)以前没有在预期时发出,这个问题已经被纠正了。

  • PCLP-3187 带有控制宏但不包含防护的标头的错误否定451967

消息451(重复包含的头文件,但没有头保护)和967(头文件没有标准的包含保护)现在将被发布为具有控制宏的头文件(一个宏,其定义阻止包含头的内容),而不是标准包含保护(如消息451和967的描述所定义)。以前,控制宏的存在足以抑制这些消息,从而导致错误的否定。

  • PCLP-3215 解析数组下标地址的误报473。

在某些情况下,当数组下标表达式的结果的地址被提供为使用常量大小数组的语法声明的函数参数的参数时,消息473的错误正实例可能会发生。

  • PCLP-3224 解决工会内部结构成员可能被错误地报告为解除分配的问题

在访问本身是工会成员的结构的成员时,可能表现为误报449的问题已经解决。

  • PCLP-3229 解决涉及自引用构造函数初始化器的潜在崩溃

使用Diag Info Code-37的崩溃可能发生在构造函数上下文中使用构造函数初始化器修改此指针所指对象的构造函数被移动而不受-skip_function选项约束的情况下。

  • PCLP-3234 IAR编译器中生成的错误选项语法pclp_config

pclp_config针对编译器族iar-rx、iar-rh850、iar-rl78、iar-avr和iar-avr32生成的编译器配置包含不正确的+RW选项,导致在分析过程中不识别保留的单词。这一问题已得到纠正。

  • PCLP-3294 返回函数指针时不要发出1537

当成员函数返回函数指针时,消息1537将不再发出。

  • PCLP-3310 保管指针的误报593总是在in / else语句中关闭/释放
  • PCLP-3333 当在if语句的else分支中有条件地关闭/释放一个托管指针时,有时会发出误报593(托管指针可能没有释放或返回),条件是指针在当时的分支中被推断为空。  例如:
 void g1() {
void* y = malloc(4);
if (!y) { }
else { free(y); }
       }

会错误地报告y可能没有被释放。这种行为已得到纠正。

  • PCLP-3324 解决涉及不完全类型数组的内部错误

Diag Info Code-37中的一个内部错误,当一个不完全类型的数组经历了数组到指针的衰减之后,这个错误就会发生。


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


标签:

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


为你推荐

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