The three checks mentioned in the Title are two noisy if the code uses custom (e.g. smart) pointers or references. LLVM/Clang is such a code, it has lots of such types, e.g. StringRef, SymbolRef or ProgramStateRef, all of them based llvm::IntrusiveRefCntPtr. Every time such a type is passed as parameter, used for initialization or in a range-based for loop a false positive warning is issued together with an (unnecessary) fix.
This patch excludes pointer types (e.g. smart pointers) by their name: if the name of the type ends on Pointer, pointer, Ptr, ptr, Reference, reference, Ref or ref the type is considered a pointer/reference type.