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

在PC-lint Plus最新版本中,PC-lint Plus产品更新了很多新功能,跟着小编来了解一下吧~

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

PC-lint Plus免费版


新功能:

  • PCLP-2022 添加+ ffi来格式化大的整数值和相对于附近整数限制的范围

默认情况下,新标志ffi为OFF。启用后,显示较大整数值和范围的Value Tracking消息将相对于附近的有符号或无符号整数类型限制进行格式化。例如,5 +(uint32_t)-1将显示为(UINT32_MAX + 5),而2147480000将显示为(INT32_MAX-3647)。

可以将正值与有符号或无符号类型限制进行比较,而与值表达式类型的有符号性无关。负值将仅相对于有符号整数类型最小值显示。值可以完全匹配限制,也可以在任一方向上偏移。偏移量受限制的平方根大小限制(例如,将32位限制限制为16位偏移量)。不符合相对格式标准的整数仍将按字面意义打印。范围的每一侧都被独立考虑。根据值,可以相对格式显示一个、两个或两个都不显示。

  • PCLP-2173 对CERT C的入门支持

新的au-certc.lnt作者文件(在PC-lint Plus发行版的lnt /目录中)支持CERT C。

  • PCLP-2193 在“值跟踪”中跟踪指针到成员类型的对象的值

现在,“值跟踪”将跟踪从地址运算符的应用派生到非静态成员的合格名称所得出的指针成员类型的对象的值,并评估指针成员运算符*和-> *。

  • PCLP-2247 将+ fcv添加到免除参数中,该参数的唯一参考是将指示可以将它们设为const的消息转换为void

默认情况下,新标志fcv为OFF。启用该选项后,如果对参数的唯一引用是强制转换为void,则PC-lint Plus不会报告该参数可以设为const(或指向const的指针等)。

  • PCLP-2333 在imposter实用程序中添加选项以适应相对路径

imposter实用程序现在支持新选项,以处理涉及相对路径到绝对路径的编译器参数转换。

  • PCLP-2477 支持0.NaN和0.Infinity

PC-lint Plus现在支持某些嵌入式编译器使用的特殊0.NaN和0.Infinity浮点常量。

  • PCLP-2483 新消息2666-具有副作用的表达式已传递给宏的未扩展参数

当使用似乎包含副作用但未扩展相应参数的参数调用类似函数的宏时,会发出新的警告2666,例如:

#define DEBUG_VAL(x)int process(int i) {DEBUG_VAL(++i); // 2666 - increment doesn’t occur/* ... */return i;}
  • PCLP-2484 新消息9501-函数调用中的预处理指令

现在,当预处理指令出现在函数调用中时,将发布新的选修注释9501,例如:

void init_buffer(void *buffer) {memset(buffer, 0,#ifdef LARGE_BUFFER1024#else128#endif);
  • PCLP-2488 新消息973-宏中的一元运算符未加括号

现在,当宏定义中出现不带括号的一元运算符时,将发出选修注释973,例如:

#define N -1
  • PCLP-2503 新消息823-宏的定义以分号结尾

消息823将报告以分号结尾的宏定义,例如

#define SQUARE(x) ((x)*(x));

将报告:

info 823: definition of macro ’SQUARE’ ends in semi-colon#define SQUARE(x) ((x)*(x));^
  • PCLP-2562 新消息9040-成员可能的struct hack声明

过时的“struct hack”技术用于声明可变长度的结构或联合成员。该技术已被C标准中的“灵活的数组成员”所取代。当检测到这种“struct hack”时,新消息9040将报告。

  • PCLP-2571 新消息9502-多语句宏未包含在monocarpic do-while循环中

当do-while(0)循环中未包含多语句宏时,新消息9502将报告。

  • PCLP-2577 新消息3419-浮点型静态数据成员的类内初始化程序是GNU扩展

添加了新消息3419(类型为type的静态数据成员符号的类初始化器是GNU扩展),以警告为C++03模式中的浮点类型的静态数据成员提供类初始化器的不可移植的行为。

  • PCLP-2625 支持BARR-C:2018(以前是Netrino)编码准则

此版本的PC-lint Plus使用发行版的lnt /目录中包含的au-barr.lnt文件,支持Barr Group的“嵌入式C编码标准” BARR-C:2018。 BARR-C:2018是PC-lint 9支持的Netrino编码标准的更新版本。与Netrino提供的PC-lint 9相比,PC-lint Plus为该版本提供了更大的支持。

  • PCLP-2699 信号的新语义和消息

新功能语义:

-async_signal_safe:可在信号处理程序中安全调用,抑制了2670和2761

-async_signal_unsafe:在信号处理程序中调用不安全,触发2670

-signal_handler:将函数标记为信号处理程序

-exception_signal_handler:除了signal_handler之外,还触发2671和2764

-signal_register(n):参数n将使用前面参数的信号编号注册为信号处理程序,以确定是否为异常信号注册了信号处理程序新消息:

-2670:当具有signal_handler语义的函数调用具有async_signal_unsafe语义的函数时发出

-2761:当具有signal_handler语义的函数调用不具有async_signal_safe语义的函数时发出

-2762:当具有signal_handler语义的函数调用具有信号函数的特殊语义的函数时发出

-2763:当具有signal_handler语义的函数调用具有信号函数的特殊语义的函数来注册自身时发出

-2671:当具有exception_signal_handler语义的函数包含return语句时发出

-2764:当具有exception_signal_handler语义的函数似乎没有显式结束程序时发出

-2765:当具有signal_handler语义的函数引用的共享变量不是_Atomic,std :: atomic或volatile sig_atomic_t时,发出

  • PCLP-2722 具有新名词参数语义的新随机数生成器和种子函数消息

当调用rand / random但从未调用srand / srandom时,将发出新消息2461。当调用srand/srandom并给出时间结果时,将发出新的消息2760。一个新的论点语义,名义上,已被添加。如果具有名义语义的参数的自变量是文字(整数、浮点、字符或字符串),则将发出新消息2460。如果具有名义语义的参数的参数是整数常量表达式,则将发出新消息2960。

在此版本中,PC-lint Plus新功能更新得比较多,小编把这些内容分为上下两篇,想要了解后半部分内容请继续关注我们网站~您也可以下载PC-lint Plus最新版免费评估~

相关内容推荐:

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

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

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

C和C ++的静态分析工具PC-lint Plus v1.3更新内容:文档改进


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

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

标签:

来源:慧都

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

上一篇 2020年1月5日
下一篇 2020年1月5日

相关推荐

发表回复

登录后才能评论