Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 让clang tidy发现一个静态可推断的逻辑错误_C++_Static Analysis_Clang Static Analyzer_Clang Tidy - Fatal编程技术网

C++ 让clang tidy发现一个静态可推断的逻辑错误

C++ 让clang tidy发现一个静态可推断的逻辑错误,c++,static-analysis,clang-static-analyzer,clang-tidy,C++,Static Analysis,Clang Static Analyzer,Clang Tidy,我不知道我想要的是否可能,但我想还是要问一下 我有一些Boost库代码,我想提示clang tidy发出警告,通过静态分析,由于错误的逻辑,可能会出现未定义行为的明显实例。建议\uuuu内置的unreachable()可能会像这样发出叮当声,但我没能做到这一点(尽管它很好地绊倒了UB消毒剂): #包括 int main() { std::可选f; //在UB发生之前发现并标记它 如果(!f) { __内置的不可访问(); } //这是UB 返回*f; } 在上面的代码中,静态分析器可以清楚地告

我不知道我想要的是否可能,但我想还是要问一下

我有一些Boost库代码,我想提示clang tidy发出警告,通过静态分析,由于错误的逻辑,可能会出现未定义行为的明显实例。建议
\uuuu内置的unreachable()
可能会像这样发出叮当声,但我没能做到这一点(尽管它很好地绊倒了UB消毒剂):

#包括
int main()
{
std::可选f;
//在UB发生之前发现并标记它
如果(!f)
{
__内置的不可访问();
}
//这是UB
返回*f;
}
在上面的代码中,静态分析器可以清楚地告诉您必须调用
\uuu builtin\u unreachable()
。我想让clang tidy报告这一点,但是
clang-tidy-5.0-checks=*-header filter=.*temp.cpp--std=c++17
不报告任何内容

注:我不需要使用<代码>塔尔科夫斯基建立的.<代码> >,这正是C++的博客建议的。strong>任何让clang静态分析器、MSVC静态分析器或理想情况下的clang tidy通过静态推断推断UB必须明显出现的时间并在编译时标记它的技术都是我想要的

我不寻找的是一个在静态分析期间总是触发警告的构造,而不管用例如何。我只想在仅通过静态分析时显示静态分析警告,很明显,在编译时,如果出现一些静态可推断的逻辑错误,可以调用UB


先谢谢你

所以,是的,事实证明,这至少不能在叮当声中完成,而且可能是大多数其他静态分析仪

《为什么不》的血淋淋的细节可以在以下网站找到,但本质上是:

  • 停止问题,即不知道循环是否执行以及如何执行
  • ClangTidy和其他分析器的构建是为了尽可能避免看到死代码。这与上述检查所需的恰恰相反