Cppcheck
Todo List
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.