errmsg: Added errormessage for 'the class 'classname' doesn't have a constructor'
This commit is contained in:
parent
41a73e3b1e
commit
0c3c00daec
2
Makefile
2
Makefile
|
@ -89,7 +89,7 @@ install: cppcheck
|
||||||
src/checkbufferoverrun.o: src/checkbufferoverrun.cpp src/checkbufferoverrun.h src/tokenize.h src/settings.h src/errorlogger.h src/token.h
|
src/checkbufferoverrun.o: src/checkbufferoverrun.cpp src/checkbufferoverrun.h src/tokenize.h src/settings.h src/errorlogger.h src/token.h
|
||||||
g++ $(CXXFLAGS) -c -o src/checkbufferoverrun.o src/checkbufferoverrun.cpp
|
g++ $(CXXFLAGS) -c -o src/checkbufferoverrun.o src/checkbufferoverrun.cpp
|
||||||
|
|
||||||
src/checkclass.o: src/checkclass.cpp src/checkclass.h src/tokenize.h src/settings.h src/errorlogger.h src/token.h
|
src/checkclass.o: src/checkclass.cpp src/checkclass.h src/tokenize.h src/settings.h src/errorlogger.h src/token.h src/errormessage.h
|
||||||
g++ $(CXXFLAGS) -c -o src/checkclass.o src/checkclass.cpp
|
g++ $(CXXFLAGS) -c -o src/checkclass.o src/checkclass.cpp
|
||||||
|
|
||||||
src/checkfunctionusage.o: src/checkfunctionusage.cpp src/checkfunctionusage.h src/tokenize.h src/settings.h src/errorlogger.h src/token.h
|
src/checkfunctionusage.o: src/checkfunctionusage.cpp src/checkfunctionusage.h src/tokenize.h src/settings.h src/errorlogger.h src/token.h
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
#include "checkclass.h"
|
#include "checkclass.h"
|
||||||
|
|
||||||
|
#include "errormessage.h"
|
||||||
|
|
||||||
#include <locale>
|
#include <locale>
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -385,10 +387,7 @@ void CheckClass::constructors()
|
||||||
struct VAR *varlist = ClassChecking_GetVarList(tok1);
|
struct VAR *varlist = ClassChecking_GetVarList(tok1);
|
||||||
if (varlist)
|
if (varlist)
|
||||||
{
|
{
|
||||||
std::ostringstream ostr;
|
_errorLogger->reportErr(ErrorMessage::noConstructor(_tokenizer, tok1, classNameToken->str()));
|
||||||
ostr << _tokenizer->fileLine(tok1);
|
|
||||||
ostr << " The class '" << classNameToken->str() << "' has no constructor";
|
|
||||||
_errorLogger->reportErr(ostr.str());
|
|
||||||
}
|
}
|
||||||
// Delete the varlist..
|
// Delete the varlist..
|
||||||
while (varlist)
|
while (varlist)
|
||||||
|
|
|
@ -271,6 +271,7 @@ void CppCheck::checkFile(const std::string &code, const char FileName[])
|
||||||
checkMemoryLeak.CheckMemoryLeak();
|
checkMemoryLeak.CheckMemoryLeak();
|
||||||
|
|
||||||
// Check that all class constructors are ok.
|
// Check that all class constructors are ok.
|
||||||
|
if (ErrorMessage::noConstructor(_settings))
|
||||||
checkClass.constructors();
|
checkClass.constructors();
|
||||||
|
|
||||||
// Check that all base classes have virtual destructors
|
// Check that all base classes have virtual destructors
|
||||||
|
|
|
@ -30,6 +30,15 @@ private:
|
||||||
ErrorMessage() { }
|
ErrorMessage() { }
|
||||||
static std::string msg1(const Tokenizer *tokenizer, const Token *Location);
|
static std::string msg1(const Tokenizer *tokenizer, const Token *Location);
|
||||||
public:
|
public:
|
||||||
|
static std::string noConstructor(const Tokenizer *tokenizer, const Token *Location, const std::string &classname)
|
||||||
|
{
|
||||||
|
return msg1(tokenizer, Location) + "The class '" + classname + "' has no constructor";
|
||||||
|
}
|
||||||
|
static bool noConstructor(const Settings &s)
|
||||||
|
{
|
||||||
|
return s._checkCodingStyle;
|
||||||
|
}
|
||||||
|
|
||||||
static std::string memleak(const Tokenizer *tokenizer, const Token *Location, const std::string &varname)
|
static std::string memleak(const Tokenizer *tokenizer, const Token *Location, const std::string &varname)
|
||||||
{
|
{
|
||||||
return msg1(tokenizer, Location) + "Memory leak: " + varname + "";
|
return msg1(tokenizer, Location) + "Memory leak: " + varname + "";
|
||||||
|
|
|
@ -83,7 +83,7 @@ private:
|
||||||
" int i;\n"
|
" int i;\n"
|
||||||
"};\n");
|
"};\n");
|
||||||
std::string actual(errout.str());
|
std::string actual(errout.str());
|
||||||
std::string expected("[test.cpp:1] The class 'Fred' has no constructor\n");
|
std::string expected("[test.cpp:1]: The class 'Fred' has no constructor\n");
|
||||||
ASSERT_EQUALS(expected, actual);
|
ASSERT_EQUALS(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,9 @@ int main()
|
||||||
// Error messages..
|
// Error messages..
|
||||||
std::list<Message> err;
|
std::list<Message> err;
|
||||||
|
|
||||||
|
// checkclass.cpp..
|
||||||
|
err.push_back(Message("noConstructor", Message::STYLE, "The class '%1' has no constructor", "classname"));
|
||||||
|
|
||||||
// checkmemoryleak.cpp..
|
// checkmemoryleak.cpp..
|
||||||
err.push_back(Message("memleak", 0, "Memory leak: %1", "varname"));
|
err.push_back(Message("memleak", 0, "Memory leak: %1", "varname"));
|
||||||
err.push_back(Message("resourceLeak", 0, "Resource leak: %1", "varname"));
|
err.push_back(Message("resourceLeak", 0, "Resource leak: %1", "varname"));
|
||||||
|
|
Loading…
Reference in New Issue