[PATCH] D153340: [include-cleaner] Add an IgnoreHeaders flag to the command-line tool.
Kadir Cetinkaya via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 3 08:27:06 PDT 2023
kadircet added inline comments.
================
Comment at: clang-tools-extra/include-cleaner/include/clang-include-cleaner/Analysis.h:67
/// Determine which headers should be inserted or removed from the main file.
/// This exposes conclusions but not reasons: use lower-level walkUsed for that.
+AnalysisResults analyze(
----------------
can you add some comments about how header filter works? `A predicate that receives absolute path or spelling without quotes/brackets, when a phyiscal file doesn't exist. No analysis will be performed for headers that satisfy the predicate.`
================
Comment at: clang-tools-extra/include-cleaner/include/clang-include-cleaner/Analysis.h:72
+ const HeaderSearch &HS,
+ llvm::function_ref<bool(llvm::StringRef)> HeaderFilter =
+ [](llvm::StringRef HeaderPath) {
----------------
rather than a default here, can we just do no filtering when `HeaderFilter` is null ?
================
Comment at: clang-tools-extra/include-cleaner/include/clang-include-cleaner/Types.h:137
+ llvm::StringRef resolvedPath() const;
+
----------------
again some comments here could be useful
================
Comment at: clang-tools-extra/include-cleaner/lib/Analysis.cpp:65
+ const HeaderSearch &HS,
+ llvm::function_ref<bool(llvm::StringRef Path)> HeaderFilter) {
const FileEntry *MainFile = SM.getFileEntryForID(SM.getMainFileID());
----------------
can you drop `Path` or put it in comments
================
Comment at: clang-tools-extra/include-cleaner/test/tool.cpp:17
+// RUN: clang-include-cleaner -print=changes %s --ignore-headers="foobar\.h,foo\.h" -- -I%S/Inputs/ | FileCheck --match-full-lines --allow-empty --check-prefix=IGNORE %s
+// IGNORE-NOT: - "foobar.h"
----------------
can you ignore one but keep other?
it'd be useful to also test the regex behaviour
================
Comment at: clang-tools-extra/include-cleaner/tool/IncludeCleaner.cpp:106
+public:
+ Action(llvm::function_ref<bool(llvm::StringRef Path)> HeaderFilter)
+ : HeaderFilter(HeaderFilter){};
----------------
same as above, can you either drop or comment out `Path`
================
Comment at: clang-tools-extra/include-cleaner/tool/IncludeCleaner.cpp:113
PragmaIncludes PI;
+ llvm::function_ref<bool(llvm::StringRef Path)> HeaderFilter;
----------------
same here for `Path`
================
Comment at: clang-tools-extra/include-cleaner/tool/IncludeCleaner.cpp:157
case PrintStyle::Changes:
- for (const Include *I : Results.Unused)
+ for (const Include *I : Results.Unused) {
llvm::outs() << "- " << I->quote() << " @Line:" << I->Line << "\n";
----------------
nit: braces
================
Comment at: clang-tools-extra/include-cleaner/tool/IncludeCleaner.cpp:225
}
+ std::vector<llvm::Regex> FilterRegs;
+ llvm::SmallVector<llvm::StringRef> Headers;
----------------
nit: might be better to extract this into a function like: `std::function<bool(StringRef)> headerFilter() { /* parses flags, returns a null function on failure */ }`
================
Comment at: clang-tools-extra/include-cleaner/tool/IncludeCleaner.cpp:227
+ llvm::SmallVector<llvm::StringRef> Headers;
+ llvm::StringRef(IgnoreHeaders).split(Headers, ',', -1, /*KeepEmpty*/ false);
+ for (auto HeaderPattern : Headers) {
----------------
s/KeepEmpty/KeepEmpty=/
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D153340/new/
https://reviews.llvm.org/D153340
More information about the cfe-commits
mailing list