|
Cppcheck
|
Check class variables, variables that are allocated in the constructor should be deallocated in the destructor More...
#include <checkmemoryleak.h>
Public Member Functions | |
| CheckMemoryLeakInClass () | |
Public Member Functions inherited from Check | |
| Check (const std::string &aname) | |
| This constructor is used when registering the CheckClass. More... | |
| virtual | ~Check () |
| Check (const Check &)=delete | |
| Check & | operator= (const Check &)=delete |
| const std::string & | name () const |
| class name, used to generate documentation More... | |
| virtual FileInfo * | getFileInfo (const Tokenizer &, const Settings &) const |
| virtual FileInfo * | loadFileInfoFromXml (const tinyxml2::XMLElement *xmlElement) const |
| virtual bool | analyseWholeProgram (const CTU::FileInfo *ctu, const std::list< FileInfo * > &fileInfo, const Settings &, ErrorLogger &) |
Private Member Functions | |
| CheckMemoryLeakInClass (const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) | |
| void | runChecks (const Tokenizer &tokenizer, ErrorLogger *errorLogger) override |
| run checks, the token list is not simplified More... | |
| void | check () |
| void | variable (const Scope *scope, const Token *tokVarname) |
| void | checkPublicFunctions (const Scope *scope, const Token *classtok) |
| Public functions: possible double-allocation. More... | |
| void | publicAllocationError (const Token *tok, const std::string &varname) |
| void | unsafeClassError (const Token *tok, const std::string &classname, const std::string &varname) |
| void | getErrorMessages (ErrorLogger *e, const Settings *settings) const override |
| get error messages More... | |
| std::string | classInfo () const override |
| get information about this class, used to generate documentation More... | |
Private Member Functions inherited from CheckMemoryLeak | |
| CheckMemoryLeak ()=delete | |
| CheckMemoryLeak (const CheckMemoryLeak &)=delete | |
| CheckMemoryLeak & | operator= (const CheckMemoryLeak &)=delete |
| CheckMemoryLeak (const Tokenizer *t, ErrorLogger *e, const Settings *s) | |
| void | memoryLeak (const Token *tok, const std::string &varname, AllocType alloctype) const |
| AllocType | getDeallocationType (const Token *tok, nonneg int varid) const |
| Get type of deallocation at given position. More... | |
| AllocType | getAllocationType (const Token *tok2, nonneg int varid, std::list< const Function * > *callstack=nullptr) const |
| Get type of allocation at given position. More... | |
| AllocType | getReallocationType (const Token *tok2, nonneg int varid) const |
| Get type of reallocation at given position. More... | |
| bool | isReopenStandardStream (const Token *tok) const |
| Check if token reopens a standard stream. More... | |
| bool | isOpenDevNull (const Token *tok) const |
| Check if token opens /dev/null. More... | |
| void | memleakError (const Token *tok, const std::string &varname) const |
| Report that there is a memory leak (new/malloc/etc) More... | |
| void | resourceLeakError (const Token *tok, const std::string &varname) const |
| Report that there is a resource leak (fopen/popen/etc) More... | |
| void | deallocuseError (const Token *tok, const std::string &varname) const |
| void | mismatchAllocDealloc (const std::list< const Token * > &callstack, const std::string &varname) const |
| void | memleakUponReallocFailureError (const Token *tok, const std::string &reallocfunction, const std::string &varname) const |
| AllocType | functionReturnType (const Function *func, std::list< const Function * > *callstack=nullptr) const |
| What type of allocated memory does the given function return? More... | |
Static Private Member Functions | |
| static std::string | myName () |
Friends | |
| class | TestMemleakInClass |
Additional Inherited Members | |
Static Public Member Functions inherited from Check | |
| static std::list< Check * > & | instances () |
| List of registered check classes. More... | |
| static void | writeToErrorList (const ErrorMessage &errmsg) |
| Write given error to stdout in xml format. More... | |
Protected Member Functions inherited from Check | |
| Check (std::string aname, const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger) | |
| This constructor is used when running checks. More... | |
| void | reportError (const Token *tok, const Severity severity, const std::string &id, const std::string &msg) |
| report an error More... | |
| void | reportError (const Token *tok, const Severity severity, const std::string &id, const std::string &msg, const CWE &cwe, Certainty certainty) |
| report an error More... | |
| void | reportError (const std::list< const Token * > &callstack, Severity severity, const std::string &id, const std::string &msg) |
| report an error More... | |
| void | reportError (const std::list< const Token * > &callstack, Severity severity, const std::string &id, const std::string &msg, const CWE &cwe, Certainty certainty) |
| report an error More... | |
| void | reportError (const ErrorPath &errorPath, Severity severity, const char id[], const std::string &msg, const CWE &cwe, Certainty certainty) |
| void | logChecker (const char id[]) |
| log checker More... | |
| ErrorPath | getErrorPath (const Token *errtok, const ValueFlow::Value *value, std::string bug) const |
| bool | wrongData (const Token *tok, const char *str) |
| Use WRONG_DATA in checkers when you check for wrong data. More... | |
Static Protected Member Functions inherited from Check | |
| static std::string | getMessageId (const ValueFlow::Value &value, const char id[]) |
Protected Attributes inherited from Check | |
| const Tokenizer *const | mTokenizer {} |
| const Settings *const | mSettings {} |
| ErrorLogger *const | mErrorLogger {} |
Private Types inherited from CheckMemoryLeak | |
| enum | AllocType { No , Malloc , New , NewArray , File , Fd , Pipe , OtherMem , OtherRes , Many } |
| What type of allocation are used. More... | |
Check class variables, variables that are allocated in the constructor should be deallocated in the destructor
Definition at line 223 of file checkmemoryleak.h.
|
inline |
Definition at line 227 of file checkmemoryleak.h.
|
inlineprivate |
Definition at line 230 of file checkmemoryleak.h.
|
private |
Definition at line 504 of file checkmemoryleak.cpp.
References checkPublicFunctions(), SymbolDatabase::classAndStructScopes, Type::derivedFrom, Tokenizer::getSymbolDatabase(), Variable::isPointer(), Variable::isPointerArray(), Variable::isPrivate(), Token::isStandardType(), Variable::isStatic(), Check::logChecker(), Check::mTokenizer, Variable::nameToken(), Variable::type(), Variable::typeStartToken(), variable(), and Scope::varlist.
Referenced by runChecks().
|
private |
Public functions: possible double-allocation.
Definition at line 649 of file checkmemoryleak.cpp.
References Function::access, Scope::bodyStart, Scope::className, Function::eFunction, Function::eOperatorEqual, Scope::functionList, Function::functionScope, CheckMemoryLeak::getAllocationType(), Function::hasBody(), SimpleEnableGroup< T >::isEnabled(), Token::Match(), Check::mSettings, Token::next(), CheckMemoryLeak::No, Public, publicAllocationError(), Settings::severity, Token::str(), Token::strAt(), Token::tokAt(), Function::type, Token::varId(), and warning.
Referenced by check().
|
inlineoverrideprivatevirtual |
get information about this class, used to generate documentation
Implements Check.
Definition at line 261 of file checkmemoryleak.h.
|
inlineoverrideprivatevirtual |
get error messages
Implements Check.
Definition at line 251 of file checkmemoryleak.h.
References publicAllocationError(), and unsafeClassError().
|
inlinestaticprivate |
Definition at line 257 of file checkmemoryleak.h.
|
private |
Definition at line 679 of file checkmemoryleak.cpp.
References CWE398, normal, Check::reportError(), and warning.
Referenced by checkPublicFunctions(), and getErrorMessages().
|
inlineoverrideprivatevirtual |
run checks, the token list is not simplified
Implements Check.
Definition at line 233 of file checkmemoryleak.h.
References check(), Tokenizer::getSettings(), and Tokenizer::isCPP().
|
private |
Definition at line 636 of file checkmemoryleak.cpp.
References CWE398, SimpleEnableGroup< T >::isEnabled(), Settings::isPremiumEnabled(), Check::mSettings, normal, Check::reportError(), Settings::severity, and style.
Referenced by getErrorMessages(), and variable().
Definition at line 529 of file checkmemoryleak.cpp.
References Function::arg, Token::astParent(), Scope::bodyEnd, Scope::bodyStart, Scope::className, Scope::functionList, Function::functionScope, CheckMemoryLeak::getAllocationType(), CheckMemoryLeak::getDeallocationType(), Function::hasBody(), Function::isConstructor(), Function::isDefault(), Function::isDestructor(), Library::isLeakIgnore(), Settings::library, Token::link(), CheckMemoryLeak::Many, Token::Match(), CheckMemoryLeak::mismatchAllocDealloc(), Check::mSettings, Token::next(), CheckMemoryLeak::No, Token::str(), Token::tokAt(), unsafeClassError(), and Token::varId().
Referenced by check().
|
friend |
Definition at line 224 of file checkmemoryleak.h.