clang  3.7.0
Public Member Functions | Static Public Member Functions | List of all members
clang::tooling::CompilationDatabase Class Referenceabstract

Interface for compilation databases. More...

#include <CompilationDatabase.h>

Inheritance diagram for clang::tooling::CompilationDatabase:
[legend]

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

Detailed Description

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.

Constructor & Destructor Documentation

CompilationDatabase::~CompilationDatabase ( )
virtual

Definition at line 35 of file CompilationDatabase.cpp.

Member Function Documentation

std::unique_ptr< CompilationDatabase > 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 96 of file CompilationDatabase.cpp.

References findCompilationDatabaseFromDirectory(), and clang::tooling::getAbsolutePath().

Referenced by clang::tooling::CommonOptionsParser::CommonOptionsParser().

std::unique_ptr< CompilationDatabase > 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 81 of file CompilationDatabase.cpp.

References 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, and clang::tooling::JSONCompilationDatabase.

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, and clang::tooling::JSONCompilationDatabase.

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, and clang::tooling::JSONCompilationDatabase.

Referenced by clang::tooling::ClangTool::run().

std::unique_ptr< CompilationDatabase > 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 38 of file CompilationDatabase.cpp.

Referenced by findCompilationDatabaseFromDirectory().


The documentation for this class was generated from the following files: