alexfh added a comment.

Artem, could you set the repository to `rG LLVM Github Monorepo` when uploading 
patches as mentioned in 
https://llvm.org/docs/Phabricator.html#requesting-a-review-via-the-web-interface
 ? This way you'll allow pre-merge checks to run.

In D95403#2534714 <https://reviews.llvm.org/D95403#2534714>, @aaron.ballman 
wrote:

>> This patch introduces a frontend flag -analyzer-tidy-checker=...
>
> FWIW, the usual clang-tidy nomenclature is to call these "checks" rather than 
> "checkers", so it might make sense to expose `-analyzer-tidy-checks=...` to 
> be analogous to `clang-tidy -checks=...`

I vaguely remember discussing (most probably, with @gribozavr2) this difference 
and coming to a conclusion that there's no strong reason to keep the 
nomenclature difference between the static analyzer and clang-tidy. This didn't 
go much farther beyond creating the clang-tools-extra/test/clang-tidy/checkers/ 
directory, but we could revisit this, since we're looking into more interaction 
between the tools.



================
Comment at: clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp:54-60
+#include "../../clang-tools-extra/clang-tidy/ClangTidyCheck.h"
+#include "../../clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h"
+#include "../../clang-tools-extra/clang-tidy/ClangTidyForceLinker.h"
+#include "../../clang-tools-extra/clang-tidy/ClangTidyModule.h"
+#include "../../clang-tools-extra/clang-tidy/ClangTidyModuleRegistry.h"
+#include "../../clang-tools-extra/clang-tidy/ClangTidyOptions.h"
+#include "../../clang-tools-extra/clang-tidy/ClangTidyProfiling.h"
----------------
NoQ wrote:
> alexfh wrote:
> > Isn't this a layering violation, since clang-tidy depends on 
> > clangStaticAnalyzerCore and clangStaticAnalyzerFrontend?
> Yes, absolutely.
> 
> That said, the only purpose of clang-tidy's dependency on libStaticAnalyzer* 
> is integration of static analyzer into clang tidy which is definitely not 
> something we want to enable when we're baking clang-tidy back into clang. It 
> never makes sense to run static analyzer through clang-tidy integration into 
> static analyzer.
> 
> So ideally these two dependencies are temporally separated. I could make 
> these dependencies mutually exclusive by making the upcoming option of baking 
> clang-tidy into clang explicitly incompatible with 
> `CLANG_TIDY_ENABLE_STATIC_ANALYZER`.
> 
> But if we want to support building both clang-tidy with static analyzer and 
> static analyzer with clang-tidy from the same sources into the same build 
> directory, that'll probably involve either building two variants of 
> clang-tidy (one with static analyzer for standalone clang-tidy binary and one 
> without to use inside clang binary only) or two variants of static analyzer 
> (one with clang-tidy for the clang binary and one without to use inside 
> clang-tidy binary only).
> 
> Do you have any preference on how should i untangle this?
I hope we could break the dependency cycle without "flipping" the direction of 
dependencies based on a CMake switch. This way it would be easier to replicate 
the dependency structure in other BUILD systems.

Now the dependencies look very roughly like this:
```
clangStaticAnalyzerCore:
clangStaticAnalyzerCheckers: clangStaticAnalyzerCore
clangStaticAnalyzerFrontend: clangStaticAnalyzerCheckers clangStaticAnalyzerCore
clangFrontendTool: clangStaticAnalyzerFrontend

clangTidy: clangStaticAnalyzerCore clangStaticAnalyzerFrontend
clang-tidy check libraries gathered under $ALL_CLANG_TIDY_CHECKS
clangTidyMain: clangTidy
clang-tidy: clangTidyMain clangTidy $ALL_CLANG_TIDY_CHECKS
```

Untangled version could look like this:
```
clangStaticAnalyzerCore:
clangStaticAnalyzerCheckers: clangStaticAnalyzerCore
clangStaticAnalyzerFrontend: clangStaticAnalyzerCheckers 
clangStaticAnalyzerCore clangTidyInterface
clangStaticAnalyzerFrontendWithClangTidy: clangTidyImpl $ALL_CLANG_TIDY_CHECKS
clangFrontendTool: clangStaticAnalyzerFrontendWithClangTidy

clangTidyInterface: (with ClangTidy.h, ClangTidyOptions.h, 
ClangTidyDiagnosticConsumer.h and ClangTidyProfiling.h, for example)
clangTidyImpl: clangTidyInterface clangStaticAnalyzerCore 
clangStaticAnalyzerFrontend
clang-tidy check libraries gathered under $ALL_CLANG_TIDY_CHECKS
clangTidyMain: clangTidyImpl
clang-tidy: clangTidyMain clangTidyImpl $ALL_CLANG_TIDY_CHECKS
```

What do you think?



Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D95403

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to