Challenge your imagination!
29
9:48 PM |
2008.10

从2001年的8.0、8.0a一直走到2008年的8.0x,PC-Lint v8一共延续了超过7个年头,估计不是考虑到26个英文字母的后缀都即将耗尽,Gimpel还舍不得用v9的版本号……

粗略看了一下v9的发布说明,相比v8确实有长足的进步(其实我想说的是,v8实在是发展的太落后了……)。不错,很好,很强大!

·终于加入了众望所归的线程分析,可检查锁使用的正确性以及可能缺少锁保护的变量。不过说实话我对这个特性尚持保留态度,因为多线程竞争分析在C/C++中是一个相当复杂的技术,还是等到试用之后再作评论。

·通过预编译头大幅提升复杂项目的检查速度。早该这么做了,PC-Lint对大型工程的检查速度实在不敢恭维。

·栈空间使用统计,可以汇总出单个应用的最大栈空间需求,只要程序中不存在递归并且是具有流程确定性的。赞一下这个功能,在嵌入式开发中尤其实用!

支持Deprecate声明。又一个实用的功能!我们以前也曾采用独立的辅助手段实现这个特性,现在可以整合到PC-Lint中来了。

可以针对一个(组)特定的符号开启某个检查项。易用性的很大改善,使得我们可以更好的运用一些提示级别的检查项。

“宏净化(Macro Scavenging)”。这个功能想必是为了解决PC-Lint与GCC不同版本配合中需要大量人工配置的尴尬局面吧。听起来不错的一个解决方案,具有较强的通用性。

新加入的“-sem”语法:成员方法的初始化/回收职能标识、inout类参数标识、多线程分析辅助标识…… 这一系列补充标识都是非常有实用价值的,尤其是前两项,解决了C++工程维护中扩充成员时经常碰到的忘记写配套的初始化或释放处理的顽疾。

更多新特性就不一一列举了……

呵呵,一下子来了这么多有吸引力的新特性,等不及想要试用一下新版本的PC-Lint了。就是还不知道公司会不会为升级买单。=.=!




Comments(3):  [RSS for comments]   [TrackBack URI]
  1. 1
    lite | 2009.1.6 10:11 AM

    你好,请教个pclint处理gcc代码的的问题。
    代码如下:
    struct tag
    {
    int a;
    float b;
    }e = {a:1, b:2.0};
    但是在pclint中会报614号warning,应该是pclint不支持gcc的这个结构变量按域初始化的语言扩展。查看了pclint doc,貌似包括-cgnu在内的选项都没有提到这个特性。
    有没有什么办法可以解决?
    thx

    [Reply]

    oasisfeng Reply:

    PC-Lint确实对GCC专有语法的支持不是很好,对于你的情况,目前除了屏蔽这个warning暂时还没有更好的处理方式。

    [Reply]

    lite Reply:

    Thx, 之前用的是8.0e, 升级到x后发现已经支持这个c99扩展

    [Reply]

Leave a comment