返回语句后的代码,没有警告
Code after return statement without warning
我们刚刚在代码库中发现了一个问题,其中语句位于返回语句之后。
例如
std::string MyClass::addElement(Type1 &item, const std::string ¶m2)
{
if (param2.empty())
{
// logging
return "";
}
return m_database->addElement(item, param2, item.status, true);
// here I would expect an unreachable code warning
m_database->updateTableA(item.p1, item.p2, item.p3, AType::AType23);
}
我不明白的是,为什么我们的编译器(GCC 4.8.5 和 7(不发出警告?
我们用-std=c++0x -Wall -Wextra -Wsign-compare -Wunknown-pragmas -Wold-style-cast -Wshadow -Wfatal-errors
编译
GCC无法发出死代码警告,因为Wunreachable-code
标志/功能在 4.4 版之后被删除,您可以在此处阅读。
Clang 版本 4(head 现在是 8 出来了,所以我不建议这样做(,当代码使用[-Wunreachable-code
标志编译时,也会发出警告:
警告:代码将永远不会被执行 [-Wunreachable-code]
您可以尝试使用静态分析工具,该列表中有很多。
相关文章:
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- GCC对可能有效的代码抛出init list生存期警告
- 返回语句后的代码,没有警告
- 我在 C++ 代码中遇到错误警告:控制到达非空函数 [-Wreturn 类型] 的末尾
- Cmake:为 C 设置警告级别,并为 MSVC 单独设置C++代码(Visual C++)
- Clang 给了我符号更改的警告,但代码仍然产生正确的输出
- G++ 发出警告,要求删除一个代码的数组,但不删除另一个代码的数组
- 如何在C++中禁用代码声纳警告
- 是否有任何编译器标志可以在下面的代码中用于报告有关 UB 的警告?
- Cppcheck 静态代码分析器实际上可以检测到不太常见的警告(如 "Relative Path Traversal (CWE-23)" 或"Buffer Under-read(CWE-127)")吗
- 如何获取有关 Visual Studio 代码分析中未经检查的函数返回值的警告
- 在VS2017代码分析中抑制外部标头的警告
- 使用代码调整删除"comparison is always false"警告
- 我的代码错误类型警告 1 警告 C4018 和更多错误
- 我不想导出的函数的未记录代码对象警告
- 如何在代码块 IDE 上修复此警告,警告:按值 [-Wcatch-value=] 捕获多态类型"类 std::d omain_error"
- 编辑C Qlist< object*> gt;QML代码和一些QML警告中的模型
- snprintf:相同的代码-在不同的g++编译器上有不同的错误/警告
- 代码生成WreOrder警告
- 为什么我要获得此代码的匿名类型警告