njames93 created this revision. njames93 added reviewers: aaron.ballman, alexfh, LegalizeAdulthood. Herald added subscribers: carlosgalvezp, xazax.hun. Herald added a project: All. njames93 requested review of this revision. Herald added subscribers: cfe-commits, aheejin. Herald added a project: clang-tools-extra.
When dumping the options, canonicalize the GlobList style options before we serialize them. This improves formatting as it prevents mixup when newlines and commas are used in different config files as seperators. It also removes any glob items that appear before a match all as they are disregarded. Depends on D129706 <https://reviews.llvm.org/D129706> Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D130005 Files: clang-tools-extra/clang-tidy/ClangTidyOptions.cpp clang-tools-extra/test/clang-tidy/infrastructure/Inputs/config-files/.clang-tidy clang-tools-extra/test/clang-tidy/infrastructure/Inputs/config-files/1/.clang-tidy clang-tools-extra/test/clang-tidy/infrastructure/config-file.cpp clang-tools-extra/test/clang-tidy/infrastructure/config-files.cpp
Index: clang-tools-extra/test/clang-tidy/infrastructure/config-files.cpp =================================================================== --- clang-tools-extra/test/clang-tidy/infrastructure/config-files.cpp +++ clang-tools-extra/test/clang-tidy/infrastructure/config-files.cpp @@ -1,17 +1,17 @@ // RUN: clang-tidy -dump-config %S/Inputs/config-files/- -- | FileCheck %s -check-prefix=CHECK-BASE -// CHECK-BASE: Checks: {{.*}}from-parent +// CHECK-BASE: Checks: from-parent // CHECK-BASE: HeaderFilterRegex: parent // RUN: clang-tidy -dump-config %S/Inputs/config-files/1/- -- | FileCheck %s -check-prefix=CHECK-CHILD1 -// CHECK-CHILD1: Checks: {{.*}}from-child1 +// CHECK-CHILD1: Checks: from-child1 // CHECK-CHILD1: HeaderFilterRegex: child1 // RUN: clang-tidy -dump-config %S/Inputs/config-files/2/- -- | FileCheck %s -check-prefix=CHECK-CHILD2 -// CHECK-CHILD2: Checks: {{.*}}from-parent +// CHECK-CHILD2: Checks: from-parent // CHECK-CHILD2: HeaderFilterRegex: parent // RUN: clang-tidy -dump-config %S/Inputs/config-files/3/- -- | FileCheck %s -check-prefix=CHECK-CHILD3 -// CHECK-CHILD3: Checks: {{.*}}from-parent,from-child3 +// CHECK-CHILD3: Checks: from-parent,from-child3 // CHECK-CHILD3: HeaderFilterRegex: child3 // RUN: clang-tidy -dump-config -checks='from-command-line' -header-filter='from command line' %S/Inputs/config-files/- -- | FileCheck %s -check-prefix=CHECK-COMMAND-LINE -// CHECK-COMMAND-LINE: Checks: {{.*}}from-parent,from-command-line +// CHECK-COMMAND-LINE: Checks: from-parent,from-command-line // CHECK-COMMAND-LINE: HeaderFilterRegex: from command line // For this test we have to use names of the real checks because otherwise values are ignored. @@ -20,7 +20,7 @@ // Running with the new <key>: <value> syntax // RUN: clang-tidy -dump-config %S/Inputs/config-files/4/key-dict/- -- | FileCheck %s -check-prefix=CHECK-CHILD4 -// CHECK-CHILD4: Checks: {{.*}}modernize-loop-convert,modernize-use-using,llvm-qualified-auto +// CHECK-CHILD4: Checks: modernize-loop-convert,modernize-use-using,llvm-qualified-auto // CHECK-CHILD4-DAG: llvm-qualified-auto.AddConstToQualified: 'true' // CHECK-CHILD4-DAG: modernize-loop-convert.MaxCopySize: '20' // CHECK-CHILD4-DAG: modernize-loop-convert.MinConfidence: reasonable @@ -43,14 +43,14 @@ // RUN: CheckOptions: {modernize-loop-convert.MaxCopySize: 21}}' \ // RUN: %S/Inputs/config-files/4/44/- -- | FileCheck %s -check-prefix=CHECK-CHILD5 -// CHECK-CHILD5: Checks: {{.*}}modernize-loop-convert,modernize-use-using,llvm-qualified-auto,-llvm-qualified-auto +// CHECK-CHILD5: Checks: modernize-loop-convert,modernize-use-using,llvm-qualified-auto,-llvm-qualified-auto // CHECK-CHILD5-DAG: modernize-loop-convert.MaxCopySize: '21' // CHECK-CHILD5-DAG: modernize-loop-convert.MinConfidence: reasonable // CHECK-CHILD5-DAG: modernize-use-using.IgnoreMacros: 'false' // RUN: clang-tidy -dump-config \ // RUN: --config='{InheritParentConfig: false, \ -// RUN: Checks: -llvm-qualified-auto}' \ +// RUN: Checks: "-*,-llvm-qualified-auto"}' \ // RUN: %S/Inputs/config-files/4/44/- -- | FileCheck %s -check-prefix=CHECK-CHILD6 -// CHECK-CHILD6: Checks: {{.*-llvm-qualified-auto'? *$}} +// CHECK-CHILD6: Checks: '-llvm-qualified-auto' // CHECK-CHILD6-NOT: modernize-use-using.IgnoreMacros Index: clang-tools-extra/test/clang-tidy/infrastructure/config-file.cpp =================================================================== --- clang-tools-extra/test/clang-tidy/infrastructure/config-file.cpp +++ clang-tools-extra/test/clang-tidy/infrastructure/config-file.cpp @@ -1,8 +1,10 @@ // RUN: clang-tidy -config-file=%S/Inputs/config-file/config-file -dump-config -- | FileCheck %s -check-prefix=CHECK-BASE -// CHECK-BASE: Checks: {{.*}}hicpp-uppercase-literal-suffix +// CHECK-BASE: Checks: hicpp-uppercase-literal-suffix // RUN: clang-tidy -config-file=%S/Inputs/config-file/config-file-spaces --list-checks -- | FileCheck %s -check-prefix=CHECK-SPACES // CHECK-SPACES: Enabled checks: // CHECK-SPACES-NEXT: hicpp-uppercase-literal-suffix // CHECK-SPACES-NEXT: hicpp-use-auto // CHECK-SPACES-NEXT: hicpp-use-emplace // CHECK-SPACES-EMPTY: +// RUN: clang-tidy -config-file=%S/Inputs/config-file/config-file-spaces -dump-config -- | FileCheck %s -check-prefix=CHECK-DUMP-SPACES +// CHECK-DUMP-SPACES: Checks: hicpp-uppercase-literal-suffix,hicpp-use-auto,hicpp-use-emplace Index: clang-tools-extra/test/clang-tidy/infrastructure/Inputs/config-files/1/.clang-tidy =================================================================== --- clang-tools-extra/test/clang-tidy/infrastructure/Inputs/config-files/1/.clang-tidy +++ clang-tools-extra/test/clang-tidy/infrastructure/Inputs/config-files/1/.clang-tidy @@ -1,2 +1,2 @@ -Checks: 'from-child1' +Checks: '-*,from-child1' HeaderFilterRegex: 'child1' Index: clang-tools-extra/test/clang-tidy/infrastructure/Inputs/config-files/.clang-tidy =================================================================== --- clang-tools-extra/test/clang-tidy/infrastructure/Inputs/config-files/.clang-tidy +++ clang-tools-extra/test/clang-tidy/infrastructure/Inputs/config-files/.clang-tidy @@ -1,2 +1,2 @@ -Checks: 'from-parent' +Checks: '-*,from-parent' HeaderFilterRegex: 'parent' Index: clang-tools-extra/clang-tidy/ClangTidyOptions.cpp =================================================================== --- clang-tools-extra/clang-tidy/ClangTidyOptions.cpp +++ clang-tools-extra/clang-tidy/ClangTidyOptions.cpp @@ -8,6 +8,7 @@ #include "ClangTidyOptions.h" #include "ClangTidyModuleRegistry.h" +#include "GlobList.h" #include "clang/Basic/LLVM.h" #include "llvm/ADT/SmallString.h" #include "llvm/Support/Debug.h" @@ -117,11 +118,25 @@ } } +static void mapGlobList(IO &IO, StringRef Key, Optional<std::string> &Item) { + if (!IO.outputting()) { + IO.mapOptional(Key.data(), Item); + return; + } + if (Item) { + std::string Expanded; + llvm::raw_string_ostream OS(Expanded); + clang::tidy::GlobList(*Item).print(OS); + OS.flush(); + IO.mapRequired(Key.data(), Expanded); + } +} + template <> struct MappingTraits<ClangTidyOptions> { static void mapping(IO &IO, ClangTidyOptions &Options) { bool Ignored = false; - IO.mapOptional("Checks", Options.Checks); - IO.mapOptional("WarningsAsErrors", Options.WarningsAsErrors); + mapGlobList(IO, "Checks", Options.Checks); + mapGlobList(IO, "WarningsAsErrors", Options.WarningsAsErrors); IO.mapOptional("HeaderFilterRegex", Options.HeaderFilterRegex); IO.mapOptional("AnalyzeTemporaryDtors", Ignored); // legacy compatibility IO.mapOptional("FormatStyle", Options.FormatStyle);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits