clang
3.7.0
|
Interface for compilation databases. More...
#include <CompilationDatabase.h>
Public Member Functions | |
virtual | ~CompilationDatabase () |
virtual std::vector < CompileCommand > | getCompileCommands (StringRef FilePath) const =0 |
Returns all compile commands in which the specified file was compiled. More... | |
virtual std::vector< std::string > | getAllFiles () const =0 |
Returns the list of all files available in the compilation database. More... | |
virtual std::vector < CompileCommand > | getAllCompileCommands () const =0 |
Returns all compile commands for all the files in the compilation database. More... | |
Static Public Member Functions | |
static std::unique_ptr < CompilationDatabase > | loadFromDirectory (StringRef BuildDirectory, std::string &ErrorMessage) |
Loads a compilation database from a build directory. More... | |
static std::unique_ptr < CompilationDatabase > | autoDetectFromSource (StringRef SourceFile, std::string &ErrorMessage) |
Tries to detect a compilation database location and load it. More... | |
static std::unique_ptr < CompilationDatabase > | autoDetectFromDirectory (StringRef SourceDir, std::string &ErrorMessage) |
Tries to detect a compilation database location and load it. More... | |
Interface for compilation databases.
A compilation database allows the user to retrieve all compile command lines that a specified file is compiled with in a project. The retrieved compile command lines can be used to run clang tools over a subset of the files in a project.
Definition at line 71 of file CompilationDatabase.h.
|
virtual |
Definition at line 35 of file CompilationDatabase.cpp.
|
static |
Tries to detect a compilation database location and load it.
Looks for a compilation database in directory 'SourceDir' and all its parent paths by calling loadFromDirectory.
Definition at line 96 of file CompilationDatabase.cpp.
References findCompilationDatabaseFromDirectory(), and clang::tooling::getAbsolutePath().
Referenced by clang::tooling::CommonOptionsParser::CommonOptionsParser().
|
static |
Tries to detect a compilation database location and load it.
Looks for a compilation database in all parent paths of file 'SourceFile' by calling loadFromDirectory.
Definition at line 81 of file CompilationDatabase.cpp.
References findCompilationDatabaseFromDirectory(), and clang::tooling::getAbsolutePath().
Referenced by clang::tooling::CommonOptionsParser::CommonOptionsParser().
|
pure virtual |
Returns all compile commands for all the files in the compilation database.
FIXME: Add a layer in Tooling that provides an interface to run a tool over all files in a compilation database. Not all build systems have the ability to provide a feasible implementation for getAllCompileCommands
.
Implemented in clang::tooling::FixedCompilationDatabase, and clang::tooling::JSONCompilationDatabase.
|
pure virtual |
Returns the list of all files available in the compilation database.
Implemented in clang::tooling::FixedCompilationDatabase, and clang::tooling::JSONCompilationDatabase.
|
pure virtual |
Returns all compile commands in which the specified file was compiled.
This includes compile comamnds that span multiple source files. For example, consider a project with the following compilations: $ clang++ -o test a.cc b.cc t.cc $ clang++ -o production a.cc b.cc -DPRODUCTION A compilation database representing the project would return both command lines for a.cc and b.cc and only the first command line for t.cc.
Implemented in clang::tooling::FixedCompilationDatabase, and clang::tooling::JSONCompilationDatabase.
Referenced by clang::tooling::ClangTool::run().
|
static |
Loads a compilation database from a build directory.
Looks at the specified 'BuildDirectory' and creates a compilation database that allows to query compile commands for source files in the corresponding source tree.
Returns NULL and sets ErrorMessage if we were not able to build up a compilation database for the build directory.
FIXME: Currently only supports JSON compilation databases, which are named 'compile_commands.json' in the given directory. Extend this for other build types (like ninja build files).
Definition at line 38 of file CompilationDatabase.cpp.
Referenced by findCompilationDatabaseFromDirectory().