[PATCH] D75271: [Analyzer][NFC] Add AnalyzerOptions parameter to shouldRegisterXXX() functions

Csaba Dabis via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Feb 27 10:22:34 PST 2020


Charusso added a comment.

In D75271#1895949 <https://reviews.llvm.org/D75271#1895949>, @baloghadamsoftware wrote:

> It is impossible to use `CheckerManager` as parameter for `shouldRegisterXXX()` because `CheckerRegistry` does not have it. If I add `CheckerManager` to `CheckerRegistry` then the `printXXX()` functions will not work because they do not have `CheckerManager` at all. This patch does not help in printing error message, see D75171 <https://reviews.llvm.org/D75171>. I need a way to solve 44998 <https://bugs.llvm.org/show_bug.cgi?id=44998> by rejecting the checker if the option is disabled **and** printing an error message.


Aha, I see as of D75171 <https://reviews.llvm.org/D75171>. Well, @Szelethus felt the same to pass around the `CheckerManager`. Let us see:

  std::unique_ptr<CheckerManager> ento::createCheckerManager(
      ASTContext &context,                                     
      AnalyzerOptions &opts,
      ArrayRef<std::string> plugins,
      ArrayRef<std::function<void(CheckerRegistry &)>> checkerRegistrationFns,
      DiagnosticsEngine &diags) {                                               
    auto checkerMgr = std::make_unique<CheckerManager>(context, opts);
                                                                        
    CheckerRegistry allCheckers(plugins, diags, opts, context.getLangOpts(),
                                checkerRegistrationFns);                      
                                                          
    allCheckers.initializeManager(*checkerMgr);
    allCheckers.validateCheckerOptions();        
    checkerMgr->finishedCheckerRegistration();
                                                
    return checkerMgr;
  }

- from `StaticAnalyzer/Frontend/CheckerRegistration.cpp`.

Are you sure we cannot pass around the manager like `allCheckers.initializeManager(*checkerMgr);`? I am also thinking of a glue-layer between the two managers, like `CheckerRegistryManager` or something, which holds all your needs, like `AnalyzerOptions` and `LangOptions` for now.

I think if we ask @Szelethus kindly to design his callback using `CheckerManager` instead, we could simplify this patch a lot. As he is the code owner, most likely he continues his journey to make sure people enable the checker dependencies, most likely using `shouldRegisterXXX()`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75271/new/

https://reviews.llvm.org/D75271





More information about the cfe-commits mailing list