美文网首页技艺实践程序员
推荐一招:gcc如何忽略第三方库引发的告警

推荐一招:gcc如何忽略第三方库引发的告警

作者: 而立不惑之年 | 来源:发表于2018-02-28 16:47 被阅读51次

问题提出


业务代码使用了google buffer以后,编译时会有大量告警,导致CI失败。告警如图:


编译告警

问题解决


在CMake中可以在CMakefiles实现目录和文件来忽略告警。

  • 对于cpp文件:
set_property(
        SOURCE PythonHelper.cpp
        APPEND_STRING
        PROPERTY COMPILE_FLAGS
        "-Wno-shadow -Wno-conversion -Wno-sign-conversion -Wno-format-security -Wno-format-nonliteral"
)
  • 对于目录:
set(CMAKE_CXX_FLAGS_DEBUG "-D_DEBUG")

因为头文件的包含关系,很多时候处理时会扩大范围,导致忽略的太多,操作起来不方便。利用代码可以精准实现忽略处理,思路:
参考《6.61.12 Diagnostic Pragmas》可以解决。示例代码:

#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wall"
#pragma GCC diagnostic ignored "-Wconversion"
#pragma GCC diagnostic ignored "-Wsign-conversion"
#pragma GCC diagnostic ignored "-Wshadow"
#endif
#include <google/protobuf/descriptor.h>
#include <google/protobuf/message.h>
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif

特殊情况说明

  • diagnostic ignored不识别多个告警写一行情况,也不报错。
#pragma GCC diagnostic ignored "-Wall -Wformat=2 -Wconversion -Wsign-conversion -Wshadow"
  • 如果需要忽略 -Wformat=2,应该使用忽略-Wformat。
//编译错误
#pragma GCC diagnostic ignored "-Wformat=2"
//正确
#pragma GCC diagnostic ignored "-Wformat"
错误

相关文章

  • 推荐一招:gcc如何忽略第三方库引发的告警

    问题提出 业务代码使用了google buffer以后,编译时会有大量告警,导致CI失败。告警如图: 问题解决 在...

  • 20200413 record

    c++编译告警检查clang + llvm(写代码扩展检查项) clangtidy + gcc自带的告警检查(是否...

  • iOS Cocoapods 更新指定的库

    更新指定第三方库 只安装新添加的库,已更新的库忽略 只更新指定的库,其它库忽略 Tips: 安装repo镜像

  • linux下nginx安装

    1.首先需要安装 gcc-c++环境yum install gcc-c++2.第三方开发包PCRE 正则表达式库 ...

  • 消除告警 -Wparentheses

    在gcc下使用-Wall选项编译,出现告警: warning: suggest parentheses aroun...

  • iOS Cocoapods命令简单记录

    指定版本 指定第三方库 只安装新增库,不更新已安装的库 只更新指定的库,其它库忽略

  • 支持GIF图片动画

    推荐使用第三方库FLAnimatedImage

  • 关于gcc

    gcc的文件组成 gcc内部使用的程序: gcc涉及到的头文件 gcc涉及到的库文件 关于库文件的链接顺序 gcc...

  • 如何生成以及链接静态库

    这篇文章讲解了如何生成静态库,以及如何与静态库链接。 了解如何生成以及链接静态库,需要对gcc/g++有所了解,这...

  • 生成以及链接动态库

    这篇文章讲解了如何生成动态库,以及如何与动态库链接。 了解如何生成以及链接动态库,需要对gcc/g++有所了解,这...

网友评论

    本文标题:推荐一招:gcc如何忽略第三方库引发的告警

    本文链接:https://www.haomeiwen.com/subject/gnkixftx.html