From 41278852829f043dd0e0a6a3a5db29396a97841f Mon Sep 17 00:00:00 2001 From: shaneasd Date: Wed, 2 Feb 2022 00:24:26 +0800 Subject: [PATCH] improve noConstructor message (#3750) --- lib/checkclass.cpp | 4 ++-- test/testconstructors.cpp | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/checkclass.cpp b/lib/checkclass.cpp index c4eb5be85..3c404b5d2 100644 --- a/lib/checkclass.cpp +++ b/lib/checkclass.cpp @@ -967,8 +967,8 @@ void CheckClass::noConstructorError(const Token *tok, const std::string &classna // For performance reasons the constructor might be intentionally missing. Therefore this is not a "warning" reportError(tok, Severity::style, "noConstructor", "$symbol:" + classname + "\n" + - "The " + std::string(isStruct ? "struct" : "class") + " '$symbol' does not have a constructor although it has private member variables.\n" - "The " + std::string(isStruct ? "struct" : "class") + " '$symbol' does not have a constructor " + "The " + std::string(isStruct ? "struct" : "class") + " '$symbol' does not declare a constructor although it has private member variables which likely require initialization.\n" + "The " + std::string(isStruct ? "struct" : "class") + " '$symbol' does not declare a constructor " "although it has private member variables. Member variables of builtin types are left " "uninitialized when the class is instantiated. That may cause bugs or undefined behavior.", CWE398, Certainty::normal); } diff --git a/test/testconstructors.cpp b/test/testconstructors.cpp index a481110a0..cc756e8b9 100644 --- a/test/testconstructors.cpp +++ b/test/testconstructors.cpp @@ -242,14 +242,14 @@ private: "private:\n" " int i;\n" "};"); - ASSERT_EQUALS("[test.cpp:1]: (style) The class 'Fred' does not have a constructor although it has private member variables.\n", errout.str()); + ASSERT_EQUALS("[test.cpp:1]: (style) The class 'Fred' does not declare a constructor although it has private member variables which likely require initialization.\n", errout.str()); check("struct Fred\n" "{\n" "private:\n" " int i;\n" "};"); - ASSERT_EQUALS("[test.cpp:1]: (style) The struct 'Fred' does not have a constructor although it has private member variables.\n", errout.str()); + ASSERT_EQUALS("[test.cpp:1]: (style) The struct 'Fred' does not declare a constructor although it has private member variables which likely require initialization.\n", errout.str()); } @@ -403,8 +403,8 @@ private: check("struct Fred { int x; };\n" "class Barney { Fred fred; };\n" "class Wilma { struct Betty { int x; } betty; };"); - ASSERT_EQUALS("[test.cpp:2]: (style) The class 'Barney' does not have a constructor although it has private member variables.\n" - "[test.cpp:3]: (style) The class 'Wilma' does not have a constructor although it has private member variables.\n", errout.str()); + ASSERT_EQUALS("[test.cpp:2]: (style) The class 'Barney' does not declare a constructor although it has private member variables which likely require initialization.\n" + "[test.cpp:3]: (style) The class 'Wilma' does not declare a constructor although it has private member variables which likely require initialization.\n", errout.str()); } void simple9() { // ticket #4574 @@ -521,7 +521,7 @@ private: "{\n" " int i;\n" "};"); - ASSERT_EQUALS("[test.cpp:1]: (style) The class 'Fred' does not have a constructor although it has private member variables.\n", errout.str()); + ASSERT_EQUALS("[test.cpp:1]: (style) The class 'Fred' does not declare a constructor although it has private member variables which likely require initialization.\n", errout.str()); } void noConstructor2() {