[PATCH] D98709: [clang-tidy] New feature --skip-headers, part 1, skip Decls
chh updated this revision to Diff 360649. chh edited the summary of this revision. chh added a comment. Add one more skip-headers-2.cpp test. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D98709/new/ https://reviews.llvm.org/D98709 Files: clang-tools-extra/clang-tidy/ClangTidy.cpp clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp clang-tools-extra/clang-tidy/ClangTidyOptions.cpp clang-tools-extra/clang-tidy/ClangTidyOptions.h clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp clang-tools-extra/test/clang-tidy/checkers/Inputs/bugprone-forward-declaration-namespace/a.h clang-tools-extra/test/clang-tidy/checkers/Inputs/bugprone-forward-declaration-namespace/b.h clang-tools-extra/test/clang-tidy/checkers/Inputs/skip-headers/a.h clang-tools-extra/test/clang-tidy/checkers/Inputs/skip-headers/b.h clang-tools-extra/test/clang-tidy/checkers/Inputs/skip-headers/my_header1.h clang-tools-extra/test/clang-tidy/checkers/Inputs/skip-headers/my_header2.h clang-tools-extra/test/clang-tidy/checkers/abseil-no-internal-dependencies.cpp clang-tools-extra/test/clang-tidy/checkers/abseil-upgrade-duration-conversions.cpp clang-tools-extra/test/clang-tidy/checkers/bugprone-forward-declaration-namespace-header.cpp clang-tools-extra/test/clang-tidy/checkers/bugprone-forward-declaration-namespace.cpp clang-tools-extra/test/clang-tidy/checkers/bugprone-reserved-identifier.cpp clang-tools-extra/test/clang-tidy/checkers/bugprone-suspicious-include.cpp clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-interfaces-global-init.cpp clang-tools-extra/test/clang-tidy/checkers/google-namespaces.cpp clang-tools-extra/test/clang-tidy/checkers/google-objc-function-naming.m clang-tools-extra/test/clang-tidy/checkers/llvm-include-order.cpp clang-tools-extra/test/clang-tidy/checkers/llvm-prefer-register-over-unsigned.cpp clang-tools-extra/test/clang-tidy/checkers/llvmlibc-implementation-in-namespace.cpp clang-tools-extra/test/clang-tidy/checkers/llvmlibc-restrict-system-libc-headers.cpp clang-tools-extra/test/clang-tidy/checkers/misc-no-recursion.cpp clang-tools-extra/test/clang-tidy/checkers/modernize-deprecated-headers-cxx03.cpp clang-tools-extra/test/clang-tidy/checkers/modernize-deprecated-headers-cxx11.cpp clang-tools-extra/test/clang-tidy/checkers/modernize-pass-by-value-header.cpp clang-tools-extra/test/clang-tidy/checkers/portability-restrict-system-includes-allow.cpp clang-tools-extra/test/clang-tidy/checkers/portability-restrict-system-includes-disallow.cpp clang-tools-extra/test/clang-tidy/checkers/readability-simplify-bool-expr-chained-conditional-assignment.cpp clang-tools-extra/test/clang-tidy/checkers/readability-simplify-bool-expr-chained-conditional-return.cpp clang-tools-extra/test/clang-tidy/checkers/readability-simplify-bool-expr-members.cpp clang-tools-extra/test/clang-tidy/checkers/readability-simplify-bool-expr.cpp clang-tools-extra/test/clang-tidy/checkers/skip-headers-2.cpp clang-tools-extra/test/clang-tidy/checkers/skip-headers.cpp clang-tools-extra/test/clang-tidy/infrastructure/file-filter-symlinks.cpp clang-tools-extra/test/clang-tidy/infrastructure/file-filter.cpp clang-tools-extra/test/clang-tidy/infrastructure/line-filter.cpp clang/include/clang/ASTMatchers/ASTMatchFinder.h clang/lib/ASTMatchers/ASTMatchFinder.cpp Index: clang/lib/ASTMatchers/ASTMatchFinder.cpp === --- clang/lib/ASTMatchers/ASTMatchFinder.cpp +++ clang/lib/ASTMatchers/ASTMatchFinder.cpp @@ -1202,6 +1202,8 @@ if (!DeclNode) { return true; } + if (Options.Filter && Options.Filter->skipDecl(DeclNode)) +return true; bool ScopedTraversal = TraversingASTNodeNotSpelledInSource || DeclNode->isImplicit(); @@ -1454,5 +1456,8 @@ return llvm::None; } +// Out of line key method. +MatchFinder::MatchFinderOptions::DeclFilter::~DeclFilter() = default; + } // end namespace ast_matchers } // end namespace clang Index: clang/include/clang/ASTMatchers/ASTMatchFinder.h === --- clang/include/clang/ASTMatchers/ASTMatchFinder.h +++ clang/include/clang/ASTMatchers/ASTMatchFinder.h @@ -133,11 +133,19 @@ /// Per bucket timing information. llvm::StringMap }; +struct DeclFilter { + virtual bool skipDecl(const Decl *) = 0; + virtual bool skipLocation(SourceLocation) = 0; + virtual ~DeclFilter(); +}; /// Enables per-check timers. /// /// It prints a report after match. llvm::Optional CheckProfiling; + +/// Check if a Decl should be skipped. +std::shared_ptr Filter; }; MatchFinder(MatchFinderOptions Options = MatchFinderOptions()); Index: clang-tools-extra/test/clang-tidy/infrastructure/line-filter.cpp === ---
[PATCH] D98709: [clang-tidy] New feature --skip-headers, part 1, skip Decls
chh updated this revision to Diff 360336. chh edited the summary of this revision. chh added a comment. Add bugprone-forward-declaration-namespace-header.cpp test; fix some coding style warnings. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D98709/new/ https://reviews.llvm.org/D98709 Files: clang-tools-extra/clang-tidy/ClangTidy.cpp clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp clang-tools-extra/clang-tidy/ClangTidyOptions.cpp clang-tools-extra/clang-tidy/ClangTidyOptions.h clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp clang-tools-extra/test/clang-tidy/checkers/Inputs/bugprone-forward-declaration-namespace/a.h clang-tools-extra/test/clang-tidy/checkers/Inputs/bugprone-forward-declaration-namespace/b.h clang-tools-extra/test/clang-tidy/checkers/Inputs/skip-headers/my_header1.h clang-tools-extra/test/clang-tidy/checkers/Inputs/skip-headers/my_header2.h clang-tools-extra/test/clang-tidy/checkers/abseil-no-internal-dependencies.cpp clang-tools-extra/test/clang-tidy/checkers/abseil-upgrade-duration-conversions.cpp clang-tools-extra/test/clang-tidy/checkers/bugprone-forward-declaration-namespace-header.cpp clang-tools-extra/test/clang-tidy/checkers/bugprone-forward-declaration-namespace.cpp clang-tools-extra/test/clang-tidy/checkers/bugprone-reserved-identifier.cpp clang-tools-extra/test/clang-tidy/checkers/bugprone-suspicious-include.cpp clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-interfaces-global-init.cpp clang-tools-extra/test/clang-tidy/checkers/google-namespaces.cpp clang-tools-extra/test/clang-tidy/checkers/google-objc-function-naming.m clang-tools-extra/test/clang-tidy/checkers/llvm-include-order.cpp clang-tools-extra/test/clang-tidy/checkers/llvm-prefer-register-over-unsigned.cpp clang-tools-extra/test/clang-tidy/checkers/llvmlibc-implementation-in-namespace.cpp clang-tools-extra/test/clang-tidy/checkers/llvmlibc-restrict-system-libc-headers.cpp clang-tools-extra/test/clang-tidy/checkers/misc-no-recursion.cpp clang-tools-extra/test/clang-tidy/checkers/modernize-deprecated-headers-cxx03.cpp clang-tools-extra/test/clang-tidy/checkers/modernize-deprecated-headers-cxx11.cpp clang-tools-extra/test/clang-tidy/checkers/modernize-pass-by-value-header.cpp clang-tools-extra/test/clang-tidy/checkers/portability-restrict-system-includes-allow.cpp clang-tools-extra/test/clang-tidy/checkers/portability-restrict-system-includes-disallow.cpp clang-tools-extra/test/clang-tidy/checkers/readability-simplify-bool-expr-chained-conditional-assignment.cpp clang-tools-extra/test/clang-tidy/checkers/readability-simplify-bool-expr-chained-conditional-return.cpp clang-tools-extra/test/clang-tidy/checkers/readability-simplify-bool-expr-members.cpp clang-tools-extra/test/clang-tidy/checkers/readability-simplify-bool-expr.cpp clang-tools-extra/test/clang-tidy/checkers/skip-headers.cpp clang-tools-extra/test/clang-tidy/infrastructure/file-filter-symlinks.cpp clang-tools-extra/test/clang-tidy/infrastructure/file-filter.cpp clang-tools-extra/test/clang-tidy/infrastructure/line-filter.cpp clang/include/clang/ASTMatchers/ASTMatchFinder.h clang/lib/ASTMatchers/ASTMatchFinder.cpp Index: clang/lib/ASTMatchers/ASTMatchFinder.cpp === --- clang/lib/ASTMatchers/ASTMatchFinder.cpp +++ clang/lib/ASTMatchers/ASTMatchFinder.cpp @@ -1202,6 +1202,8 @@ if (!DeclNode) { return true; } + if (Options.Filter && Options.Filter->skipDecl(DeclNode)) +return true; bool ScopedTraversal = TraversingASTNodeNotSpelledInSource || DeclNode->isImplicit(); @@ -1454,5 +1456,8 @@ return llvm::None; } +// Out of line key method. +MatchFinder::MatchFinderOptions::DeclFilter::~DeclFilter() = default; + } // end namespace ast_matchers } // end namespace clang Index: clang/include/clang/ASTMatchers/ASTMatchFinder.h === --- clang/include/clang/ASTMatchers/ASTMatchFinder.h +++ clang/include/clang/ASTMatchers/ASTMatchFinder.h @@ -133,11 +133,19 @@ /// Per bucket timing information. llvm::StringMap }; +struct DeclFilter { + virtual bool skipDecl(const Decl *) = 0; + virtual bool skipLocation(SourceLocation) = 0; + virtual ~DeclFilter(); +}; /// Enables per-check timers. /// /// It prints a report after match. llvm::Optional CheckProfiling; + +/// Check if a Decl should be skipped. +std::shared_ptr Filter; }; MatchFinder(MatchFinderOptions Options = MatchFinderOptions()); Index: clang-tools-extra/test/clang-tidy/infrastructure/line-filter.cpp === --- clang-tools-extra/test/clang-tidy/infrastructure/line-filter.cpp +++ clang-tools-extra/test/clang-tidy/infrastructure/line-filter.cpp @@ -1,4 +1,4 @@ -// RUN: clang-tidy
[PATCH] D98709: [clang-tidy] New feature --skip-headers, part 1, skip Decls
chh updated this revision to Diff 359531. chh retitled this revision from "[clang-tidy] New feature --skip-headers, (tested as default)" to "[clang-tidy] New feature --skip-headers, part 1, skip Decls". chh edited the summary of this revision. chh added a comment. --skip-headers is set to false by default; many tidy tests runs are augmented with explicit --skip-headers or --skip-headers=0 to test this feature as on or off. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D98709/new/ https://reviews.llvm.org/D98709 Files: clang-tools-extra/clang-tidy/ClangTidy.cpp clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp clang-tools-extra/clang-tidy/ClangTidyOptions.cpp clang-tools-extra/clang-tidy/ClangTidyOptions.h clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp clang-tools-extra/test/clang-tidy/checkers/Inputs/skip-headers/my_header1.h clang-tools-extra/test/clang-tidy/checkers/Inputs/skip-headers/my_header2.h clang-tools-extra/test/clang-tidy/checkers/abseil-no-internal-dependencies.cpp clang-tools-extra/test/clang-tidy/checkers/abseil-upgrade-duration-conversions.cpp clang-tools-extra/test/clang-tidy/checkers/bugprone-forward-declaration-namespace.cpp clang-tools-extra/test/clang-tidy/checkers/bugprone-reserved-identifier.cpp clang-tools-extra/test/clang-tidy/checkers/bugprone-suspicious-include.cpp clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-interfaces-global-init.cpp clang-tools-extra/test/clang-tidy/checkers/google-namespaces.cpp clang-tools-extra/test/clang-tidy/checkers/google-objc-function-naming.m clang-tools-extra/test/clang-tidy/checkers/llvm-include-order.cpp clang-tools-extra/test/clang-tidy/checkers/llvm-prefer-register-over-unsigned.cpp clang-tools-extra/test/clang-tidy/checkers/llvmlibc-implementation-in-namespace.cpp clang-tools-extra/test/clang-tidy/checkers/llvmlibc-restrict-system-libc-headers.cpp clang-tools-extra/test/clang-tidy/checkers/misc-no-recursion.cpp clang-tools-extra/test/clang-tidy/checkers/modernize-deprecated-headers-cxx03.cpp clang-tools-extra/test/clang-tidy/checkers/modernize-deprecated-headers-cxx11.cpp clang-tools-extra/test/clang-tidy/checkers/modernize-pass-by-value-header.cpp clang-tools-extra/test/clang-tidy/checkers/portability-restrict-system-includes-allow.cpp clang-tools-extra/test/clang-tidy/checkers/portability-restrict-system-includes-disallow.cpp clang-tools-extra/test/clang-tidy/checkers/readability-simplify-bool-expr-chained-conditional-assignment.cpp clang-tools-extra/test/clang-tidy/checkers/readability-simplify-bool-expr-chained-conditional-return.cpp clang-tools-extra/test/clang-tidy/checkers/readability-simplify-bool-expr-members.cpp clang-tools-extra/test/clang-tidy/checkers/readability-simplify-bool-expr.cpp clang-tools-extra/test/clang-tidy/checkers/skip-headers.cpp clang-tools-extra/test/clang-tidy/infrastructure/file-filter-symlinks.cpp clang-tools-extra/test/clang-tidy/infrastructure/file-filter.cpp clang-tools-extra/test/clang-tidy/infrastructure/line-filter.cpp clang/include/clang/ASTMatchers/ASTMatchFinder.h clang/lib/ASTMatchers/ASTMatchFinder.cpp Index: clang/lib/ASTMatchers/ASTMatchFinder.cpp === --- clang/lib/ASTMatchers/ASTMatchFinder.cpp +++ clang/lib/ASTMatchers/ASTMatchFinder.cpp @@ -1202,6 +1202,8 @@ if (!DeclNode) { return true; } + if (Options.Filter && Options.Filter->skipDecl(DeclNode)) +return true; bool ScopedTraversal = TraversingASTNodeNotSpelledInSource || DeclNode->isImplicit(); @@ -1454,5 +1456,8 @@ return llvm::None; } +// Out of line key method. +MatchFinder::MatchFinderOptions::DeclFilter::~DeclFilter() = default; + } // end namespace ast_matchers } // end namespace clang Index: clang/include/clang/ASTMatchers/ASTMatchFinder.h === --- clang/include/clang/ASTMatchers/ASTMatchFinder.h +++ clang/include/clang/ASTMatchers/ASTMatchFinder.h @@ -133,11 +133,19 @@ /// Per bucket timing information. llvm::StringMap }; +struct DeclFilter { + virtual bool skipDecl(Decl *) = 0; + virtual bool skipLocation(SourceLocation) = 0; + virtual ~DeclFilter(); +}; /// Enables per-check timers. /// /// It prints a report after match. llvm::Optional CheckProfiling; + +/// Check if a Decl should be skipped. +std::shared_ptr Filter; }; MatchFinder(MatchFinderOptions Options = MatchFinderOptions()); Index: clang-tools-extra/test/clang-tidy/infrastructure/line-filter.cpp === --- clang-tools-extra/test/clang-tidy/infrastructure/line-filter.cpp +++ clang-tools-extra/test/clang-tidy/infrastructure/line-filter.cpp @@ -1,4 +1,4 @@ -// RUN: clang-tidy -checks='-*,google-explicit-constructor'