- Member CheckBufferOverrun::checkGlobalAndLocalVariable ()
- false negatives: this may be too conservative
- Member CheckBufferOverrun::checkStructVariable ()
- false negatives: handle inner scopes someday
- Member CheckClass::checkReturnPtrThis (const Scope *scope, const Function *func, const Token *tok, const Token *last)
- make sure argument types match
- Member CheckClass::initializeVarList (const Function &func, std::list< const Function * > &callstack, const Scope *scope, std::vector< Usage > &usage)
false negative: just bail
false negative: we assume function changes variable state
false negative: just bail
False Negative: we should look at the base class functions to see if they call any derived class virtual functions that change the derived class state
- Member CheckClass::isConstMemberFunc (const Scope *scope, const Token *tok)
- we need to look at the argument types when there are overloaded functions with the same number of arguments
- Member CheckClass::isMemberFunc (const Scope *scope, const Token *tok)
- we need to look at the argument types when there are overloaded functions with the same number of arguments
- Member CheckMemoryLeak::isclass (const Token *tok, unsigned int varid) const
false negative: check base class for side effects
false negative: check constructors for side effects
- Member CheckMemoryLeakInFunction::call_func (const Token *tok, std::list< const Token * > callstack, const unsigned int varid, AllocType &alloctype, AllocType &dealloctype, bool &allocpar, unsigned int sz)
- handle "goto"
- Member CheckMemoryLeakInFunction::checkScope (const Token *Tok1, const std::string &varname, unsigned int varid, bool classmember, unsigned int sz)
- handle "goto"
- Member CheckMemoryLeakInFunction::simplifycode (Token *tok) const
- If the loop "do { alloc ; }" can be executed twice, reduce it to "loop alloc ;"
- Member CheckMemoryLeakStructMember::checkStructVariable (const Variable *const variable)
Check how the struct is used. Only bail out if necessary
check if the function deallocates the memory
check if the function deallocates the memory
- Member CheckNullPointer::nullPointerStructByDeRefAndChec ()
There are lots of false negatives here. A dereference is only investigated if a few specific conditions are met.
don't bail out if the variable is not used in the loop
- Member CheckUnusedFunctions::check (ErrorLogger *const errorLogger)
- add error message "function is only used in <file> it can be static"
- Member CheckUnusedVar::isRecordTypeWithoutSideEffects (const Type *type)
- false negative: check constructors for side effects
- Class CsvReport
- This class should be inherited from TxtReport?
- Member doAssignment (Variables &variables, const Token *tok, bool dereference, const Scope *scope)
determine if existing aliases should be replaced or merged
determine if existing aliases should be discarded
- Member ResultsView::Clear (const QString &filename)
- Optimize this.. It is inefficient to check this every time.
- Member Scope::findFunction (const Token *tok) const
This function only counts the number of arguments in the function call.
check argument type for match
- Member Settings::platformFile (const std::string &filename)
- TBD
- Member SymbolDatabase::SymbolDatabase (const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger)
check entire qualification for match
handle friend functions
- Member TemplateSimplifier::simplifyTemplateInstantiations (TokenList &tokenlist, ErrorLogger &errorlogger, const Settings *_settings, const Token *tok, std::list< Token * > &templateInstantiations, std::set< std::string > &expandedtemplates)
- It seems that inner templates should be instantiated recursively
- Member Token::Match (const Token *tok, const char pattern[], unsigned int varid=0)
- Make it possible to use the cmds% and the normal names in the multicompare list without an order.
- Member Tokenizer::removeUnnecessaryQualification ()
- this should be made more generic to handle more levels
- Member Tokenizer::simplifyEnum ()
- start substitution check at forward declaration
- Member Tokenizer::simplifyPlatformTypes ()
- This assumes a flat address space. Not true for segmented address space (FAR *).
- Member Tokenizer::simplifyTypedef ()
add support for union
add support for multi-token operators
add support for multi-token operators
- Member UninitVar::analyseFunctions (const Token *const tokens, std::set< std::string > &func)
- enable this code. if pointer is written in function then dead pointer is invalid but valid pointer is ok.