clang API Documentation
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. | |
virtual std::vector< std::string > | getAllFiles () const =0 |
Returns the list of all files available in the compilation database. | |
virtual std::vector < CompileCommand > | getAllCompileCommands () const =0 |
Returns all compile commands for all the files in the compilation database. | |
Static Public Member Functions | |
static std::unique_ptr < CompilationDatabase > | loadFromDirectory (StringRef BuildDirectory, std::string &ErrorMessage) |
Loads a compilation database from a build directory. | |
static std::unique_ptr < CompilationDatabase > | autoDetectFromSource (StringRef SourceFile, std::string &ErrorMessage) |
Tries to detect a compilation database location and load it. | |
static std::unique_ptr < CompilationDatabase > | autoDetectFromDirectory (StringRef SourceDir, std::string &ErrorMessage) |
Tries to detect a compilation database location and load it. |
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.
Definition at line 36 of file CompilationDatabase.cpp.
std::unique_ptr< CompilationDatabase > clang::tooling::CompilationDatabase::autoDetectFromDirectory | ( | StringRef | SourceDir, |
std::string & | ErrorMessage | ||
) | [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 97 of file CompilationDatabase.cpp.
References clang::tooling::findCompilationDatabaseFromDirectory(), and clang::tooling::getAbsolutePath().
Referenced by clang::tooling::CommonOptionsParser::CommonOptionsParser().
std::unique_ptr< CompilationDatabase > clang::tooling::CompilationDatabase::autoDetectFromSource | ( | StringRef | SourceFile, |
std::string & | ErrorMessage | ||
) | [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 82 of file CompilationDatabase.cpp.
References clang::tooling::findCompilationDatabaseFromDirectory(), and clang::tooling::getAbsolutePath().
Referenced by clang::tooling::CommonOptionsParser::CommonOptionsParser().
virtual std::vector<CompileCommand> clang::tooling::CompilationDatabase::getAllCompileCommands | ( | ) | const [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, clang::tooling::JSONCompilationDatabase, and ArgumentsAdjustingCompilations.
virtual std::vector<std::string> clang::tooling::CompilationDatabase::getAllFiles | ( | ) | const [pure virtual] |
Returns the list of all files available in the compilation database.
Implemented in clang::tooling::FixedCompilationDatabase, clang::tooling::JSONCompilationDatabase, and ArgumentsAdjustingCompilations.
virtual std::vector<CompileCommand> clang::tooling::CompilationDatabase::getCompileCommands | ( | StringRef | FilePath | ) | const [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, clang::tooling::JSONCompilationDatabase, and ArgumentsAdjustingCompilations.
Referenced by clang::tooling::ClangTool::run().
std::unique_ptr< CompilationDatabase > clang::tooling::CompilationDatabase::loadFromDirectory | ( | StringRef | BuildDirectory, |
std::string & | ErrorMessage | ||
) | [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 39 of file CompilationDatabase.cpp.
Referenced by clang::tooling::findCompilationDatabaseFromDirectory().