c++ - 有没有办法我们可以禁用 CodeSonar 生成的特定行上的警告

标签 c++ sonarqube devops static-code-analysis automotive-grade-linux

我们正在使用第三方库 dlt 进行日志记录,codeSonar 在特定日志中显示警告,例如:- INFO_LOG(dltContext,"这是我的日志"); 警告文本:分配类型不适当 对参数的这种分配是分配给不同基本类型类别的位置。该位置的基本类型为signed/int(32位),该值的基本类型为character/char(8位)。违反 MISRA C:2012 10.3:表达式的值不得分配给具有较窄基本类型或不同基本类型类别的对象。

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

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

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

最佳答案

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

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

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

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

丢弃包含文本“请勿在此处发出警告”(可能在注释中)的源代码行中出现的所有警告。

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

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

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

如果您想根据具体情况处理警告,可以将警告结果设置为“不关心”。设置后,除非您在中心使用可见警告过滤器“全部”,否则警告将不会显示。 (更多信息可在手册中搜索“可见性过滤器选择器”,然后单击搜索结果“GUI 引用”,然后在该页面中搜索“可见性过滤器选择器”)

该设置将在未来的所有分析中保留。

您可以在手册中找到有关更改警告的更多信息,方法是搜索“警告报告”,单击搜索结果“GUI:警告报告”,然后搜索“更改警告表单”页面。

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

WARNING_FILTER += discard is_sysinclude

(注意:您需要确保设置参数: SYSTEM_INCLUDE_PATHS ,更多信息请在手册中搜索“system_include_paths”,然后单击搜索结果“编译器独立配置文件参数”,然后搜索页面对于“指定包含系统包含 header 的文件系统路径。”)

直接联系 GrammaTech 支持的电子邮件位于手册中的内容:“CodeSonar 手册”。

关于c++ - 有没有办法我们可以禁用 CodeSonar 生成的特定行上的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61736806/

相关文章:

continuous-integration - AWS Codepipeline 不更新我的 ECS 集群

C++段错误数组

c++ - 在 cmake 中为 INTERFACE 库设置 LINK_FLAGS

java - 计算方法复杂度的原理是什么?

kubernetes 入口服务注解

azure - 获取每个用户的工作项字段的总统计信息

c++ - 有人可以在谷歌驱动器中推荐一个用于编辑 C++ 文件的应用程序吗?

c++ - OpenGL:如何使光与旋转无关?

python - 不带 .py 后缀的 Sonar python 文件

c# - SonarQube 使用模块方法报告单个项目中的 C# 和 JS 文件?