The program point created by the checker, even if it is an error node, might not be the same as the name under which the report is emitted. In the picture shown below, two tags are placed, one after the call (registering a new symbol as dynamically allocated with the tag unix.DynamicMemoryModeling), and one after the end of the call (when the symbol is leaked with the tag MallocChecker : DeadSymbolsLeak):
Whether its a good idea to create error nodes where the tag and the checker name is different -- I suppose not really, but it doesn't bother me much yet. Could add an assert later down the line.
// Generate leak node. ExplodedNode *N = C.getPredecessor(); if (!Errors.empty()) { // Would it be more elegant to create the emitting checkers tag here? Mind that this is a checker that houses many others. static CheckerProgramPointTag Tag("MallocChecker", "DeadSymbolsLeak"); N = C.generateNonFatalErrorNode(C.getState(), &Tag); if (N) { for (SmallVectorImpl<SymbolRef>::iterator I = Errors.begin(), E = Errors.end(); I != E; ++I) { HandleLeak(*I, N, C); } } }