[PATCH] D30210: [include-fixer] Add usage count to find-all-symbols.
Haojian Wu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 23 00:42:49 PST 2017
hokein added inline comments.
================
Comment at: include-fixer/InMemorySymbolIndex.h:27
- std::vector<clang::find_all_symbols::SymbolInfo>
+ std::vector<clang::find_all_symbols::SymbolAndSignals>
search(llvm::StringRef Identifier) override;
----------------
There are many places using `std::vector<clang::find_all_symbols::SymbolAndSignals>`. Maybe we can use a type alias for it, so that we can type less.
================
Comment at: include-fixer/SymbolIndexManager.cpp:104
+ for (const auto &SymAndSig : Symbols) {
+ const SymbolInfo Symbol = SymAndSig.Symbol;
// Match the identifier name without qualifier.
----------------
I think you miss `&` here.
================
Comment at: include-fixer/find-all-symbols/FindAllMacros.cpp:37
const MacroDirective *MD) {
- SourceLocation Loc = SM->getExpansionLoc(MacroNameTok.getLocation());
- std::string FilePath = getIncludePath(*SM, Loc, Collector);
- if (FilePath.empty()) return;
+ if (auto Symbol = CreateMacroSymbol(MacroNameTok, MD->getMacroInfo())) {
+ FileSymbols[*Symbol].Seen++;
----------------
Nit: No `{}` for single statement in `if`. The same below.
================
Comment at: include-fixer/find-all-symbols/FindAllMacros.h:39
+
+ void Ifdef(SourceLocation Loc, const Token &MacroNameTok,
+ const MacroDefinition &MD) override;
----------------
We are missing tests for these macro usages.
================
Comment at: include-fixer/find-all-symbols/FindAllSymbols.h:52
+ std::string Filename;
+ // Findings for the current source file, flushed on EndSourceFileAction.
+ SymbolInfo::SignalMap FileSymbols;
----------------
s/`on EndSourceFileAction`/`onEndOfTranslationUnit`.
================
Comment at: include-fixer/find-all-symbols/SymbolInfo.h:50
+ // used. These are used to rank results.
+ struct Signals {
+ Signals() {}
----------------
I think we can make a standalone class instead of making it a nested class of `SymbolInfo` because I don't see strong relationship between them. Maybe name it `FindingSignals` or `FindingInfo`.
================
Comment at: include-fixer/find-all-symbols/SymbolInfo.h:72
int LineNumber, const std::vector<Context> &Contexts,
- unsigned NumOccurrences = 0);
+ unsigned NumOccurrences = 0, unsigned NumUses = 0);
----------------
We don't need this method since we have `SymbolAndSignals`?
================
Comment at: include-fixer/find-all-symbols/SymbolInfo.h:101
private:
- friend struct llvm::yaml::MappingTraits<SymbolInfo>;
+ friend struct llvm::yaml::MappingTraits<struct SymbolAndSignals>;
----------------
I'd put this statement inside `SymbolAndSignals`.
================
Comment at: include-fixer/find-all-symbols/SymbolInfo.h:129
- /// \brief The number of times this symbol was found during an indexing
- /// run. Populated by the reducer and used to rank results.
- unsigned NumOccurrences;
+struct SymbolAndSignals {
+ SymbolInfo Symbol;
----------------
Not much better idea on names, how about `SymbolFinding`?
```
struct SymbolFinding {
SymbolInfo Symbol;
FindingInfo Finding;
};
```
https://reviews.llvm.org/D30210
More information about the cfe-commits
mailing list