Unused functions: Refactoring
This commit is contained in:
parent
1876cd482b
commit
c34c3ee742
|
@ -30,21 +30,6 @@
|
||||||
// FUNCTION USAGE - Check for unused functions etc
|
// FUNCTION USAGE - Check for unused functions etc
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
CheckUnusedFunctions::CheckUnusedFunctions(ErrorLogger *errorLogger)
|
|
||||||
{
|
|
||||||
_errorLogger = errorLogger;
|
|
||||||
}
|
|
||||||
|
|
||||||
CheckUnusedFunctions::~CheckUnusedFunctions()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void CheckUnusedFunctions::setErrorLogger(ErrorLogger *errorLogger)
|
|
||||||
{
|
|
||||||
_errorLogger = errorLogger;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CheckUnusedFunctions::parseTokens(const Tokenizer &tokenizer)
|
void CheckUnusedFunctions::parseTokens(const Tokenizer &tokenizer)
|
||||||
{
|
{
|
||||||
// Function declarations..
|
// Function declarations..
|
||||||
|
@ -166,7 +151,7 @@ void CheckUnusedFunctions::parseTokens(const Tokenizer &tokenizer)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void CheckUnusedFunctions::check()
|
void CheckUnusedFunctions::check(ErrorLogger * const errorLogger)
|
||||||
{
|
{
|
||||||
for (std::map<std::string, FunctionUsage>::const_iterator it = _functions.begin(); it != _functions.end(); ++it)
|
for (std::map<std::string, FunctionUsage>::const_iterator it = _functions.begin(); it != _functions.end(); ++it)
|
||||||
{
|
{
|
||||||
|
@ -182,7 +167,7 @@ void CheckUnusedFunctions::check()
|
||||||
filename = "";
|
filename = "";
|
||||||
else
|
else
|
||||||
filename = func.filename;
|
filename = func.filename;
|
||||||
_errorLogger->unusedFunction(filename, it->first);
|
unusedFunctionError(errorLogger, filename, it->first);
|
||||||
}
|
}
|
||||||
else if (! func.usedOtherFile)
|
else if (! func.usedOtherFile)
|
||||||
{
|
{
|
||||||
|
@ -196,7 +181,20 @@ void CheckUnusedFunctions::check()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CheckUnusedFunctions::unusedFunctionError(const Token *tok)
|
void CheckUnusedFunctions::unusedFunctionError(ErrorLogger * const errorLogger, const std::string &filename, const std::string &funcname)
|
||||||
{
|
{
|
||||||
reportError(tok, Severity::style, "unusedFunction", "The function 'funcName' is never used");
|
std::list<ErrorLogger::ErrorMessage::FileLocation> locationList;
|
||||||
|
if (!filename.empty())
|
||||||
|
{
|
||||||
|
ErrorLogger::ErrorMessage::FileLocation fileLoc;
|
||||||
|
fileLoc.file = filename;
|
||||||
|
fileLoc.line = 1;
|
||||||
|
locationList.push_back(fileLoc);
|
||||||
|
}
|
||||||
|
|
||||||
|
const ErrorLogger::ErrorMessage errmsg(locationList, Severity::stringify(Severity::style), "The function '" + funcname + "' is never used", "unusedFunction");
|
||||||
|
if (errorLogger)
|
||||||
|
errorLogger->reportErr(errmsg);
|
||||||
|
else
|
||||||
|
reportError(errmsg);
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,35 +32,33 @@
|
||||||
class CheckUnusedFunctions: public Check
|
class CheckUnusedFunctions: public Check
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CheckUnusedFunctions(ErrorLogger *errorLogger = 0);
|
/** @brief This constructor is used when registering the CheckUnusedFunctions */
|
||||||
~CheckUnusedFunctions();
|
CheckUnusedFunctions() : Check()
|
||||||
|
{ }
|
||||||
|
|
||||||
/**
|
/** @brief This constructor is used when running checks. */
|
||||||
* Errors found by this class are forwarded to the given
|
CheckUnusedFunctions(const Tokenizer *tokenizer, const Settings *settings, ErrorLogger *errorLogger)
|
||||||
* errorlogger.
|
: Check(tokenizer, settings, errorLogger)
|
||||||
* @param errorLogger The errorlogger to be used.
|
{ }
|
||||||
*/
|
|
||||||
void setErrorLogger(ErrorLogger *errorLogger);
|
|
||||||
|
|
||||||
// Parse current tokens and determine..
|
// Parse current tokens and determine..
|
||||||
// * Check what functions are used
|
// * Check what functions are used
|
||||||
// * What functions are declared
|
// * What functions are declared
|
||||||
void parseTokens(const Tokenizer &tokenizer);
|
void parseTokens(const Tokenizer &tokenizer);
|
||||||
|
|
||||||
|
void check(ErrorLogger * const errorLogger);
|
||||||
void check();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void getErrorMessages()
|
void getErrorMessages()
|
||||||
{
|
{
|
||||||
unusedFunctionError(0);
|
unusedFunctionError(0, "", "funcName");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dummy implementation, just to provide error for --errorlist
|
* Dummy implementation, just to provide error for --errorlist
|
||||||
*/
|
*/
|
||||||
void unusedFunctionError(const Token *tok);
|
void unusedFunctionError(ErrorLogger * const errorLogger, const std::string &filename, const std::string &funcname);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dummy implementation, just to provide error for --errorlist
|
* Dummy implementation, just to provide error for --errorlist
|
||||||
|
@ -80,9 +78,6 @@ private:
|
||||||
return "Check for functions that are never called\n";
|
return "Check for functions that are never called\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorLogger *_errorLogger;
|
|
||||||
|
|
||||||
|
|
||||||
class FunctionUsage
|
class FunctionUsage
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -624,7 +624,6 @@ unsigned int CppCheck::check()
|
||||||
{
|
{
|
||||||
exitcode = 0;
|
exitcode = 0;
|
||||||
|
|
||||||
_checkUnusedFunctions.setErrorLogger(this);
|
|
||||||
std::sort(_filenames.begin(), _filenames.end());
|
std::sort(_filenames.begin(), _filenames.end());
|
||||||
|
|
||||||
// TODO: Should this be moved out to its own function so all the files can be
|
// TODO: Should this be moved out to its own function so all the files can be
|
||||||
|
@ -728,7 +727,7 @@ unsigned int CppCheck::check()
|
||||||
if (_settings._errorsOnly == false)
|
if (_settings._errorsOnly == false)
|
||||||
_errorLogger.reportOut("Checking usage of global functions..");
|
_errorLogger.reportOut("Checking usage of global functions..");
|
||||||
|
|
||||||
_checkUnusedFunctions.check();
|
_checkUnusedFunctions.check(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
_errorList.clear();
|
_errorList.clear();
|
||||||
|
|
|
@ -162,17 +162,6 @@ public:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void unusedFunction(const std::string &filename, const std::string &funcname)
|
|
||||||
{
|
|
||||||
std::list<ErrorLogger::ErrorMessage::FileLocation> loc;
|
|
||||||
ErrorLogger::ErrorMessage::FileLocation fileLoc;
|
|
||||||
fileLoc.file = filename;
|
|
||||||
fileLoc.line = 1;
|
|
||||||
loc.push_back(fileLoc);
|
|
||||||
reportErr(ErrorLogger::ErrorMessage(loc, "style", "The function '" + funcname + "' is never used", "unusedFunction"));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static bool mismatchAllocDealloc()
|
static bool mismatchAllocDealloc()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -58,9 +58,11 @@ private:
|
||||||
errout.str("");
|
errout.str("");
|
||||||
|
|
||||||
// Check for unused functions..
|
// Check for unused functions..
|
||||||
CheckUnusedFunctions checkUnusedFunctions(this);
|
Settings settings;
|
||||||
|
settings._checkCodingStyle = true;
|
||||||
|
CheckUnusedFunctions checkUnusedFunctions(&tokenizer, &settings, this);
|
||||||
checkUnusedFunctions.parseTokens(tokenizer);
|
checkUnusedFunctions.parseTokens(tokenizer);
|
||||||
checkUnusedFunctions.check();
|
checkUnusedFunctions.check(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void incondition()
|
void incondition()
|
||||||
|
|
Loading…
Reference in New Issue