This commit slightly changes the way suppressions were checked before.
Instead of going up from statements and expressions, where bugs were
found, and looking for statements and declarations with attributes,
we traverse function bodies once and map locations with suppressions.
This approach can help with the majority of AST checks that report
directly on source locations. It is not trivial to map locations
back to nodes, so its much easier to map both nodes and suppressions
to locations and reason only on that level.
clang-tidy: warning: header guard does not follow preferred style [llvm-header-guard]
not useful