标签: klocwork

你有没有比较过静态分析工具Klocwork和Findbugs?

我们使用Klocwork作为静态分析工具.

Klocwork是一种商业工具,具有许多优点,但也存在假阳性等局限性.

我想知道谁曾将Klocwork与Findbugs等其他开源工具进行比较.

通常,已知商业工具比开源工具更可靠.

但我认为Klocwork在特定业务领域也有一些可靠的问题,比如android.

你能否说Klocwork优于其他开源工具,尤其是Findbugs在误报和漏报方面?

code-analysis static-analysis findbugs klocwork

11
推荐指数
1
解决办法
1万
查看次数

Klocwork(或其他工具)可以知道类型,typedef和#define指令吗?

我一直在寻找工具来帮助检测阻止程序作为64位代码正常运行的错误.最近,我一直在玩弄Klocwork及其自定义检查器功能,这让我可以使用XPath将源代码导航为树.这对于正则表达式来说是一种"更聪明"的替代方法,但我无法让它知道类型.

例如,假设我想找到一个for使用a int或a long计数的循环的每个实例.以下代码很容易找到.

for (int i = 0; i < 10; i++)
    // ...
Run Code Online (Sandbox Code Playgroud)

搜索此代码很简单,因为变量定义就在循环内部.但是,请考虑以下示例.

int i;
// ...
for (i = 0; i < 10; i++)
    // ...
Run Code Online (Sandbox Code Playgroud)

这很难找到,因为变量定义与循环是分开的,并且必要的XPath表达式要么笨重,要么容易出错.

那么,自定义Klocwork规则可以找到这样的表达式,其中类型感知是必要的,包括解析typedef#define语句?还有其他工具可以做到这一点吗?

编辑1:考虑以下示例.

typedef int myint;

void Foo() {
    int i;
    for (i = 0; i < 10; i++) {
        Bar();
    }

    myint j;
    for (j = 0; j < 10; j++) {
        Bar();
    }
}
Run Code Online (Sandbox Code Playgroud)

ahmeddirie提供 …

c++ static-analysis klocwork

6
推荐指数
1
解决办法
1089
查看次数

字符串如何在c的内存中表示

char imei_temp[14] = {0, };

strcpy(imei_temp, "00000000000000");
Run Code Online (Sandbox Code Playgroud)

根据我的理解,这是有效的代码.

但是Klocwork说缓冲区溢出,' imei_temp'的数组索引可能超出范围.imei_temp大小为14的数组' '可以使用索引值0..14

c string pointers klocwork

2
推荐指数
1
解决办法
1353
查看次数

了解Klocwork按位操作符号

通过klocwork分析时,以下行

pTxData[index] =  ( UINT8_C(0) << UINT8_C(4) );
Run Code Online (Sandbox Code Playgroud)

给出错误

按位运算的操作数的类型为“符号字符”,而不是“无符号整数”

我已经通过删除任何问题将问题减少到最低程度,#define并且完全不知道为什么会发生这种情况。

c bit-shift klocwork

2
推荐指数
1
解决办法
72
查看次数

使用Klocwork分析mac中的iOS应用程序

我必须使用Klocworks对iPhone应用程序进行静态分析.我在mac os X上安装了Klockworks,项目是使用XCode编写的.

但我没有开发人员证书(并且不想购买它们,因为我只想进行静态分析).使用xocdebuild命令不构建应用程序.

有人可以告诉我怎么做xcode项目的静态分析?

谢谢.

xcode static-analysis objective-c ios klocwork

1
推荐指数
1
解决办法
740
查看次数

从'atoi'收到未经验证的整数值

对于以下代码,klocwork报告未经验证的整数值'val'是从'atoi'接收的,可用于访问数组

int main(int argc, char **argv)
{
    int i = 0;
    int val = 0;
    for (i = 0; i < argc; i++)
    {
        if (argv[i])
        {
            val = atoi(argv[i]);
            ......
            ......
        }
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我无法解决这个问题.如果argv [i]不是数字,那么atoi将返回0.什么是klocwork在这里期待?

c klocwork

1
推荐指数
1
解决办法
1141
查看次数