Skip to content

Commit 0c82876

Browse files
authored
some CheckUnusedFunctions usage cleanups (#5976)
1 parent a656f10 commit 0c82876

2 files changed

Lines changed: 30 additions & 22 deletions

File tree

lib/checkunusedfunctions.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -369,10 +369,7 @@ void CheckUnusedFunctions::unusedFunctionError(ErrorLogger& errorLogger,
369369

370370
void CheckUnusedFunctions::parseTokens(const Tokenizer &tokenizer, const Settings &settings)
371371
{
372-
if (!settings.checks.isEnabled(Checks::unusedFunction))
373-
return;
374-
if (settings.useSingleJob() && settings.buildDir.empty())
375-
instance.parseTokens(tokenizer, tokenizer.list.getFiles().front().c_str(), settings);
372+
instance.parseTokens(tokenizer, tokenizer.list.getFiles().front().c_str(), settings);
376373
}
377374

378375
#define logChecker(id) \

lib/cppcheck.cpp

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -631,18 +631,20 @@ unsigned int CppCheck::checkFile(const std::string& filename, const std::string
631631
mPlistFile.close();
632632
}
633633

634-
CheckUnusedFunctions checkUnusedFunctions;
635-
636634
try {
637635
if (mSettings.library.markupFile(filename)) {
638-
Tokenizer tokenizer(mSettings, this);
639-
if (fileStream)
640-
tokenizer.list.createTokens(*fileStream, filename);
641-
else {
642-
std::ifstream in(filename);
643-
tokenizer.list.createTokens(in, filename);
636+
if (mSettings.checks.isEnabled(Checks::unusedFunction) &&
637+
mSettings.useSingleJob() &&
638+
mSettings.buildDir.empty()) {
639+
Tokenizer tokenizer(mSettings, this);
640+
if (fileStream)
641+
tokenizer.list.createTokens(*fileStream, filename);
642+
else {
643+
std::ifstream in(filename);
644+
tokenizer.list.createTokens(in, filename);
645+
}
646+
CheckUnusedFunctions::parseTokens(tokenizer, mSettings);
644647
}
645-
CheckUnusedFunctions::parseTokens(tokenizer, mSettings);
646648
return EXIT_SUCCESS;
647649
}
648650

@@ -933,10 +935,6 @@ unsigned int CppCheck::checkFile(const std::string& filename, const std::string
933935
// Check normal tokens
934936
checkNormalTokens(tokenizer);
935937

936-
// Analyze info..
937-
if (!mSettings.buildDir.empty())
938-
checkUnusedFunctions.parseTokens(tokenizer, filename.c_str(), mSettings);
939-
940938
#ifdef HAVE_RULES
941939
// handling of "simple" rules has been removed.
942940
if (hasRule("simple"))
@@ -1017,7 +1015,6 @@ unsigned int CppCheck::checkFile(const std::string& filename, const std::string
10171015
}
10181016

10191017
if (!mSettings.buildDir.empty()) {
1020-
mAnalyzerInformation.setFileInfo("CheckUnusedFunctions", checkUnusedFunctions.analyzerInfo());
10211018
mAnalyzerInformation.close();
10221019
}
10231020

@@ -1072,6 +1069,8 @@ void CppCheck::checkRawTokens(const Tokenizer &tokenizer)
10721069

10731070
void CppCheck::checkNormalTokens(const Tokenizer &tokenizer)
10741071
{
1072+
CheckUnusedFunctions unusedFunctionsChecker;
1073+
10751074
// TODO: this should actually be the behavior if only "--enable=unusedFunction" is specified - see #10648
10761075
const char* unusedFunctionOnly = std::getenv("UNUSEDFUNCTION_ONLY");
10771076
const bool doUnusedFunctionOnly = unusedFunctionOnly && (std::strcmp(unusedFunctionOnly, "1") == 0);
@@ -1105,12 +1104,20 @@ void CppCheck::checkNormalTokens(const Tokenizer &tokenizer)
11051104
}
11061105
}
11071106

1107+
if (mSettings.checks.isEnabled(Checks::unusedFunction) && !mSettings.buildDir.empty()) {
1108+
unusedFunctionsChecker.parseTokens(tokenizer, tokenizer.list.getFiles().front().c_str(), mSettings);
1109+
}
1110+
if (mSettings.checks.isEnabled(Checks::unusedFunction) &&
1111+
mSettings.useSingleJob() &&
1112+
mSettings.buildDir.empty()) {
1113+
CheckUnusedFunctions::parseTokens(tokenizer, mSettings);
1114+
}
1115+
11081116
if (mSettings.clang) {
11091117
// TODO: Use CTU for Clang analysis
11101118
return;
11111119
}
11121120

1113-
11141121
if (mSettings.useSingleJob() || !mSettings.buildDir.empty()) {
11151122
// Analyse the tokens..
11161123

@@ -1136,8 +1143,10 @@ void CppCheck::checkNormalTokens(const Tokenizer &tokenizer)
11361143
}
11371144
}
11381145
}
1146+
}
11391147

1140-
CheckUnusedFunctions::parseTokens(tokenizer, mSettings);
1148+
if (mSettings.checks.isEnabled(Checks::unusedFunction) && !mSettings.buildDir.empty()) {
1149+
mAnalyzerInformation.setFileInfo("CheckUnusedFunctions", unusedFunctionsChecker.analyzerInfo());
11411150
}
11421151

11431152
#ifdef HAVE_RULES
@@ -1784,7 +1793,8 @@ bool CppCheck::analyseWholeProgram()
17841793
for (Check *check : Check::instances())
17851794
errors |= check->analyseWholeProgram(&ctu, mFileInfo, mSettings, *this); // TODO: ctu
17861795

1787-
errors |= CheckUnusedFunctions::check(mSettings, *this);
1796+
if (mSettings.checks.isEnabled(Checks::unusedFunction))
1797+
errors |= CheckUnusedFunctions::check(mSettings, *this);
17881798

17891799
return errors && (mExitCode > 0);
17901800
}
@@ -1850,7 +1860,8 @@ void CppCheck::analyseWholeProgram(const std::string &buildDir, const std::list<
18501860
for (Check *check : Check::instances())
18511861
check->analyseWholeProgram(&ctuFileInfo, fileInfoList, mSettings, *this);
18521862

1853-
CheckUnusedFunctions::check(mSettings, *this);
1863+
if (mSettings.checks.isEnabled(Checks::unusedFunction))
1864+
CheckUnusedFunctions::check(mSettings, *this);
18541865

18551866
for (Check::FileInfo *fi : fileInfoList)
18561867
delete fi;

0 commit comments

Comments
 (0)