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().