1

我们将第三方库 dlt 用于记录目的,codeSonar 在特定日志中显示警告,例如:- INFO_LOG(dltContext,"This is my log"); 警告文本:不适当的分配类型此参数分配是不同基本类型类别的位置。该位置具有基本类型有符号/整数(32 位),值具有基本类型字符/字符(8 位)。违反 MISRA C:2012 10.3:表达式的值不应分配给具有较窄基本类型或不同基本类型类别的对象。

因此需要一种使用关键字在行级别禁用警告的方法。 CodeSonar 在这一行显示不适当的分配类型,它对代码的功能没有影响。得到了类似的帖子,但没有帮助:- 如何在 C++ 中禁用 CodeSonar 警告

以上状态使用:- WARNING_FILTER += line_contents:"NOLINT" 在 project.conf 文件中,我尝试过但没有用。

如果有人尝试过,请分享您的看法。环境:x86/c++ 11

4

1 回答 1

1

您可以使用 conf 参数丢弃一行代码中的警告WARNING_FILTER,就像您之前尝试过的那样,如下所示:

语法是:WARNING_FILTER += <action> <rule> [<rule> ...]

丢弃第 11 行文件 main.c 中出现的所有警告。(注意:如果模式中有两个或多个 s,则该模式将应用于匹配所有规则的警告。)

WARNING_FILTER += discard file=main.c line=11

丢弃在包含文本“不要在此处发出警告”(大概在注释中)的源代码行上发生的所有警告。

WARNING_FILTER += discard line_contents:"do not issue a warning here"

您之前尝试的参数仅在项目中的代码行包含“NOLINT”时才有效。

您可以在 CodeSonar 手册中阅读有关如何WARNING_FILTER使用该参数的更多信息,可从您的 CodeSonar 中心访问,方法是单击中心所有页面右上角菜单中的“手册”链接,搜索“warning_filter”。第一个结果应该是“与编译器无关的配置文件参数”,在此页面中搜索“允许在将警告提交到集线器之前对其进行修改,或在未提交的情况下完全丢弃”。

如果您想逐个处理警告,您可以将警告结果设置为“不关心”。设置后,除非您在集线器中使用可见警告过滤器“全部”,否则不会显示警告。(通过搜索“可见性过滤器选择器”并单击搜索结果“GUI 参考”,然后在该页面中搜索“可见性过滤器选择器”来获得更多信息)

该设置将持续用于所有未来的分析。

您可以通过搜索“警告报告”,单击搜索结果“GUI:警告报告”,在页面中搜索“更改警告表”,找到更多关于更改警告的信息。

如果您不想看到系统包含文件的警告,您可以使用此参数:

WARNING_FILTER += discard is_sysinclude

(注意:您需要确保设置参数:SYSTEM_INCLUDE_PATHS,通过搜索“system_include_paths”,然后单击搜索结果“Compiler Independent Configuration File Parameters”,然后在页面中搜索“Specifying file system paths”页面中的更多信息其中包含系统包含标题。”)

直接联系 GrammaTech 支持的电子邮件位于手册目录下:“CodeSonar 手册”。

于 2020-08-06T21:12:50.417 回答