Removing false positives
This commit is contained in:
parent
2b3f362dfd
commit
8d116542ab
|
@ -74,6 +74,7 @@ static struct VAR *ClassChecking_GetVarList(const char classname[])
|
||||||
// Member variable?
|
// Member variable?
|
||||||
if ((indentlevel == 1) &&
|
if ((indentlevel == 1) &&
|
||||||
(tok->next->str[0] == ';') &&
|
(tok->next->str[0] == ';') &&
|
||||||
|
(strchr(tok->str,':')==0) &&
|
||||||
(IsName(tok->str)) &&
|
(IsName(tok->str)) &&
|
||||||
(strcmp(tok->str,"const") != 0 ))
|
(strcmp(tok->str,"const") != 0 ))
|
||||||
{
|
{
|
||||||
|
@ -240,6 +241,16 @@ void CheckConstructors()
|
||||||
// Check if any variables are uninitialized
|
// Check if any variables are uninitialized
|
||||||
for (struct VAR *var = varlist; var; var = var->next)
|
for (struct VAR *var = varlist; var; var = var->next)
|
||||||
{
|
{
|
||||||
|
// Is it a static member variable?
|
||||||
|
const char *pattern[] = {"","::","","=",NULL};
|
||||||
|
pattern[0] = classname;
|
||||||
|
pattern[2] = var->name;
|
||||||
|
|
||||||
|
// Locate member function implementation..
|
||||||
|
TOKEN *ftok = findtoken(tokens, pattern);
|
||||||
|
if (ftok)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (!var->init && (var->is_pointer || !var->is_class))
|
if (!var->init && (var->is_pointer || !var->is_class))
|
||||||
{
|
{
|
||||||
std::ostringstream ostr;
|
std::ostringstream ostr;
|
||||||
|
|
|
@ -247,9 +247,10 @@ static void _InFunction()
|
||||||
var->value = _variable::Any;
|
var->value = _variable::Any;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (var->value==_variable::New ||
|
else if (var->dealloc_level != indentlevel &&
|
||||||
var->value==_variable::NewA ||
|
(var->value==_variable::New ||
|
||||||
var->value==_variable::Malloc )
|
var->value==_variable::NewA ||
|
||||||
|
var->value==_variable::Malloc ) )
|
||||||
{
|
{
|
||||||
std::ostringstream ostr;
|
std::ostringstream ostr;
|
||||||
ostr << FileLine(it->Token) << ": Memory leak:" << VariableNames[varlist[i]->varindex];
|
ostr << FileLine(it->Token) << ": Memory leak:" << VariableNames[varlist[i]->varindex];
|
||||||
|
|
|
@ -510,7 +510,7 @@ void CheckCaseWithoutBreak()
|
||||||
if (strcmp(tok2->str,"case")==0)
|
if (strcmp(tok2->str,"case")==0)
|
||||||
{
|
{
|
||||||
std::ostringstream ostr;
|
std::ostringstream ostr;
|
||||||
ostr << FileLine(tok) << ": Possible bug. 'case' without 'break'.";
|
ostr << FileLine(tok) << ": Found 'case' without 'break'.";
|
||||||
ReportErr(ostr.str());
|
ReportErr(ostr.str());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
[testcasebreak\testcasebreak.cpp:9]: Possible bug. 'case' without 'break'.
|
[testcasebreak\testcasebreak.cpp:9]: Found 'case' without 'break'.
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
[testmemleak3\testmemleak3.cpp:9]: Memory leak:str
|
[testmemleak3\testmemleak3.cpp:11]: Memory leak:str
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
|
||||||
|
bool f()
|
||||||
|
{
|
||||||
|
TStringList *StringList = new TStringList;
|
||||||
|
|
||||||
|
if (asd)
|
||||||
|
{
|
||||||
|
delete StringList;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
delete StringList;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue