[PATCH] D78126: [analyzer][NFC] Don't allow dependency checkers to emit diagnostics

Kristóf Umann via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Apr 15 02:41:50 PDT 2020


Szelethus marked an inline comment as done.
Szelethus added inline comments.


================
Comment at: clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h:153
+#undef CHECKER_DEPENDENCY
+#undef GET_CHECKER_DEPENDENCIES
+  }
----------------
Szelethus wrote:
> balazske wrote:
> > Probably too much of assert here (but it works)? (There is not a way to get the dependency data "dynamically", like //"Checker->isDependentOn(OtherChecker)"//?)
> Wow, you're totally correct, I didn't even consider that. Indeed, this doesn't work with plugins (or checkers from unit tests), but it should be doable, since `CheckerManager` owns `CheckerRegistry` (D75360). This is kind of ironic, considering how much I tend to block patches based on this :^)
Oh, to actually answer your question. The checker dependency information is stored in `CheckerRegistry` in this small struct:
```lang=cpp
  struct CheckerInfo {
    enum class StateFromCmdLine {
      // This checker wasn't explicitly enabled or disabled.
      State_Unspecified,
      // This checker was explicitly disabled.
      State_Disabled,
      // This checker was explicitly enabled.
      State_Enabled
    };

    InitializationFunction Initialize = nullptr;
    ShouldRegisterFunction ShouldRegister = nullptr;
    StringRef FullName;
    StringRef Desc;
    StringRef DocumentationUri;
    CmdLineOptionList CmdLineOptions;
    bool IsHidden = false;
    StateFromCmdLine State = StateFromCmdLine::State_Unspecified;

    ConstCheckerInfoList Dependencies;
    //...
  };
```
So the nice solution should make this info a bit more visible.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D78126





More information about the cfe-commits mailing list