@@ -1025,6 +1025,10 @@ void CppCheck::checkRawTokens(const Tokenizer &tokenizer)
10251025
10261026void CppCheck::checkNormalTokens (const Tokenizer &tokenizer)
10271027{
1028+ // TODO: this should actually be the behavior if only "--enable=unusedFunction" is specified - see #10648
1029+ const char * unusedFunctionOnly = std::getenv (" UNUSEDFUNCTION_ONLY" );
1030+ const bool doUnusedFunctionOnly = unusedFunctionOnly && (std::strcmp (unusedFunctionOnly, " 1" ) == 0 );
1031+
10281032 // call all "runChecks" in all registered Check classes
10291033 for (Check *check : Check::instances ()) {
10301034 if (Settings::terminated ())
@@ -1033,6 +1037,9 @@ void CppCheck::checkNormalTokens(const Tokenizer &tokenizer)
10331037 if (Tokenizer::isMaxTime ())
10341038 return ;
10351039
1040+ if (doUnusedFunctionOnly && dynamic_cast <CheckUnusedFunctions*>(check) == nullptr )
1041+ continue ;
1042+
10361043 Timer timerRunChecks (check->name () + " ::runChecks" , mSettings .showtime , &s_timerResults);
10371044 check->runChecks (&tokenizer, &mSettings , this );
10381045 }
@@ -1053,7 +1060,10 @@ void CppCheck::checkNormalTokens(const Tokenizer &tokenizer)
10531060 mAnalyzerInformation .setFileInfo (" ctu" , fi1->toString ());
10541061 }
10551062
1056- for (const Check *check: Check::instances ()) {
1063+ for (const Check *check : Check::instances ()) {
1064+ if (doUnusedFunctionOnly && dynamic_cast <const CheckUnusedFunctions*>(check) == nullptr )
1065+ continue ;
1066+
10571067 Check::FileInfo *fi = check->getFileInfo (&tokenizer, &mSettings );
10581068 if (fi != nullptr ) {
10591069 if (mSettings .jobs == 1 )
0 commit comments