It turns out that the CheckerManager::hasPathSensitiveCheckers() missed checking for the BeginFunctionCheckers.
It seems like other callbacks are also missing:
- ObjCMessageNilCheckers
- BeginFunctionCheckers
- NewAllocatorCheckers
- PointerEscapeCheckers
- EndOfTranslationUnitCheckers
In this patch, I wanted to use a fold-expression, but until C++17 arrives we are left with the old-school method.
When I tried to write a unittest I observed an interesting behavior. I subscribed only to the BeginFunction event, it was not fired.
However, when I also defined the PreCall with an empty handler, suddenly both fired.
I could add this test demonstrating the issue, but I don't think it would serve much value in a long run. I don't expect regressions for this.
However, I think it would be great to enforce the completeness of this list in a runtime check.
I could not come up with a solution for this though.
PS: Thank you @Szelethus for helping me debugging this.
Maybe we can use LLVM_ATTRIBUTE_UNUSED instead?