@@ -526,7 +526,7 @@ class CheckerBase : public CheckerFrontend, public CheckerBackend {
526526public:
527527 // / Attached to nodes created by this checker class when the ExplodedGraph is
528528 // / dumped for debugging.
529- StringRef getDebugName () const override ;
529+ StringRef getDebugName () const final ;
530530};
531531
532532// / Simple checker classes that implement one frontend (i.e. checker name)
@@ -545,16 +545,22 @@ class Checker : public CheckerBase, public CHECKs... {
545545// / Checker families (where a single backend class implements multiple related
546546// / frontends) should derive from this template, specify all the implemented
547547// / callbacks (i.e. classes like `check::PreStmt` or `eval::Call`) as template
548- // / arguments of `FamilyChecker` and implement the pure virtual method
549- // / `StringRef getDebugName()` which is inherited from `ProgramPointTag`
550- // / and should return a string identifying the class for debugging purposes.
548+ // / arguments of `FamilyChecker`.
551549template <typename ... CHECKs>
552550class CheckerFamily : public CheckerBackend , public CHECKs ... {
553551public:
554552 template <typename CHECKER>
555553 static void _register (CHECKER *Chk, CheckerManager &Mgr) {
554+ Chk->CheckerBackendName = Mgr.getCurrentCheckerName ();
556555 (CHECKs::_register (Chk, Mgr), ...);
557556 }
557+
558+ // / Attached to nodes created by this checker class when the ExplodedGraph is
559+ // / dumped for debugging.
560+ StringRef getDebugName () const final { return CheckerBackendName; }
561+
562+ private:
563+ CheckerNameRef CheckerBackendName;
558564};
559565
560566template <typename EVENT>
0 commit comments