constPointer: Fix false positives when pointer is not read
This commit is contained in:
parent
0a99e3b6fc
commit
6427b4888b
|
@ -1540,8 +1540,6 @@ void CheckOther::checkConstPointer()
|
|||
continue;
|
||||
if (!tok->variable()->isLocal() && !tok->variable()->isArgument())
|
||||
continue;
|
||||
if (tok == tok->variable()->nameToken())
|
||||
continue;
|
||||
if (!tok->valueType())
|
||||
continue;
|
||||
if (tok->valueType()->pointer == 0 || tok->valueType()->constness > 0)
|
||||
|
@ -1549,6 +1547,8 @@ void CheckOther::checkConstPointer()
|
|||
if (nonConstPointers.find(tok->variable()) != nonConstPointers.end())
|
||||
continue;
|
||||
pointers.insert(tok->variable());
|
||||
if (tok == tok->variable()->nameToken())
|
||||
continue;
|
||||
const Token *parent = tok->astParent();
|
||||
bool deref = false;
|
||||
if (parent && parent->isUnaryOp("*"))
|
||||
|
|
|
@ -680,7 +680,7 @@ private:
|
|||
" double* p1= new double[1];\n"
|
||||
" double* p2= new double[1];\n"
|
||||
" double* p3= new double[1];\n"
|
||||
"double* pp[3] = {p1,p2,p3};\n"
|
||||
" const double* pp[3] = {p1,p2,p3};\n"
|
||||
"}");
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
|
||||
|
@ -2778,6 +2778,9 @@ private:
|
|||
}
|
||||
|
||||
void constPointer() {
|
||||
check("void foo(void* data) {}");
|
||||
ASSERT_EQUALS("[test.cpp:1]: (style) Parameter 'data' can be declared with const\n", errout.str());
|
||||
|
||||
check("void foo(int *p) { return *p; }");
|
||||
ASSERT_EQUALS("[test.cpp:1]: (style) Parameter 'p' can be declared with const\n", errout.str());
|
||||
|
||||
|
@ -4751,7 +4754,7 @@ private:
|
|||
ASSERT_EQUALS("", errout.str());
|
||||
|
||||
check("void f() {\n"
|
||||
" std::array<std::array<double,3>,3> array;\n"
|
||||
" const std::array<std::array<double,3>,3> array;\n"
|
||||
"}\n");
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue