我继承了多个 Windows 应用程序的大型 C++ 代码库,这些应用程序已被许多客户成功使用。
- 代码库很大,>1mill LOC。
- 代码库已有 15 年以上的历史。
- 代码库在某些领域以 C 编程风格和/或不是很现代的 C++ 风格为主,例如不使用标准 C++ 集合和算法。
- 不幸的是,代码库仅以警告级别 2(Visual C++ 中的/W2)编译。我想提高到 3 级 (/W3) 以提高安全性并为 64 位做好准备。
将警告级别提高到 3 的最大问题是收到的许多警告涉及有符号/无符号不匹配,我认识到解决现有代码库的所有这些问题将是一项非常艰巨的任务。
什么是确保和强制执行提交到代码库的新代码在编译时增加警告级别的好方法?
用更一般的术语来说,这个问题可以改写为如何将提高的编程质量强制执行到新提交的代码中。如果您什么都不做,根据我的经验,新代码往往会受到影响并采用与现有代码相似的样式,而不是根据更现代的标准进行改进。
最佳答案
我什至会达到警告级别 4 (/W4)。
由于您使用的是 Visual Studio,因此很容易抑制烦人的警告,例如已签名与未签名的比较:
#pragma warning(disable:NNNN)
NNNN
是您的警告编号。现在将所有这些禁用的警告放在一个头文件中(例如,“tedious_warnings.h”)并在所有地方强制包含该头文件 - 项目属性 -> C/C++ -> 高级 -> 强制包含文件。
稍后,或者更好,尽快,删除强制包含并通过警告解决问题,因为它们中的大多数都很容易修复(size_t
而不是 int
等).
关于c++ - 通过提高新 C++ 代码的警告级别来强制构建的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6014815/