This checker is fundamentally flawed, because this problem requires
all-path data-flow analysis.
This checker relies on the paths that have been visited during the
exploration of the exploded graph. There are no guarantees that the
symbolic execution will explore all paths. What's more, in practice,
most of the time it does not. Thus, we see way too many annoying false
positives.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
clang/include/clang/StaticAnalyzer/Checkers/Checkers.td | ||
---|---|---|
847 | TODO, update the ReleseNotes. |
Out of thin air I could come up with the following one below. Seems like try is not handled, but it is not attached to the fact of being non full-path. Maybe I was in too much rush, perhaps we should leave this checker here.
Besides, there is an annoying true positive which should be suppressed IMHO.
clang/lib/StaticAnalyzer/Checkers/UnreachableCodeChecker.cpp | ||
---|---|---|
53–54 | To be honest, I missed this. So, at least the checker does not report, when the budge is out, i.e. when we definitely know for sure that we could not explore the whole graph. On the other hand, even if there is no work remaining for the engine, we still cannot be sure that all theoretical program paths have been covered can we? |
TODO, update the ReleseNotes.