如何在 C++ 中禁用 CodeSonar 警告

How to disable a CodeSonar warning in C++

标题说明了一切...我有一个项目需要清理 MISRA 2004,公司被告知 CodeSonar 是进行静态分析的好工具。

在其他静态分析工具上,您可以添加魔术注释以禁用对下一个 line\block 代码的分析,(PC-Lint 是 //lint -esym(42),CStat 使用 #pragma cstat_suppress="MISRAC++2008-6-4-1" ) 但 CodeSonar 似乎没有任何等效项 - 请告诉我我错了!

我看到有人提到了 // NOSONAR,但这在 CodeSonar 5.1

上似乎不起作用

(我很快得出结论,CS 是一堆垃圾,由从未在现实世界中使用 SVN 编程过的人和多个程序员编写,其中花哨的禁用警告 UI 下降了当您将分支合并到主干并且所有行号都发生变化时,这很糟糕。)

查看配置变量 WARNING_FILTER 的文档和示例。

CodeSonar 在任何版本中都不提供开箱即用的 // NOSONAR。但是,WARNING_FILTER 的一种可用规则形式将允许您自己实施一个,如果您决定采用这种方法的话。

如果你需要抑制一个特定的警告,你应该可以直接注释警告。用于在分析之间关联 'the same' 警告的签名不依赖于行号或其他极有可能更改的代码功能。

从 CodeSonar 4.0.0 开始,WARNING_FILTER 中添加了一个新的过滤器选项:line_content 允许您添加 "magic comment".

将以下行添加到您的 proj_name.conf:

WARNING_FILTER += line_contents:"NOLINT"

这将禁用以 // NOLINT

结尾的行的警告