Cppcheck
|
The cppcheck preprocessor. More...
#include <preprocessor.h>
Public Types | |
enum | HeaderTypes { UserHeader = 1 , SystemHeader } |
Include file types. More... | |
Public Member Functions | |
Preprocessor (const Settings &settings, ErrorLogger &errorLogger) | |
virtual | ~Preprocessor () |
void | inlineSuppressions (const simplecpp::TokenList &tokens, SuppressionList &suppressions) |
std::list< Directive > | createDirectives (const simplecpp::TokenList &tokens) const |
std::set< std::string > | getConfigs (const simplecpp::TokenList &tokens) const |
void | handleErrors (const simplecpp::OutputList &outputList, bool throwError) |
bool | loadFiles (const simplecpp::TokenList &rawtokens, std::vector< std::string > &files) |
void | removeComments () |
void | setPlatformInfo (simplecpp::TokenList *tokens) const |
simplecpp::TokenList | preprocess (const simplecpp::TokenList &tokens1, const std::string &cfg, std::vector< std::string > &files, bool throwError=false) |
std::string | getcode (const simplecpp::TokenList &tokens1, const std::string &cfg, std::vector< std::string > &files, const bool writeLocations) |
std::size_t | calculateHash (const simplecpp::TokenList &tokens1, const std::string &toolinfo) const |
Calculate HASH. More... | |
void | simplifyPragmaAsm (simplecpp::TokenList *tokenList) const |
void | dump (std::ostream &out) const |
dump all directives present in source file More... | |
void | reportOutput (const simplecpp::OutputList &outputList, bool showerror) |
Static Public Member Functions | |
static void | getErrorMessages (ErrorLogger &errorLogger, const Settings &settings) |
static bool | hasErrors (const simplecpp::Output &output) |
Static Public Attributes | |
static char | macroChar = char(1) |
character that is inserted in expanded macros More... | |
Private Member Functions | |
void | missingInclude (const std::string &filename, unsigned int linenr, const std::string &header, HeaderTypes headerType) |
void | error (const std::string &filename, unsigned int linenr, const std::string &msg) |
Static Private Member Functions | |
static void | simplifyPragmaAsmPrivate (simplecpp::TokenList *tokenList) |
static bool | hasErrors (const simplecpp::OutputList &outputList) |
Private Attributes | |
const Settings & | mSettings |
ErrorLogger & | mErrorLogger |
std::map< std::string, simplecpp::TokenList * > | mTokenLists |
list of all directives met while preprocessing file More... | |
std::string | mFile0 |
filename for cpp/c file - useful when reporting errors More... | |
std::list< simplecpp::MacroUsage > | mMacroUsage |
simplecpp tracking info More... | |
std::list< simplecpp::IfCond > | mIfCond |
Friends | |
class | PreprocessorHelper |
class | TestPreprocessor |
class | TestUnusedVar |
The cppcheck preprocessor.
The preprocessor has special functionality for extracting the various ifdef configurations that exist in a source file.
Definition at line 71 of file preprocessor.h.
|
explicit |
Definition at line 54 of file preprocessor.cpp.
|
virtual |
Definition at line 57 of file preprocessor.cpp.
References mTokenLists.
std::size_t Preprocessor::calculateHash | ( | const simplecpp::TokenList & | tokens1, |
const std::string & | toolinfo | ||
) | const |
Calculate HASH.
Using toolinfo, tokens1, filedata.
tokens1 | Sourcefile tokens |
toolinfo | Arbitrary extra toolinfo |
Definition at line 936 of file preprocessor.cpp.
References mTokenLists.
Referenced by CppCheck::checkFile().
std::list< Directive > Preprocessor::createDirectives | ( | const simplecpp::TokenList & | tokens | ) | const |
Definition at line 298 of file preprocessor.cpp.
References emptyString, Directive::linenr, mTokenLists, and Directive::str.
Referenced by CppCheck::checkFile().
void Preprocessor::dump | ( | std::ostream & | out | ) | const |
dump all directives present in source file
Definition at line 900 of file preprocessor.cpp.
References bool_to_string(), mIfCond, mMacroUsage, and ErrorLogger::toxml().
Referenced by CppCheck::checkFile().
|
private |
Definition at line 855 of file preprocessor.cpp.
References Settings::basePaths, error, Path::fromNativeSeparators(), Path::getRelativePath(), mErrorLogger, mFile0, mSettings, normal, Settings::relativePaths, and ErrorLogger::reportErr().
Referenced by getErrorMessages(), inlineSuppressions(), and reportOutput().
std::string Preprocessor::getcode | ( | const simplecpp::TokenList & | tokens1, |
const std::string & | cfg, | ||
std::vector< std::string > & | files, | ||
const bool | writeLocations | ||
) |
Definition at line 797 of file preprocessor.cpp.
References cfg(), macroChar, and preprocess().
Referenced by CppCheck::checkFile().
std::set< std::string > Preprocessor::getConfigs | ( | const simplecpp::TokenList & | tokens | ) | const |
Definition at line 626 of file preprocessor.cpp.
References Settings::configurationExcluded(), mSettings, mTokenLists, Settings::userDefines, and Settings::userUndefs.
Referenced by CppCheck::checkFile().
|
static |
Definition at line 892 of file preprocessor.cpp.
References emptyString, error(), missingInclude(), SystemHeader, and UserHeader.
Referenced by CppCheck::getErrorMessages().
void Preprocessor::handleErrors | ( | const simplecpp::OutputList & | outputList, |
bool | throwError | ||
) |
Definition at line 726 of file preprocessor.cpp.
References Settings::force, mSettings, reportOutput(), and Settings::userDefines.
Referenced by loadFiles(), and preprocess().
|
static |
Definition at line 700 of file preprocessor.cpp.
Referenced by loadFiles().
|
staticprivate |
Definition at line 718 of file preprocessor.cpp.
void Preprocessor::inlineSuppressions | ( | const simplecpp::TokenList & | tokens, |
SuppressionList & | suppressions | ||
) |
Definition at line 283 of file preprocessor.cpp.
References addInlineSuppressions(), error(), Settings::inlineSuppressions, mSettings, and mTokenLists.
Referenced by CppCheck::checkFile().
bool Preprocessor::loadFiles | ( | const simplecpp::TokenList & | rawtokens, |
std::vector< std::string > & | files | ||
) |
Definition at line 740 of file preprocessor.cpp.
References createDUI(), emptyString, handleErrors(), hasErrors(), mSettings, and mTokenLists.
Referenced by CppCheck::checkFile().
|
private |
Definition at line 874 of file preprocessor.cpp.
References Settings::checks, information, SimpleEnableGroup< T >::isEnabled(), mErrorLogger, mFile0, missingInclude, mSettings, normal, ErrorLogger::reportErr(), and SystemHeader.
Referenced by getErrorMessages(), and reportOutput().
simplecpp::TokenList Preprocessor::preprocess | ( | const simplecpp::TokenList & | tokens1, |
const std::string & | cfg, | ||
std::vector< std::string > & | files, | ||
bool | throwError = false |
||
) |
Definition at line 778 of file preprocessor.cpp.
References cfg(), createDUI(), handleErrors(), mIfCond, mMacroUsage, mSettings, and mTokenLists.
Referenced by CppCheck::checkFile(), and getcode().
void Preprocessor::removeComments | ( | ) |
Definition at line 750 of file preprocessor.cpp.
References mTokenLists.
Referenced by CppCheck::checkFile().
void Preprocessor::reportOutput | ( | const simplecpp::OutputList & | outputList, |
bool | showerror | ||
) |
Definition at line 824 of file preprocessor.cpp.
References emptyString, error(), missingInclude(), startsWith(), SystemHeader, and UserHeader.
Referenced by handleErrors().
void Preprocessor::setPlatformInfo | ( | simplecpp::TokenList * | tokens | ) | const |
Definition at line 758 of file preprocessor.cpp.
References mSettings, Settings::platform, Platform::sizeof_bool, Platform::sizeof_double, Platform::sizeof_float, Platform::sizeof_int, Platform::sizeof_long, Platform::sizeof_long_double, Platform::sizeof_long_long, Platform::sizeof_pointer, and Platform::sizeof_short.
Referenced by CppCheck::checkFile().
void Preprocessor::simplifyPragmaAsm | ( | simplecpp::TokenList * | tokenList | ) | const |
Definition at line 952 of file preprocessor.cpp.
References mTokenLists, and simplifyPragmaAsmPrivate().
Referenced by CppCheck::checkFile().
|
staticprivate |
Definition at line 960 of file preprocessor.cpp.
References sameline().
Referenced by simplifyPragmaAsm().
|
friend |
Definition at line 73 of file preprocessor.h.
|
friend |
Definition at line 74 of file preprocessor.h.
|
friend |
Definition at line 75 of file preprocessor.h.
|
static |
character that is inserted in expanded macros
Definition at line 88 of file preprocessor.h.
Referenced by CppCheck::checkFile(), and getcode().
|
private |
Definition at line 142 of file preprocessor.h.
Referenced by error(), and missingInclude().
|
private |
filename for cpp/c file - useful when reporting errors
Definition at line 149 of file preprocessor.h.
Referenced by error(), and missingInclude().
|
private |
Definition at line 153 of file preprocessor.h.
Referenced by dump(), and preprocess().
|
private |
simplecpp tracking info
Definition at line 152 of file preprocessor.h.
Referenced by dump(), and preprocess().
|
private |
Definition at line 141 of file preprocessor.h.
Referenced by error(), getConfigs(), handleErrors(), inlineSuppressions(), loadFiles(), missingInclude(), preprocess(), and setPlatformInfo().
|
private |
list of all directives met while preprocessing file
Definition at line 146 of file preprocessor.h.
Referenced by calculateHash(), createDirectives(), getConfigs(), inlineSuppressions(), loadFiles(), preprocess(), removeComments(), simplifyPragmaAsm(), and ~Preprocessor().