From 6366efeddc60fc245e29c82b00b119d64eb72eea Mon Sep 17 00:00:00 2001 From: Eugene Zelenko Date: Wed, 14 Mar 2018 21:05:51 +0000 Subject: [Tooling] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). llvm-svn: 327573 --- clang/lib/Tooling/CompilationDatabase.cpp | 55 ++++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 16 deletions(-) (limited to 'clang/lib/Tooling/CompilationDatabase.cpp') diff --git a/clang/lib/Tooling/CompilationDatabase.cpp b/clang/lib/Tooling/CompilationDatabase.cpp index 92b76b1..3464a26 100644 --- a/clang/lib/Tooling/CompilationDatabase.cpp +++ b/clang/lib/Tooling/CompilationDatabase.cpp @@ -1,4 +1,4 @@ -//===--- CompilationDatabase.cpp - ----------------------------------------===// +//===- CompilationDatabase.cpp --------------------------------------------===// // // The LLVM Compiler Infrastructure // @@ -17,7 +17,9 @@ #include "clang/Tooling/CompilationDatabase.h" #include "clang/Basic/Diagnostic.h" +#include "clang/Basic/DiagnosticIDs.h" #include "clang/Basic/DiagnosticOptions.h" +#include "clang/Basic/LLVM.h" #include "clang/Driver/Action.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" @@ -26,20 +28,38 @@ #include "clang/Frontend/TextDiagnosticPrinter.h" #include "clang/Tooling/CompilationDatabasePluginRegistry.h" #include "clang/Tooling/Tooling.h" +#include "llvm/ADT/ArrayRef.h" +#include "llvm/ADT/IntrusiveRefCntPtr.h" +#include "llvm/ADT/STLExtras.h" #include "llvm/ADT/SmallString.h" +#include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/StringRef.h" #include "llvm/Option/Arg.h" +#include "llvm/Support/Casting.h" +#include "llvm/Support/Compiler.h" +#include "llvm/Support/ErrorOr.h" #include "llvm/Support/Host.h" #include "llvm/Support/LineIterator.h" +#include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/Path.h" #include "llvm/Support/raw_ostream.h" +#include +#include +#include +#include +#include #include +#include #include +#include +#include + using namespace clang; using namespace tooling; LLVM_INSTANTIATE_REGISTRY(CompilationDatabasePluginRegistry) -CompilationDatabase::~CompilationDatabase() {} +CompilationDatabase::~CompilationDatabase() = default; std::unique_ptr CompilationDatabase::loadFromDirectory(StringRef BuildDirectory, @@ -121,20 +141,20 @@ std::vector CompilationDatabase::getAllCompileCommands() const { return Result; } -CompilationDatabasePlugin::~CompilationDatabasePlugin() {} +CompilationDatabasePlugin::~CompilationDatabasePlugin() = default; namespace { + // Helper for recursively searching through a chain of actions and collecting // all inputs, direct and indirect, of compile jobs. struct CompileJobAnalyzer { + SmallVector Inputs; + void run(const driver::Action *A) { runImpl(A, false); } - SmallVector Inputs; - private: - void runImpl(const driver::Action *A, bool Collect) { bool CollectChildren = Collect; switch (A->getKind()) { @@ -142,16 +162,16 @@ private: CollectChildren = true; break; - case driver::Action::InputClass: { + case driver::Action::InputClass: if (Collect) { - const driver::InputAction *IA = cast(A); + const auto *IA = cast(A); Inputs.push_back(IA->getInputArg().getSpelling()); } - } break; + break; default: // Don't care about others - ; + break; } for (const driver::Action *AI : A->inputs()) @@ -168,7 +188,7 @@ public: void HandleDiagnostic(DiagnosticsEngine::Level DiagLevel, const Diagnostic &Info) override { - if (Info.getID() == clang::diag::warn_drv_input_file_unused) { + if (Info.getID() == diag::warn_drv_input_file_unused) { // Arg 1 for this diagnostic is the option that didn't get used. UnusedInputs.push_back(Info.getArgStdStr(0)); } else if (DiagLevel >= DiagnosticsEngine::Error) { @@ -186,15 +206,18 @@ public: // S2 in Arr where S1 == S2?" struct MatchesAny { MatchesAny(ArrayRef Arr) : Arr(Arr) {} + bool operator() (StringRef S) { for (const std::string *I = Arr.begin(), *E = Arr.end(); I != E; ++I) if (*I == S) return true; return false; } + private: ArrayRef Arr; }; + } // namespace /// \brief Strips any positional args and possible argv[0] from a command-line @@ -224,7 +247,7 @@ static bool stripPositionalArgs(std::vector Args, TextDiagnosticPrinter DiagnosticPrinter(Output, &*DiagOpts); UnusedInputDiagConsumer DiagClient(DiagnosticPrinter); DiagnosticsEngine Diagnostics( - IntrusiveRefCntPtr(new DiagnosticIDs()), + IntrusiveRefCntPtr(new DiagnosticIDs()), &*DiagOpts, &DiagClient, false); // The clang executable path isn't required since the jobs the driver builds @@ -362,11 +385,11 @@ class FixedCompilationDatabasePlugin : public CompilationDatabasePlugin { } }; +} // namespace + static CompilationDatabasePluginRegistry::Add X("fixed-compilation-database", "Reads plain-text flags file"); -} // namespace - namespace clang { namespace tooling { @@ -375,5 +398,5 @@ namespace tooling { extern volatile int JSONAnchorSource; static int LLVM_ATTRIBUTE_UNUSED JSONAnchorDest = JSONAnchorSource; -} // end namespace tooling -} // end namespace clang +} // namespace tooling +} // namespace clang -- cgit v1.1