私が望むものが可能かどうかはわかりませんが、とにかく尋ねます。静的に推論可能な論理エラーを見つけ出すために仲良しになる
私は静的解析を通じて、不正なロジックのために定義されていない動作の明確なインスタンスが発生する可能性があるという警告を出すために、clang-tidyにヒントしたいBoostライブラリコードがあります。明確にすることができます上記のコードで
#include <optional>
int main()
{
std::optional<int> f;
// Spot the UB before it happens and flag it
if(!f)
{
__builtin_unreachable();
}
// Here is the UB
return *f;
}
、静的アナライザ:https://akrzemi1.wordpress.com/2016/12/12/concealing-bugs/は__builtin_unreachable()
は次のようにトリップする打ち鳴らす、きちんと得るかもしれないことを示唆しているが、私は(それは非常にうまくUBの消毒剤をトリップが)それを実現するために失敗しています__builtin_unreachable()
を呼び出さなければならないことを伝えてください。私はclang-tidyにこれを報告したいが、まだclang-tidy-5.0 -checks=* -header-filter=.* temp.cpp -- -std=c++17
は何も報告しない。
注:__builtin_unreachable()
を使用する必要はありません。これは、AndrzejのC++ Blogが提案したものです。 クラントスタティックアナライザ、MSVCスタティックアナライザ、理想的にはクラングティディーを取得して、静的な差し引きによって明らかにUBを発生させ、コンパイル時にフラグを立てなければならないことを推測する手法です。
私が探していないのは、常にがユースケースに関係なく静的解析中に警告を出す構成です。静的解析だけで静的解析の警告が表示されるようにしたいのですが、コンパイル時に静的に推論可能な論理エラーを指定するとUBを呼び出すことができます。
事前に感謝します!