【发布时间】:2020-01-01 07:31:20
【问题描述】:
我正在使用 GCC 和 Clang 为多个平台编译一个大型项目。我遇到的问题是我在一个平台(Ubuntu 18.04)上完成了所有的错误修复和测试,甚至运行cppcheck 和clang-tidy 等静态工具来查找错误。作为错误修复的一部分,我什至尝试在 Ubuntu 上使用多个编译器进行编译,以确保代码已准备好发布。
但是,有几次我遇到了另一个系统上的开发人员由于缺少简单的包含而无法编译更新的问题。
最近的一个例子是我们引入了一些在 Ubuntu 上的 GCC 和 Clang 中经过大量测试的新功能。然后,MacOS 上的开发人员遇到了一些编译器错误,结果证明这是由于一个文件中缺少#include <array>,而另一个文件中缺少#include <sstream>。我的意思是,当您查看有问题的文件时,他们确实使用了arrays 和stringstreams,所以我明白了。但令我惊讶的是静态工具没有捕捉到这些错误。
那么我该如何解决这个问题呢?它们肯定是编程错误,而不是编译器错误,因为很明显我应该包含这些文件。
【问题讨论】:
标签: c++ gcc clang c++14 static-analysis