C++ 代码潜在问题查找与构建系统实践
1. 查找潜在代码问题
代码中的 bug 会让快速构建变得毫无意义,因此需要借助编译器标志来发现潜在问题。
1.1 屏蔽外部库警告
对于无法修复的外部库代码问题警告,可使用编译器开关来禁用。
- GCC :有常规包含文件(使用 -I
传递)和系统包含文件(使用 -isystem
传递)两种类型。使用 -isystem
指定目录,可避免该目录下头文件产生的警告。
- MSVC :有与 -isystem
等效的 /external:I
,还有 /external:anglebrackets
可将尖括号包含的文件视为外部文件,禁用其警告,也可指定外部文件的警告级别,使用 /external:templates-
保留由自身代码引起的模板实例化警告。
- CMake :若要以可移植方式将包含路径标记为系统/外部路径,可在 target_include_directories
指令中添加 SYSTEM
关键字。
1.2 符合 C++ 标准
为符合 C++ 标准,可在编译选项中添加相应标志。
- GCC/Clang :添加 -pedant