c++ - gcc 静态分析器 (Weffc++) : exclude directories

标签 c++ gcc g++ static-analysis software-quality

我有一个使用很多很多库的大项目。其中一些是 HDF5、PugiXML、Boost.ASIO、Qt、MuParser 等等。这些库有的是header包含的,有的是预编译的,有的是我自己编译的。我想使用 gcc 选项 -Weffc++ 来确保我的代码的质量。

问题是,当我启用该选项时,我收到了 2000 多个警告,当我快速浏览列表时,其中有 1 个与我的项目相关,几乎所有其他内容都来 self 包含的标题!遍历整个列表是非常不切实际的。有没有办法告诉 gcc 分析给定目录中的文件,或者以某种方式排除目录(可能是正则表达式?)。

最佳答案

文档中的评论不是好消息:

When selecting this option, be aware that the standard library headers do not obey all of these guidelines; use ‘grep -v’ to filter out those warnings.

您可以使用 pragmas 暂时禁用警告:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Weffc++"
#include <header1>
#include <header2>
#pragma GCC diagnostic push

您还可以使用 -isystem 来指定包含路径,这会抑制来自通过这些路径包含的文件的某些警告。

推荐

只是不要使用-Weffc++。即使在您自己的项目中,它也会产生垃圾。例如,它会要求您为所有 基类定义虚拟析构函数,无论这是否有意义。如果您没有在聚合初始化中初始化每个成员,它会发出警告。我 Handlebars 举在空中说:“那个警告太蠢了!”第一百次,我关闭了 -Weffc++ 并继续我的生活。

在代码质量和执行风格方面有更好的工具。我想到了 clang-tidyclang-modernizeclang-format 等 Clang 工具。

关于c++ - gcc 静态分析器 (Weffc++) : exclude directories,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43568329/

相关文章:

c++ - 未定义对 vector<String> 的引用 g++ 链接器错误

c++ - 链接可执行文件中的共享库与另一个共享库

c++ - 具有不同参数的 std::functions 的集合

c++ - 是否可以使用外部链接重载函数?

c++ - 将 double 转换为 LSBF (little Endian) 十六进制字符串

c++ - 在 g++ 中删除此指针行为

c++ - 如何用PCRE2实现/e修饰符?

c - 使用 gold vs ld 链接器时使用的 glibc/pthreads 的不同符号

c - 为什么 _mm_stream_ps 会产生 L1/LL 缓存未命中?

c++ - C++中的圆括号明显语法错误但编译器没有提示