diff --git a/test/testnullpointer.cpp b/test/testnullpointer.cpp index 9c88e3965..49ea24383 100644 --- a/test/testnullpointer.cpp +++ b/test/testnullpointer.cpp @@ -1124,12 +1124,6 @@ private: } void nullpointer8() { - check("void foo()\n" - "{\n" - " const char * x = 0;\n" - " strdup(x);\n" - "}"); - ASSERT_EQUALS("[test.cpp:4]: (error) Possible null pointer dereference: x\n", errout.str()); check("void foo()\n" "{\n" " char const * x = 0;\n" @@ -1154,39 +1148,9 @@ private: " p->x = 0;\n" "}"); ASSERT_EQUALS("[test.cpp:4]: (error) Possible null pointer dereference: p\n", errout.str()); - - check("void foo()\n" - "{\n" - " struct my_type* p;\n" - " p = 0;\n" - " p->x = 0;\n" - "}"); - ASSERT_EQUALS("[test.cpp:5]: (error) Possible null pointer dereference: p\n", errout.str()); } void nullpointer11() { // ticket #2812 - check("int foo()\n" - "{\n" - " my_type* p = 0;\n" - " return p->x;\n" - "}"); - ASSERT_EQUALS("[test.cpp:4]: (error) Possible null pointer dereference: p\n", errout.str()); - - check("int foo()\n" - "{\n" - " struct my_type* p = 0;\n" - " return p->x;\n" - "}"); - ASSERT_EQUALS("[test.cpp:4]: (error) Possible null pointer dereference: p\n", errout.str()); - - check("int foo()\n" - "{\n" - " my_type* p;\n" - " p = 0;\n" - " return p->x;\n" - "}"); - ASSERT_EQUALS("[test.cpp:5]: (error) Possible null pointer dereference: p\n", errout.str()); - check("int foo()\n" "{\n" " struct my_type* p;\n" @@ -1429,21 +1393,20 @@ private: "}"); ASSERT_EQUALS("", errout.str()); - check("void foo(char *p) {\n" - " if (!p) {\n" - " abort();\n" - " }\n" - " *p = 0;\n" - "}"); - ASSERT_EQUALS("", errout.str()); + { + static const char code[] = + "void foo(char *p) {\n" + " if (!p) {\n" + " abort();\n" + " }\n" + " *p = 0;\n" + "}"; + check(code, false); + ASSERT_EQUALS("", errout.str()); - check("void foo(char *p) {\n" - " if (!p) {\n" - " abort();\n" - " }\n" - " *p = 0;\n" - "}\n", true); - ASSERT_EQUALS("[test.cpp:5] -> [test.cpp:2]: (warning, inconclusive) Possible null pointer dereference: p - otherwise it is redundant to check it against null.\n", errout.str()); + check(code, true); + ASSERT_EQUALS("[test.cpp:5] -> [test.cpp:2]: (warning, inconclusive) Possible null pointer dereference: p - otherwise it is redundant to check it against null.\n", errout.str()); + } check("void foo(char *p) {\n" " if (!p) {\n" diff --git a/test/testother.cpp b/test/testother.cpp index c3ce72e7b..7a919cff9 100644 --- a/test/testother.cpp +++ b/test/testother.cpp @@ -2844,13 +2844,6 @@ private: } void suspiciousEqualityComparison() { - check("void foo(int c) {\n" - " if (c == 1) {\n" - " c == 0;\n" - " }\n" - "}"); - ASSERT_EQUALS("[test.cpp:3]: (warning, inconclusive) Found suspicious equality comparison. Did you intend to assign a value instead?\n", errout.str()); - check("void foo(int c) {\n" " if (c == 1) c == 0;\n" "}"); @@ -2916,13 +2909,6 @@ private: "}"); ASSERT_EQUALS("", errout.str()); - check("void foo(int c) {\n" - " for (; running == 1;) {\n" - " c ++;\n" - " }\n" - "}"); - ASSERT_EQUALS("", errout.str()); - check("void foo(int c) {\n" " printf(\"%i\n\", ({x==0;}));\n" "}"); @@ -3446,14 +3432,6 @@ private: ); ASSERT_EQUALS("[test.cpp:4]: (warning) Logical disjunction always evaluates to true: x != 5 || x != 6.\n", errout.str()); - check("void f(int x, int y) {\n" - " const int ERR1 = 5;\n" - " if ((x != ERR1) || (y != ERR1))\n" - " a++;\n" - "}\n" - ); - ASSERT_EQUALS("", errout.str()); - check("void f(unsigned int a, unsigned int b, unsigned int c) {\n" " if((a != b) || (c != b) || (c != a))\n" " {\n" @@ -3849,8 +3827,6 @@ private: check("setegid(getegid());\n", NULL, false , false, true); ASSERT_EQUALS("[test.cpp:1]: (warning) Redundant get and set of user id.\n", errout.str()); - check("seteuid(getuid());\n", NULL, false , false, true); - ASSERT_EQUALS("", errout.str()); check("seteuid(getuid());\n", NULL, false , false, true); ASSERT_EQUALS("", errout.str()); check("seteuid(foo());\n", NULL, false , false, true); @@ -4089,12 +4065,12 @@ private: ASSERT_EQUALS("[test.cpp:2]: (warning) Conversion of string literal \"Hello\" to bool always evaluates to true.\n", errout.str()); check("int f() {\n" - " if (\"Hello\" && 1) { }\n" + " if (\"Hello\" && test) { }\n" "}"); ASSERT_EQUALS("[test.cpp:2]: (warning) Conversion of string literal \"Hello\" to bool always evaluates to true.\n", errout.str()); check("int f() {\n" - " if (1 && \"Hello\") { }\n" + " if (test && \"Hello\") { }\n" "}"); ASSERT_EQUALS("[test.cpp:2]: (warning) Conversion of string literal \"Hello\" to bool always evaluates to true.\n", errout.str()); @@ -4286,15 +4262,6 @@ private: "}"); ASSERT_EQUALS("[test.cpp:5] -> [test.cpp:3]: (style) Found duplicate branches for 'if' and 'else'.\n", errout.str()); - check("void f()\n" - "{\n" - " if (front < 0)\n" - " { frac = (front)/(front-back);}\n" - " else\n" - " frac = (front)/(front-back);\n" - "}"); - ASSERT_EQUALS("[test.cpp:5] -> [test.cpp:3]: (style) Found duplicate branches for 'if' and 'else'.\n", errout.str()); - check("void f()\n" "{\n" " if (front < 0)\n" @@ -5017,16 +4984,6 @@ private: "}"); ASSERT_EQUALS("[test.cpp:2]: (warning, inconclusive) Suspicious use of ; at the end of 'for' statement.\n", errout.str()); - // Block with some tokens to make sure the tokenizer output - // stays the same for "for(); {}" - check( - "void foo() {\n" - " for(int i = 0; i < 10; ++i); {\n" - " int j = 123;\n" - " }\n" - "}"); - ASSERT_EQUALS("[test.cpp:2]: (warning, inconclusive) Suspicious use of ; at the end of 'for' statement.\n", errout.str()); - check( "void foo() {\n" " while (!quit); {\n" diff --git a/test/testsimplifytokens.cpp b/test/testsimplifytokens.cpp index 5f7b45b48..dcdee039d 100644 --- a/test/testsimplifytokens.cpp +++ b/test/testsimplifytokens.cpp @@ -2584,7 +2584,6 @@ private: ASSERT_EQUALS("if ( ! x ) { ; }", tok("if(0==x);", false)); ASSERT_EQUALS("if ( ! x ) { ; }", tok("if(x==0);", false)); ASSERT_EQUALS("if ( ! ( a = b ) ) { ; }", tok("if(0==(a=b));", false)); - ASSERT_EQUALS("if ( ! x ) { ; }", tok("if(x==0);", false)); ASSERT_EQUALS("if ( ! a && b ( ) ) { ; }", tok("if( 0 == a && b() );", false)); ASSERT_EQUALS("if ( b ( ) && ! a ) { ; }", tok("if( b() && 0 == a );", false)); ASSERT_EQUALS("if ( ! ( a = b ) ) { ; }", tok("if((a=b)==0);", false));