From 428e357488be64ddc38a67a4700fa8a9780e8554 Mon Sep 17 00:00:00 2001 From: Mathias Vorreiter Pedersen Date: Tue, 7 Jan 2020 11:35:54 +0100 Subject: [PATCH] C++: Add testcase demonstrating false positive --- .../AssignWhereCompareMeant.expected | 3 +++ .../AssignWhereCompareMeant/test.cpp | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AssignWhereCompareMeant/AssignWhereCompareMeant.expected b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AssignWhereCompareMeant/AssignWhereCompareMeant.expected index 1e2f6864096..5e38869d2f3 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AssignWhereCompareMeant/AssignWhereCompareMeant.expected +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AssignWhereCompareMeant/AssignWhereCompareMeant.expected @@ -13,3 +13,6 @@ | test.cpp:82:7:82:11 | ... = ... | Use of '=' where '==' may have been intended. | | test.cpp:84:7:84:11 | ... = ... | Use of '=' where '==' may have been intended. | | test.cpp:92:17:92:22 | ... = ... | Use of '=' where '==' may have been intended. | +| test.cpp:105:6:105:10 | ... = ... | Use of '=' where '==' may have been intended. | +| test.cpp:113:6:113:10 | ... = ... | Use of '=' where '==' may have been intended. | +| test.cpp:113:6:113:10 | ... = ... | Use of '=' where '==' may have been intended. | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AssignWhereCompareMeant/test.cpp b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AssignWhereCompareMeant/test.cpp index ae3f6cb3df8..71a51b658ed 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AssignWhereCompareMeant/test.cpp +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/AssignWhereCompareMeant/test.cpp @@ -98,3 +98,22 @@ void g(int *i_p, int cond) { if (y = 1) { // GOOD: y might not be initialized so it is probably intentional. } } + +template +void h() { + int x; + if(x = 0) { // GOOD [FALSE POSITIVE]: x is not initialized so this is probably intensional + } + + int y = 0; + if((y = 1)) { // GOOD + } + + int z = 0; + if(z = 1) { // BAD + } +} + +void f() { + h(); +} \ No newline at end of file