STL: suspicious conditions when using find. Added ok testcases and assert that no error message is written
This commit is contained in:
parent
4de700c9de
commit
69d6453ea8
|
@ -646,17 +646,42 @@ private:
|
||||||
|
|
||||||
void if_find()
|
void if_find()
|
||||||
{
|
{
|
||||||
|
// ---------------------------
|
||||||
|
// string::find
|
||||||
|
// ---------------------------
|
||||||
|
|
||||||
|
// error
|
||||||
check("void f(std::string s)\n"
|
check("void f(std::string s)\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" if (s.find(\"ab\")) { }\n"
|
" if (s.find(\"ab\")) { }\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
ASSERT_EQUALS("[test.cpp:3]: (possible style) Suspicious condition. string::find will return 0 if the string is found at position 0. If this is what you want to check then string::compare is a faster alternative because it doesn't scan through the string.\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (possible style) Suspicious condition. string::find will return 0 if the string is found at position 0. If this is what you want to check then string::compare is a faster alternative because it doesn't scan through the string.\n", errout.str());
|
||||||
|
|
||||||
|
// ok
|
||||||
|
check("void f(std::string s)\n"
|
||||||
|
"{\n"
|
||||||
|
" if (s.find(\"ab\") != std::string::npos) { }\n"
|
||||||
|
"}\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
|
|
||||||
|
// ---------------------------
|
||||||
|
// set::find
|
||||||
|
// ---------------------------
|
||||||
|
|
||||||
|
// error
|
||||||
check("void f(std::set<int> s)\n"
|
check("void f(std::set<int> s)\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" if (s.find(12)) { }\n"
|
" if (s.find(12)) { }\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
ASSERT_EQUALS("[test.cpp:3]: (style) Suspicious condition. The result of find is an iterator, but it is not properly checked.\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:3]: (style) Suspicious condition. The result of find is an iterator, but it is not properly checked.\n", errout.str());
|
||||||
|
|
||||||
|
// ok
|
||||||
|
check("void f(std::set<int> s)\n"
|
||||||
|
"{\n"
|
||||||
|
" if (s.find(123) != s.end()) { }\n"
|
||||||
|
"}\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue