Improve the message about const function.
See discussion thread: https://sourceforge.net/apps/phpbb/cppcheck/viewtopic.php?f=3&t=192
This commit is contained in:
parent
f5f2a2ce2a
commit
12f2850777
|
@ -1012,7 +1012,13 @@ void CheckClass::checkConst()
|
||||||
|
|
||||||
void CheckClass::checkConstError(const Token *tok, const std::string &classname, const std::string &funcname)
|
void CheckClass::checkConstError(const Token *tok, const std::string &classname, const std::string &funcname)
|
||||||
{
|
{
|
||||||
reportError(tok, Severity::information, "functionConst", "The function '" + classname + "::" + funcname + "' can be const");
|
reportError(tok, Severity::information, "functionConst",
|
||||||
|
"Technically the member function '" + classname + "::" + funcname + "' can be const.\n"
|
||||||
|
"The member function '" + classname + "::" + funcname + "' can be made a const "
|
||||||
|
"function. Making this function const function should not cause compiler errors. "
|
||||||
|
"Even though the function can be made const function technically it may not make "
|
||||||
|
"sense conceptually. Think about your design and task of the function first - is "
|
||||||
|
"it a function that must not change object internal state?");
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheckClass::checkConstError2(const Token *tok1, const Token *tok2, const std::string &classname, const std::string &funcname)
|
void CheckClass::checkConstError2(const Token *tok1, const Token *tok2, const std::string &classname, const std::string &funcname)
|
||||||
|
@ -1020,5 +1026,11 @@ void CheckClass::checkConstError2(const Token *tok1, const Token *tok2, const st
|
||||||
std::list<const Token *> toks;
|
std::list<const Token *> toks;
|
||||||
toks.push_back(tok1);
|
toks.push_back(tok1);
|
||||||
toks.push_back(tok2);
|
toks.push_back(tok2);
|
||||||
reportError(toks, Severity::information, "functionConst", "The function '" + classname + "::" + funcname + "' can be const");
|
reportError(toks, Severity::information, "functionConst",
|
||||||
|
"Technically the member function '" + classname + "::" + funcname + "' can be const.\n"
|
||||||
|
"The member function '" + classname + "::" + funcname + "' can be made a const "
|
||||||
|
"function. Making this function const function should not cause compiler errors. "
|
||||||
|
"Even though the function can be made const function technically it may not make "
|
||||||
|
"sense conceptually. Think about your design and task of the function first - is "
|
||||||
|
"it a function that must not change object internal state?");
|
||||||
}
|
}
|
||||||
|
|
|
@ -2944,18 +2944,18 @@ private:
|
||||||
" int a;\n"
|
" int a;\n"
|
||||||
" int getA() { return a; }\n"
|
" int getA() { return a; }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:3]: (information) The function 'Fred::getA' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (information) Technically the member function 'Fred::getA' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
" const std::string foo() { return ""; }\n"
|
" const std::string foo() { return ""; }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:2]: (information) The function 'Fred::foo' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:2]: (information) Technically the member function 'Fred::foo' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
" std::string s;\n"
|
" std::string s;\n"
|
||||||
" const std::string & foo() { return ""; }\n"
|
" const std::string & foo() { return ""; }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:3]: (information) The function 'Fred::foo' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (information) Technically the member function 'Fred::foo' can be const.\n", errout.str());
|
||||||
|
|
||||||
// constructors can't be const..
|
// constructors can't be const..
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
|
@ -3006,7 +3006,7 @@ private:
|
||||||
" std::string s;\n"
|
" std::string s;\n"
|
||||||
" void foo(std::string & a) { a = s; }\n"
|
" void foo(std::string & a) { a = s; }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:3]: (information) The function 'Fred::foo' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (information) Technically the member function 'Fred::foo' can be const.\n", errout.str());
|
||||||
|
|
||||||
// assignment to variable can't be const
|
// assignment to variable can't be const
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
|
@ -3020,7 +3020,7 @@ private:
|
||||||
" std::string s;\n"
|
" std::string s;\n"
|
||||||
" void foo(std::string & a, std::string & b) { a = s; b = s; }\n"
|
" void foo(std::string & a, std::string & b) { a = s; b = s; }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:3]: (information) The function 'Fred::foo' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (information) Technically the member function 'Fred::foo' can be const.\n", errout.str());
|
||||||
|
|
||||||
// assignment to variable, can't be const
|
// assignment to variable, can't be const
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
|
@ -3051,7 +3051,7 @@ private:
|
||||||
" int s;\n"
|
" int s;\n"
|
||||||
" void foo(int * a) { *a = s; }\n"
|
" void foo(int * a) { *a = s; }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:3]: (information) The function 'Fred::foo' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (information) Technically the member function 'Fred::foo' can be const.\n", errout.str());
|
||||||
|
|
||||||
// assignment to variable, can't be const
|
// assignment to variable, can't be const
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
|
@ -3065,7 +3065,7 @@ private:
|
||||||
" std::string s;\n"
|
" std::string s;\n"
|
||||||
" void foo(std::string * a, std::string * b) { *a = s; *b = s; }\n"
|
" void foo(std::string * a, std::string * b) { *a = s; *b = s; }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:3]: (information) The function 'Fred::foo' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (information) Technically the member function 'Fred::foo' can be const.\n", errout.str());
|
||||||
|
|
||||||
// assignment to variable, can't be const
|
// assignment to variable, can't be const
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
|
@ -3096,20 +3096,20 @@ private:
|
||||||
" int getA();\n"
|
" int getA();\n"
|
||||||
"};\n"
|
"};\n"
|
||||||
"int Fred::getA() { return a; }");
|
"int Fred::getA() { return a; }");
|
||||||
ASSERT_EQUALS("[test.cpp:5] -> [test.cpp:3]: (information) The function 'Fred::getA' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:5] -> [test.cpp:3]: (information) Technically the member function 'Fred::getA' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
" const std::string foo();\n"
|
" const std::string foo();\n"
|
||||||
"};\n"
|
"};\n"
|
||||||
"const std::string Fred::foo() { return ""; }");
|
"const std::string Fred::foo() { return ""; }");
|
||||||
ASSERT_EQUALS("[test.cpp:4] -> [test.cpp:2]: (information) The function 'Fred::foo' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4] -> [test.cpp:2]: (information) Technically the member function 'Fred::foo' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
" std::string s;\n"
|
" std::string s;\n"
|
||||||
" const std::string & foo();\n"
|
" const std::string & foo();\n"
|
||||||
"};\n"
|
"};\n"
|
||||||
"const std::string & Fred::foo() { return ""; }");
|
"const std::string & Fred::foo() { return ""; }");
|
||||||
ASSERT_EQUALS("[test.cpp:5] -> [test.cpp:3]: (information) The function 'Fred::foo' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:5] -> [test.cpp:3]: (information) Technically the member function 'Fred::foo' can be const.\n", errout.str());
|
||||||
|
|
||||||
// constructors can't be const..
|
// constructors can't be const..
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
|
@ -3161,7 +3161,7 @@ private:
|
||||||
" void foo(std::string & a);\n"
|
" void foo(std::string & a);\n"
|
||||||
"};\n"
|
"};\n"
|
||||||
"void Fred::foo(std::string & a) { a = s; }");
|
"void Fred::foo(std::string & a) { a = s; }");
|
||||||
ASSERT_EQUALS("[test.cpp:5] -> [test.cpp:3]: (information) The function 'Fred::foo' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:5] -> [test.cpp:3]: (information) Technically the member function 'Fred::foo' can be const.\n", errout.str());
|
||||||
|
|
||||||
// assignment to variable can't be const
|
// assignment to variable can't be const
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
|
@ -3177,7 +3177,7 @@ private:
|
||||||
" void foo(std::string & a, std::string & b);\n"
|
" void foo(std::string & a, std::string & b);\n"
|
||||||
"};\n"
|
"};\n"
|
||||||
"void Fred::foo(std::string & a, std::string & b) { a = s; b = s; }");
|
"void Fred::foo(std::string & a, std::string & b) { a = s; b = s; }");
|
||||||
ASSERT_EQUALS("[test.cpp:5] -> [test.cpp:3]: (information) The function 'Fred::foo' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:5] -> [test.cpp:3]: (information) Technically the member function 'Fred::foo' can be const.\n", errout.str());
|
||||||
|
|
||||||
// assignment to variable, can't be const
|
// assignment to variable, can't be const
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
|
@ -3209,7 +3209,7 @@ private:
|
||||||
" void foo(int * a);\n"
|
" void foo(int * a);\n"
|
||||||
"};\n"
|
"};\n"
|
||||||
"void Fred::foo(int * a) { *a = s; }");
|
"void Fred::foo(int * a) { *a = s; }");
|
||||||
ASSERT_EQUALS("[test.cpp:5] -> [test.cpp:3]: (information) The function 'Fred::foo' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:5] -> [test.cpp:3]: (information) Technically the member function 'Fred::foo' can be const.\n", errout.str());
|
||||||
|
|
||||||
// assignment to variable, can't be const
|
// assignment to variable, can't be const
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
|
@ -3225,7 +3225,7 @@ private:
|
||||||
" void foo(std::string * a, std::string * b);\n"
|
" void foo(std::string * a, std::string * b);\n"
|
||||||
"};\n"
|
"};\n"
|
||||||
"void Fred::foo(std::string * a, std::string * b) { *a = s; *b = s; }");
|
"void Fred::foo(std::string * a, std::string * b) { *a = s; *b = s; }");
|
||||||
ASSERT_EQUALS("[test.cpp:5] -> [test.cpp:3]: (information) The function 'Fred::foo' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:5] -> [test.cpp:3]: (information) Technically the member function 'Fred::foo' can be const.\n", errout.str());
|
||||||
|
|
||||||
// assignment to variable, can't be const
|
// assignment to variable, can't be const
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
|
@ -3261,8 +3261,8 @@ private:
|
||||||
"void Fred::foo() { }"
|
"void Fred::foo() { }"
|
||||||
"void Fred::foo(std::string & a) { a = s; }"
|
"void Fred::foo(std::string & a) { a = s; }"
|
||||||
"void Fred::foo(const std::string & a) { s = a; }");
|
"void Fred::foo(const std::string & a) { s = a; }");
|
||||||
ASSERT_EQUALS("[test.cpp:7] -> [test.cpp:3]: (information) The function 'Fred::foo' can be const\n"
|
ASSERT_EQUALS("[test.cpp:7] -> [test.cpp:3]: (information) Technically the member function 'Fred::foo' can be const.\n"
|
||||||
"[test.cpp:7] -> [test.cpp:4]: (information) The function 'Fred::foo' can be const\n", errout.str());
|
"[test.cpp:7] -> [test.cpp:4]: (information) Technically the member function 'Fred::foo' can be const.\n", errout.str());
|
||||||
|
|
||||||
// check functions with different or missing parameter names
|
// check functions with different or missing parameter names
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
|
@ -3278,11 +3278,11 @@ private:
|
||||||
"void Fred::foo3(int a, int b) { }\n"
|
"void Fred::foo3(int a, int b) { }\n"
|
||||||
"void Fred::foo4(int a, int b) { }\n"
|
"void Fred::foo4(int a, int b) { }\n"
|
||||||
"void Fred::foo5(int, int) { }");
|
"void Fred::foo5(int, int) { }");
|
||||||
ASSERT_EQUALS("[test.cpp:9] -> [test.cpp:3]: (information) The function 'Fred::foo1' can be const\n"
|
ASSERT_EQUALS("[test.cpp:9] -> [test.cpp:3]: (information) Technically the member function 'Fred::foo1' can be const.\n"
|
||||||
"[test.cpp:10] -> [test.cpp:4]: (information) The function 'Fred::foo2' can be const\n"
|
"[test.cpp:10] -> [test.cpp:4]: (information) Technically the member function 'Fred::foo2' can be const.\n"
|
||||||
"[test.cpp:11] -> [test.cpp:5]: (information) The function 'Fred::foo3' can be const\n"
|
"[test.cpp:11] -> [test.cpp:5]: (information) Technically the member function 'Fred::foo3' can be const.\n"
|
||||||
"[test.cpp:12] -> [test.cpp:6]: (information) The function 'Fred::foo4' can be const\n"
|
"[test.cpp:12] -> [test.cpp:6]: (information) Technically the member function 'Fred::foo4' can be const.\n"
|
||||||
"[test.cpp:13] -> [test.cpp:7]: (information) The function 'Fred::foo5' can be const\n", errout.str());
|
"[test.cpp:13] -> [test.cpp:7]: (information) Technically the member function 'Fred::foo5' can be const.\n", errout.str());
|
||||||
|
|
||||||
// check nested classes
|
// check nested classes
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
|
@ -3291,7 +3291,7 @@ private:
|
||||||
" int getA() { return a; }\n"
|
" int getA() { return a; }\n"
|
||||||
" };\n"
|
" };\n"
|
||||||
"};");
|
"};");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'Fred::A::getA' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'Fred::A::getA' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
" class A {\n"
|
" class A {\n"
|
||||||
|
@ -3300,7 +3300,7 @@ private:
|
||||||
" };\n"
|
" };\n"
|
||||||
" int A::getA() { return a; }\n"
|
" int A::getA() { return a; }\n"
|
||||||
"};");
|
"};");
|
||||||
ASSERT_EQUALS("[test.cpp:6] -> [test.cpp:4]: (information) The function 'Fred::A::getA' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:6] -> [test.cpp:4]: (information) Technically the member function 'Fred::A::getA' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
" class A {\n"
|
" class A {\n"
|
||||||
|
@ -3309,7 +3309,7 @@ private:
|
||||||
" };\n"
|
" };\n"
|
||||||
"};\n"
|
"};\n"
|
||||||
"int Fred::A::getA() { return a; }");
|
"int Fred::A::getA() { return a; }");
|
||||||
ASSERT_EQUALS("[test.cpp:7] -> [test.cpp:4]: (information) The function 'Fred::A::getA' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:7] -> [test.cpp:4]: (information) Technically the member function 'Fred::A::getA' can be const.\n", errout.str());
|
||||||
|
|
||||||
// check deeply nested classes
|
// check deeply nested classes
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
|
@ -3322,8 +3322,8 @@ private:
|
||||||
" };\n"
|
" };\n"
|
||||||
" };\n"
|
" };\n"
|
||||||
"};");
|
"};");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'Fred::B::getB' can be const\n"
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'Fred::B::getB' can be const.\n"
|
||||||
"[test.cpp:7]: (information) The function 'Fred::B::A::getA' can be const\n"
|
"[test.cpp:7]: (information) Technically the member function 'Fred::B::A::getA' can be const.\n"
|
||||||
, errout.str());
|
, errout.str());
|
||||||
|
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
|
@ -3338,8 +3338,8 @@ private:
|
||||||
" };\n"
|
" };\n"
|
||||||
" int B::getB() { return b; }\n"
|
" int B::getB() { return b; }\n"
|
||||||
"};");
|
"};");
|
||||||
ASSERT_EQUALS("[test.cpp:11] -> [test.cpp:4]: (information) The function 'Fred::B::getB' can be const\n"
|
ASSERT_EQUALS("[test.cpp:11] -> [test.cpp:4]: (information) Technically the member function 'Fred::B::getB' can be const.\n"
|
||||||
"[test.cpp:9] -> [test.cpp:7]: (information) The function 'Fred::B::A::getA' can be const\n" , errout.str());
|
"[test.cpp:9] -> [test.cpp:7]: (information) Technically the member function 'Fred::B::A::getA' can be const.\n" , errout.str());
|
||||||
|
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
" class B {\n"
|
" class B {\n"
|
||||||
|
@ -3353,8 +3353,8 @@ private:
|
||||||
" int B::A::getA() { return a; }\n"
|
" int B::A::getA() { return a; }\n"
|
||||||
" int B::getB() { return b; }\n"
|
" int B::getB() { return b; }\n"
|
||||||
"};");
|
"};");
|
||||||
ASSERT_EQUALS("[test.cpp:11] -> [test.cpp:4]: (information) The function 'Fred::B::getB' can be const\n"
|
ASSERT_EQUALS("[test.cpp:11] -> [test.cpp:4]: (information) Technically the member function 'Fred::B::getB' can be const.\n"
|
||||||
"[test.cpp:10] -> [test.cpp:7]: (information) The function 'Fred::B::A::getA' can be const\n" , errout.str());
|
"[test.cpp:10] -> [test.cpp:7]: (information) Technically the member function 'Fred::B::A::getA' can be const.\n" , errout.str());
|
||||||
|
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
" class B {\n"
|
" class B {\n"
|
||||||
|
@ -3368,8 +3368,8 @@ private:
|
||||||
"};\n"
|
"};\n"
|
||||||
"int Fred::B::A::getA() { return a; }\n"
|
"int Fred::B::A::getA() { return a; }\n"
|
||||||
"int Fred::B::getB() { return b; }\n");
|
"int Fred::B::getB() { return b; }\n");
|
||||||
ASSERT_EQUALS("[test.cpp:12] -> [test.cpp:4]: (information) The function 'Fred::B::getB' can be const\n"
|
ASSERT_EQUALS("[test.cpp:12] -> [test.cpp:4]: (information) Technically the member function 'Fred::B::getB' can be const.\n"
|
||||||
"[test.cpp:11] -> [test.cpp:7]: (information) The function 'Fred::B::A::getA' can be const\n" , errout.str());
|
"[test.cpp:11] -> [test.cpp:7]: (information) Technically the member function 'Fred::B::A::getA' can be const.\n" , errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// operator< can often be const
|
// operator< can often be const
|
||||||
|
@ -3379,7 +3379,7 @@ private:
|
||||||
" int a;\n"
|
" int a;\n"
|
||||||
" bool operator<(const Fred &f) { return (a < f.a); }\n"
|
" bool operator<(const Fred &f) { return (a < f.a); }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:3]: (information) The function 'Fred::operator<' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (information) Technically the member function 'Fred::operator<' can be const.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// operator<<
|
// operator<<
|
||||||
|
@ -3411,7 +3411,7 @@ private:
|
||||||
" int array[10];\n"
|
" int array[10];\n"
|
||||||
" int const & operator [] (unsigned int index) { return array[index]; }\n"
|
" int const & operator [] (unsigned int index) { return array[index]; }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:3]: (information) The function 'Fred::operator[]' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (information) Technically the member function 'Fred::operator[]' can be const.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void const5()
|
void const5()
|
||||||
|
@ -3426,7 +3426,7 @@ private:
|
||||||
" return same;\n"
|
" return same;\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
"};");
|
"};");
|
||||||
ASSERT_EQUALS("[test.cpp:3]: (information) The function 'A::foo' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (information) Technically the member function 'A::foo' can be const.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void const6()
|
void const6()
|
||||||
|
@ -3443,7 +3443,7 @@ private:
|
||||||
"public:\n"
|
"public:\n"
|
||||||
" void foo() { }\n"
|
" void foo() { }\n"
|
||||||
"};");
|
"};");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'Fred::foo' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'Fred::foo' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("struct fast_string\n"
|
checkConst("struct fast_string\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
|
@ -3482,7 +3482,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" std::string m_strValue;\n"
|
" std::string m_strValue;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::strGetString' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::strGetString' can be const.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void const9()
|
void const9()
|
||||||
|
@ -3546,7 +3546,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" mutable int x;\n"
|
" mutable int x;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:3]: (information) The function 'A::foo' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (information) Technically the member function 'A::foo' can be const.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void const13()
|
void const13()
|
||||||
|
@ -3561,8 +3561,8 @@ private:
|
||||||
" std::vector<int> m_vec;\n"
|
" std::vector<int> m_vec;\n"
|
||||||
" std::pair<int,double> m_pair;\n"
|
" std::pair<int,double> m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetVec' can be const\n"
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetVec' can be const.\n"
|
||||||
"[test.cpp:5]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
"[test.cpp:5]: (information)Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class A {\n"
|
checkConst("class A {\n"
|
||||||
"public:\n"
|
"public:\n"
|
||||||
|
@ -3573,8 +3573,8 @@ private:
|
||||||
" std::vector<int> m_vec;\n"
|
" std::vector<int> m_vec;\n"
|
||||||
" std::pair<int,double> m_pair;\n"
|
" std::pair<int,double> m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetVec' can be const\n"
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetVec' can be const.\n"
|
||||||
"[test.cpp:5]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
"[test.cpp:5]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void const14()
|
void const14()
|
||||||
|
@ -3587,7 +3587,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" std::pair<std::vector<int>,double> m_pair;\n"
|
" std::pair<std::vector<int>,double> m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class A {\n"
|
checkConst("class A {\n"
|
||||||
"public:\n"
|
"public:\n"
|
||||||
|
@ -3596,7 +3596,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" std::pair<std::vector<int>,double> m_pair;\n"
|
" std::pair<std::vector<int>,double> m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class A {\n"
|
checkConst("class A {\n"
|
||||||
"public:\n"
|
"public:\n"
|
||||||
|
@ -3616,7 +3616,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" pair<int ,double> m_pair;\n"
|
" pair<int ,double> m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("using namespace std;"
|
checkConst("using namespace std;"
|
||||||
"class A {\n"
|
"class A {\n"
|
||||||
|
@ -3626,7 +3626,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" pair<int ,double> m_pair;\n"
|
" pair<int ,double> m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("using namespace std;"
|
checkConst("using namespace std;"
|
||||||
"class A {\n"
|
"class A {\n"
|
||||||
|
@ -3646,7 +3646,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" std::pair< int,std::vector<int> > m_pair;\n"
|
" std::pair< int,std::vector<int> > m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class A {\n"
|
checkConst("class A {\n"
|
||||||
"public:\n"
|
"public:\n"
|
||||||
|
@ -3655,7 +3655,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" std::pair< int,std::vector<int> > m_pair;\n"
|
" std::pair< int,std::vector<int> > m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class A {\n"
|
checkConst("class A {\n"
|
||||||
"public:\n"
|
"public:\n"
|
||||||
|
@ -3675,7 +3675,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" pair< int,vector<int> > m_pair;\n"
|
" pair< int,vector<int> > m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("using namespace std;"
|
checkConst("using namespace std;"
|
||||||
"class A {\n"
|
"class A {\n"
|
||||||
|
@ -3685,7 +3685,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" pair< int,vector<int> > m_pair;\n"
|
" pair< int,vector<int> > m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("using namespace std;"
|
checkConst("using namespace std;"
|
||||||
"class A {\n"
|
"class A {\n"
|
||||||
|
@ -3706,7 +3706,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" pair< vector<int>, int > m_pair;\n"
|
" pair< vector<int>, int > m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("using namespace std;"
|
checkConst("using namespace std;"
|
||||||
"class A {\n"
|
"class A {\n"
|
||||||
|
@ -3716,7 +3716,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" pair< vector<int>, int > m_pair;\n"
|
" pair< vector<int>, int > m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("using namespace std;"
|
checkConst("using namespace std;"
|
||||||
"class A {\n"
|
"class A {\n"
|
||||||
|
@ -3744,7 +3744,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" std::pair< std::vector<int>,std::vector<int> > m_pair;\n"
|
" std::pair< std::vector<int>,std::vector<int> > m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class A {\n"
|
checkConst("class A {\n"
|
||||||
"public:\n"
|
"public:\n"
|
||||||
|
@ -3764,7 +3764,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" pair< vector<int>, vector<int> > m_pair;\n"
|
" pair< vector<int>, vector<int> > m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("using namespace std;"
|
checkConst("using namespace std;"
|
||||||
"class A {\n"
|
"class A {\n"
|
||||||
|
@ -3774,7 +3774,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" pair< vector<int>, vector<int> > m_pair;\n"
|
" pair< vector<int>, vector<int> > m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("using namespace std;"
|
checkConst("using namespace std;"
|
||||||
"class A {\n"
|
"class A {\n"
|
||||||
|
@ -3795,7 +3795,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" std::pair< std::pair < int, char > , int > m_pair;\n"
|
" std::pair< std::pair < int, char > , int > m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class A {\n"
|
checkConst("class A {\n"
|
||||||
"public:\n"
|
"public:\n"
|
||||||
|
@ -3804,7 +3804,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" std::pair< std::pair < int, char > , int > m_pair;\n"
|
" std::pair< std::pair < int, char > , int > m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class A {\n"
|
checkConst("class A {\n"
|
||||||
"public:\n"
|
"public:\n"
|
||||||
|
@ -3823,7 +3823,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" pair< pair < int, char > , int > m_pair;\n"
|
" pair< pair < int, char > , int > m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("using namespace std;"
|
checkConst("using namespace std;"
|
||||||
"class A {\n"
|
"class A {\n"
|
||||||
|
@ -3833,7 +3833,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" pair< pair < int, char > , int > m_pair;\n"
|
" pair< pair < int, char > , int > m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("using namespace std;"
|
checkConst("using namespace std;"
|
||||||
"class A {\n"
|
"class A {\n"
|
||||||
|
@ -3854,7 +3854,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" pair< int , pair < int, char > > m_pair;\n"
|
" pair< int , pair < int, char > > m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("using namespace std;"
|
checkConst("using namespace std;"
|
||||||
"class A {\n"
|
"class A {\n"
|
||||||
|
@ -3864,7 +3864,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" pair< int , pair < int, char > > m_pair;\n"
|
" pair< int , pair < int, char > > m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
|
|
||||||
checkConst("using namespace std;"
|
checkConst("using namespace std;"
|
||||||
|
@ -3884,7 +3884,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" std::pair< int , std::pair < int, char > > m_pair;\n"
|
" std::pair< int , std::pair < int, char > > m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class A {\n"
|
checkConst("class A {\n"
|
||||||
"public:\n"
|
"public:\n"
|
||||||
|
@ -3893,7 +3893,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" std::pair< int , std::pair < int, char > > m_pair;\n"
|
" std::pair< int , std::pair < int, char > > m_pair;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetPair' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetPair' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class A {\n"
|
checkConst("class A {\n"
|
||||||
"public:\n"
|
"public:\n"
|
||||||
|
@ -3913,7 +3913,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" vector<int> m_Vec;\n"
|
" vector<int> m_Vec;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetVec' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetVec' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("using namespace std;"
|
checkConst("using namespace std;"
|
||||||
"class A {\n"
|
"class A {\n"
|
||||||
|
@ -3923,7 +3923,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" vector<int> m_Vec;\n"
|
" vector<int> m_Vec;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::GetVec' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::GetVec' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("using namespace std;"
|
checkConst("using namespace std;"
|
||||||
"class A {\n"
|
"class A {\n"
|
||||||
|
@ -3950,7 +3950,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" const int * x;\n"
|
" const int * x;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:3]: (information) The function 'A::foo' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (information) Technically the member function 'A::foo' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class A {\n"
|
checkConst("class A {\n"
|
||||||
"public:\n"
|
"public:\n"
|
||||||
|
@ -3958,7 +3958,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" const int * x;\n"
|
" const int * x;\n"
|
||||||
"}");
|
"}");
|
||||||
ASSERT_EQUALS("[test.cpp:3]: (information) The function 'A::foo' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (information) Technically the member function 'A::foo' can be const.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void const15()
|
void const15()
|
||||||
|
@ -3967,7 +3967,7 @@ private:
|
||||||
" unsigned long long int a;\n"
|
" unsigned long long int a;\n"
|
||||||
" unsigned long long int getA() { return a; }\n"
|
" unsigned long long int getA() { return a; }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:3]: (information) The function 'Fred::getA' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (information) Technically the member function 'Fred::getA' can be const.\n", errout.str());
|
||||||
|
|
||||||
// constructors can't be const..
|
// constructors can't be const..
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
|
@ -4071,7 +4071,7 @@ private:
|
||||||
"public:\n"
|
"public:\n"
|
||||||
" list<const int *> get() { return x; }\n"
|
" list<const int *> get() { return x; }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'Fred::get' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'Fred::get' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class Fred {\n"
|
checkConst("class Fred {\n"
|
||||||
" std::list<std::string &> x;\n"
|
" std::list<std::string &> x;\n"
|
||||||
|
@ -4085,7 +4085,7 @@ private:
|
||||||
"public:\n"
|
"public:\n"
|
||||||
" std::list<const std::string &> get() { return x; }\n"
|
" std::list<const std::string &> get() { return x; }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'Fred::get' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'Fred::get' can be const.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void const21()
|
void const21()
|
||||||
|
@ -4178,7 +4178,7 @@ private:
|
||||||
"std::string m_strVal;\n"
|
"std::string m_strVal;\n"
|
||||||
"};\n"
|
"};\n"
|
||||||
);
|
);
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::strGetString' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::strGetString' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class A{\n"
|
checkConst("class A{\n"
|
||||||
"public:\n"
|
"public:\n"
|
||||||
|
@ -4201,7 +4201,7 @@ private:
|
||||||
"std::vector<std::string> m_strVec;\n"
|
"std::vector<std::string> m_strVec;\n"
|
||||||
"};\n"
|
"};\n"
|
||||||
);
|
);
|
||||||
TODO_ASSERT_EQUALS("[test.cpp:4]: (information) The function 'A::strGetSize' can be const\n", errout.str());
|
TODO_ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'A::strGetSize' can be const.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void const26() // ticket #1847
|
void const26() // ticket #1847
|
||||||
|
@ -4234,7 +4234,7 @@ private:
|
||||||
" return dRet;\n"
|
" return dRet;\n"
|
||||||
"};\n"
|
"};\n"
|
||||||
);
|
);
|
||||||
ASSERT_EQUALS("[test.cpp:9] -> [test.cpp:4]: (information) The function 'A::dGetValue' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:9] -> [test.cpp:4]: (information) Technically the member function 'A::dGetValue' can be const.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void const28() // ticket #1883
|
void const28() // ticket #1883
|
||||||
|
@ -4273,7 +4273,7 @@ private:
|
||||||
" UnknownScope::x = x_;\n"
|
" UnknownScope::x = x_;\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (information) The function 'AA::vSetXPos' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (information) Technically the member function 'AA::vSetXPos' can be const.\n", errout.str());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4334,8 +4334,8 @@ private:
|
||||||
" return b;\n"
|
" return b;\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:11]: (information) The function 'Derived::getA' can be const\n"
|
ASSERT_EQUALS("[test.cpp:11]: (information) Technically the member function 'Derived::getA' can be const.\n"
|
||||||
"[test.cpp:14]: (information) The function 'Derived::getB' can be const\n", errout.str());
|
"[test.cpp:14]: (information) Technically the member function 'Derived::getB' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class Base {\n"
|
checkConst("class Base {\n"
|
||||||
"public:\n"
|
"public:\n"
|
||||||
|
@ -4348,7 +4348,7 @@ private:
|
||||||
" return a;\n"
|
" return a;\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:8]: (information) The function 'Derived2::get' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:8]: (information) Technically the member function 'Derived2::get' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class Base {\n"
|
checkConst("class Base {\n"
|
||||||
"public:\n"
|
"public:\n"
|
||||||
|
@ -4363,7 +4363,7 @@ private:
|
||||||
" return a;\n"
|
" return a;\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:10]: (information) The function 'Derived4::get' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:10]: (information) Technically the member function 'Derived4::get' can be const.\n", errout.str());
|
||||||
|
|
||||||
// check for false positives
|
// check for false positives
|
||||||
checkConst("class Base {\n"
|
checkConst("class Base {\n"
|
||||||
|
@ -4434,7 +4434,7 @@ private:
|
||||||
" int a;\n"
|
" int a;\n"
|
||||||
" int get() { return a; }\n"
|
" int get() { return a; }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:5]: (information) The function 'Fred::get' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:5]: (information) Technically the member function 'Fred::get' can be const.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void const32()
|
void const32()
|
||||||
|
@ -4483,7 +4483,7 @@ private:
|
||||||
" int var;\n"
|
" int var;\n"
|
||||||
" };\n"
|
" };\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
ASSERT_EQUALS("[test.cpp:12]: (information) The function 'N::Derived::getResourceName' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:12]: (information) Technically the member function 'N::Derived::getResourceName' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("namespace N\n"
|
checkConst("namespace N\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
|
@ -4495,7 +4495,7 @@ private:
|
||||||
" };\n"
|
" };\n"
|
||||||
"}\n"
|
"}\n"
|
||||||
"int N::Base::getResourceName() { return var; }\n");
|
"int N::Base::getResourceName() { return var; }\n");
|
||||||
ASSERT_EQUALS("[test.cpp:10] -> [test.cpp:6]: (information) The function 'N::Base::getResourceName' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:10] -> [test.cpp:6]: (information) Technically the member function 'N::Base::getResourceName' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("namespace N\n"
|
checkConst("namespace N\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
|
@ -4510,7 +4510,7 @@ private:
|
||||||
"{\n"
|
"{\n"
|
||||||
" int Base::getResourceName() { return var; }\n"
|
" int Base::getResourceName() { return var; }\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
ASSERT_EQUALS("[test.cpp:12] -> [test.cpp:6]: (information) The function 'N::Base::getResourceName' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:12] -> [test.cpp:6]: (information) Technically the member function 'N::Base::getResourceName' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("namespace N\n"
|
checkConst("namespace N\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
|
@ -4524,7 +4524,7 @@ private:
|
||||||
"using namespace N;\n"
|
"using namespace N;\n"
|
||||||
"int Base::getResourceName() { return var; }\n");
|
"int Base::getResourceName() { return var; }\n");
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("", errout.str());
|
||||||
TODO_ASSERT_EQUALS("[test.cpp:11] -> [test.cpp:6]: (information) The function 'N::Base::getResourceName' can be const\n", errout.str());
|
TODO_ASSERT_EQUALS("[test.cpp:11] -> [test.cpp:6]: (information) Technically the member function 'N::Base::getResourceName' can be const.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void const36() // ticket #2003
|
void const36() // ticket #2003
|
||||||
|
@ -4553,7 +4553,7 @@ private:
|
||||||
"private:\n"
|
"private:\n"
|
||||||
" std::string m_str;\n"
|
" std::string m_str;\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
ASSERT_EQUALS("[test.cpp:5]: (information) The function 'A::operator+' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:5]: (information) Technically the member function 'A::operator+' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class Fred\n"
|
checkConst("class Fred\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
|
@ -4567,7 +4567,7 @@ private:
|
||||||
" return bool(x == 0x11224488);\n"
|
" return bool(x == 0x11224488);\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
ASSERT_EQUALS("[test.cpp:9]: (information) The function 'Fred::isValid' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:9]: (information) Technically the member function 'Fred::isValid' can be const.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void const38() // ticket #2135
|
void const38() // ticket #2135
|
||||||
|
@ -4716,7 +4716,7 @@ private:
|
||||||
"{\n"
|
"{\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
|
|
||||||
ASSERT_EQUALS("[test.cpp:7] -> [test.cpp:5]: (information) The function 'Fred::f' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:7] -> [test.cpp:5]: (information) Technically the member function 'Fred::f' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class Fred\n"
|
checkConst("class Fred\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
|
@ -4730,7 +4730,7 @@ private:
|
||||||
"{\n"
|
"{\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
|
|
||||||
ASSERT_EQUALS("[test.cpp:9] -> [test.cpp:7]: (information) The function 'Fred::f' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:9] -> [test.cpp:7]: (information) Technically the member function 'Fred::f' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("namespace NS {\n"
|
checkConst("namespace NS {\n"
|
||||||
" class Fred\n"
|
" class Fred\n"
|
||||||
|
@ -4746,7 +4746,7 @@ private:
|
||||||
" }\n"
|
" }\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
|
|
||||||
ASSERT_EQUALS("[test.cpp:10] -> [test.cpp:8]: (information) The function 'NS::Fred::f' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:10] -> [test.cpp:8]: (information) Technically the member function 'NS::Fred::f' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("namespace NS {\n"
|
checkConst("namespace NS {\n"
|
||||||
" class Fred\n"
|
" class Fred\n"
|
||||||
|
@ -4762,7 +4762,7 @@ private:
|
||||||
"{\n"
|
"{\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
|
|
||||||
ASSERT_EQUALS("[test.cpp:11] -> [test.cpp:8]: (information) The function 'NS::Fred::f' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:11] -> [test.cpp:8]: (information) Technically the member function 'NS::Fred::f' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class Foo {\n"
|
checkConst("class Foo {\n"
|
||||||
" class Fred\n"
|
" class Fred\n"
|
||||||
|
@ -4778,7 +4778,7 @@ private:
|
||||||
"{\n"
|
"{\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
|
|
||||||
ASSERT_EQUALS("[test.cpp:11] -> [test.cpp:8]: (information) The function 'Foo::Fred::f' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:11] -> [test.cpp:8]: (information) Technically the member function 'Foo::Fred::f' can be const.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// increment/decrement => not const
|
// increment/decrement => not const
|
||||||
|
@ -4834,7 +4834,7 @@ private:
|
||||||
" void f() const { };\n"
|
" void f() const { };\n"
|
||||||
" void a() { f(); };\n"
|
" void a() { f(); };\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:3]: (information) The function 'Fred::a' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (information) Technically the member function 'Fred::a' can be const.\n", errout.str());
|
||||||
|
|
||||||
// ticket #1593
|
// ticket #1593
|
||||||
checkConst("#include <vector>\n"
|
checkConst("#include <vector>\n"
|
||||||
|
@ -4845,7 +4845,7 @@ private:
|
||||||
" A(){}\n"
|
" A(){}\n"
|
||||||
" unsigned int GetVecSize() {return m_v.size();}\n"
|
" unsigned int GetVecSize() {return m_v.size();}\n"
|
||||||
"}");
|
"}");
|
||||||
TODO_ASSERT_EQUALS("[test.cpp:7]: (information) The function 'A::GetVecSize' can be const\n", errout.str());
|
TODO_ASSERT_EQUALS("[test.cpp:7]: (information) Technically the member function 'A::GetVecSize' can be const.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void constVirtualFunc()
|
void constVirtualFunc()
|
||||||
|
@ -4858,7 +4858,7 @@ private:
|
||||||
" B() : b(0) { }\n"
|
" B() : b(0) { }\n"
|
||||||
" int func() { return b; }\n"
|
" int func() { return b; }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:6]: (information) The function 'B::func' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:6]: (information) Technically the member function 'B::func' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class A { };\n"
|
checkConst("class A { };\n"
|
||||||
"class B : public A {\n"
|
"class B : public A {\n"
|
||||||
|
@ -4868,7 +4868,7 @@ private:
|
||||||
" int func();\n"
|
" int func();\n"
|
||||||
"};\n"
|
"};\n"
|
||||||
"int B::func() { return b; }\n");
|
"int B::func() { return b; }\n");
|
||||||
ASSERT_EQUALS("[test.cpp:8] -> [test.cpp:6]: (information) The function 'B::func' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:8] -> [test.cpp:6]: (information) Technically the member function 'B::func' can be const.\n", errout.str());
|
||||||
|
|
||||||
// base class has no virtual function
|
// base class has no virtual function
|
||||||
checkConst("class A {\n"
|
checkConst("class A {\n"
|
||||||
|
@ -4881,7 +4881,7 @@ private:
|
||||||
" B() : b(0) { }\n"
|
" B() : b(0) { }\n"
|
||||||
" int func() { return b; }\n"
|
" int func() { return b; }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:9]: (information) The function 'B::func' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:9]: (information) Technically the member function 'B::func' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class A {\n"
|
checkConst("class A {\n"
|
||||||
"public:\n"
|
"public:\n"
|
||||||
|
@ -4894,7 +4894,7 @@ private:
|
||||||
" int func();\n"
|
" int func();\n"
|
||||||
"};\n"
|
"};\n"
|
||||||
"int B::func() { return b; }\n");
|
"int B::func() { return b; }\n");
|
||||||
ASSERT_EQUALS("[test.cpp:11] -> [test.cpp:9]: (information) The function 'B::func' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:11] -> [test.cpp:9]: (information) Technically the member function 'B::func' can be const.\n", errout.str());
|
||||||
|
|
||||||
// base class has virtual function
|
// base class has virtual function
|
||||||
checkConst("class A {\n"
|
checkConst("class A {\n"
|
||||||
|
@ -4954,9 +4954,9 @@ private:
|
||||||
" C() : c(0) { }\n"
|
" C() : c(0) { }\n"
|
||||||
" int func() { return c; }\n"
|
" int func() { return c; }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:5]: (information) The function 'A::func' can be const\n"
|
ASSERT_EQUALS("[test.cpp:5]: (information) Technically the member function 'A::func' can be const.\n"
|
||||||
"[test.cpp:11]: (information) The function 'B::func' can be const\n"
|
"[test.cpp:11]: (information) Technically the member function 'B::func' can be const.\n"
|
||||||
"[test.cpp:17]: (information) The function 'C::func' can be const\n", errout.str());
|
"[test.cpp:17]: (information) Technically the member function 'C::func' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class A {\n"
|
checkConst("class A {\n"
|
||||||
" int a;\n"
|
" int a;\n"
|
||||||
|
@ -4979,9 +4979,9 @@ private:
|
||||||
" int func();\n"
|
" int func();\n"
|
||||||
"};\n"
|
"};\n"
|
||||||
"int C::func() { return c; }\n");
|
"int C::func() { return c; }\n");
|
||||||
ASSERT_EQUALS("[test.cpp:7] -> [test.cpp:5]: (information) The function 'A::func' can be const\n"
|
ASSERT_EQUALS("[test.cpp:7] -> [test.cpp:5]: (information) Technically the member function 'A::func' can be const.\n"
|
||||||
"[test.cpp:14] -> [test.cpp:12]: (information) The function 'B::func' can be const\n"
|
"[test.cpp:14] -> [test.cpp:12]: (information) Technically the member function 'B::func' can be const.\n"
|
||||||
"[test.cpp:21] -> [test.cpp:19]: (information) The function 'C::func' can be const\n", errout.str());
|
"[test.cpp:21] -> [test.cpp:19]: (information) Technically the member function 'C::func' can be const.\n", errout.str());
|
||||||
|
|
||||||
// base class has virtual function
|
// base class has virtual function
|
||||||
checkConst("class A {\n"
|
checkConst("class A {\n"
|
||||||
|
@ -5046,9 +5046,9 @@ private:
|
||||||
" Z(int x, int y, int z) : Y(x, y), z(z) { }\n"
|
" Z(int x, int y, int z) : Y(x, y), z(z) { }\n"
|
||||||
" int getZ() { return z; }\n"
|
" int getZ() { return z; }\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
ASSERT_EQUALS("[test.cpp:5]: (information) The function 'X::getX' can be const\n"
|
ASSERT_EQUALS("[test.cpp:5]: (information) Technically the member function 'X::getX' can be const.\n"
|
||||||
"[test.cpp:11]: (information) The function 'Y::getY' can be const\n"
|
"[test.cpp:11]: (information) Technically the member function 'Y::getY' can be const.\n"
|
||||||
"[test.cpp:17]: (information) The function 'Z::getZ' can be const\n", errout.str());
|
"[test.cpp:17]: (information) Technically the member function 'Z::getZ' can be const.\n", errout.str());
|
||||||
|
|
||||||
checkConst("class X {\n"
|
checkConst("class X {\n"
|
||||||
" int x;\n"
|
" int x;\n"
|
||||||
|
@ -5071,9 +5071,9 @@ private:
|
||||||
" int getZ();\n"
|
" int getZ();\n"
|
||||||
"};\n"
|
"};\n"
|
||||||
"int Z::getZ() { return z; }\n");
|
"int Z::getZ() { return z; }\n");
|
||||||
ASSERT_EQUALS("[test.cpp:7] -> [test.cpp:5]: (information) The function 'X::getX' can be const\n"
|
ASSERT_EQUALS("[test.cpp:7] -> [test.cpp:5]: (information) Technically the member function 'X::getX' can be const.\n"
|
||||||
"[test.cpp:14] -> [test.cpp:12]: (information) The function 'Y::getY' can be const\n"
|
"[test.cpp:14] -> [test.cpp:12]: (information) Technically the member function 'Y::getY' can be const.\n"
|
||||||
"[test.cpp:21] -> [test.cpp:19]: (information) The function 'Z::getZ' can be const\n", errout.str());
|
"[test.cpp:21] -> [test.cpp:19]: (information) Technically the member function 'Z::getZ' can be const.\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void constIfCfg()
|
void constIfCfg()
|
||||||
|
@ -5087,7 +5087,7 @@ private:
|
||||||
|
|
||||||
settings.ifcfg = false;
|
settings.ifcfg = false;
|
||||||
checkConst(code, &settings);
|
checkConst(code, &settings);
|
||||||
ASSERT_EQUALS("[test.cpp:2]: (information) The function 'foo::f' can be const\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:2]: (information) Technically the member function 'foo::f' can be const.\n", errout.str());
|
||||||
|
|
||||||
settings.ifcfg = true;
|
settings.ifcfg = true;
|
||||||
checkConst(code, &settings);
|
checkConst(code, &settings);
|
||||||
|
|
Loading…
Reference in New Issue