0

我们使用 Klocwork 9.6 进行静态代码分析。
为了执行分析,我们使用命令行工具“kwcheck”命令
有一些我们只想过滤掉的错误。
例如

(Local) *.cpp:134 UNINIT.STACK.ARRAY.MIGHT (1:Critical) Analyze
'FRUSerial' array elements might be used uninitialized in this function.

(Local) *.cpp:187 INFINITE_LOOP.LOCAL (2:Error) Analyze
Infinite loop

它应该通过 Klocwork 功能而不是输出后处理来实现。

是否有任何适合此的特定 Klocwork 命令/开关?

4

1 回答 1

1

您可以使用该kwcheck set-status命令将缺陷的状态从分析更改为忽略或不是问题。例如,对于下面列出的缺陷:

1 (Local) foo.cpp:134 UNINIT.STACK.ARRAY.MIGHT (1:Critical) Analyze
'FRUSerial' array elements might be used uninitialized in this function.

2 (Local) foo.cpp:187 INFINITE_LOOP.LOCAL (2:Error) Analyze
Infinite loop

上面每个问题前面的数字是缺陷的 ID,作为kwcheck run或的输出kwcheck list。因此,要引用第二个缺陷并使用注释将状态设置为忽略,您将运行:

kwcheck set-status 2 --status ignore -c "we want to ignore this"

请注意,默认情况下kwcheck list仅显示状态为“分析”或“修复”的缺陷,因此通过将状态设置为这些其他值之一,将不再显示缺陷。如果您想查看具有特定状态的缺陷列表,例如您设置为忽略的缺陷,您可以使用-sor--status选项kwcheck list来指定要显示的状态。

如果要完全禁用特定检查器,可以使用kwcheck disable命令禁用它们。这要求您已经创建了一个本地项目以使用该kwcheck create命令进行分析。您甚至可以将本地项目创建为临时工件,以自定义和控制本地分析和结果。不需要将其与 Klocwork 服务器上的项目连接。例如:

创建本地项目:

kwcheck create

禁用检查器以检查您不想看到的缺陷:

kwcheck disable UNINIT.STACK.ARRAY.MIGHT INFINITE_LOOP.LOCAL

运行分析:

kwcheck run -b buildspec.out
于 2013-11-14T20:28:13.503 回答