@@ -1798,22 +1798,25 @@ void CppCheck::analyseClangTidy(const FileSettings &fileSettings)
17981798bool CppCheck::analyseWholeProgram ()
17991799{
18001800 bool errors = false ;
1801- // Analyse the tokens
1802- CTU::FileInfo ctu;
1803- if (mSettings .useSingleJob () || !mSettings .buildDir .empty ())
1804- {
1805- for (const Check::FileInfo *fi : mFileInfo ) {
1806- const auto *fi2 = dynamic_cast <const CTU::FileInfo *>(fi);
1807- if (fi2) {
1808- ctu.functionCalls .insert (ctu.functionCalls .end (), fi2->functionCalls .cbegin (), fi2->functionCalls .cend ());
1809- ctu.nestedCalls .insert (ctu.nestedCalls .end (), fi2->nestedCalls .cbegin (), fi2->nestedCalls .cend ());
1801+
1802+ if (!Settings::unusedFunctionOnly ()) {
1803+ // Analyse the tokens
1804+ CTU::FileInfo ctu;
1805+ if (mSettings .useSingleJob () || !mSettings .buildDir .empty ())
1806+ {
1807+ for (const Check::FileInfo *fi : mFileInfo ) {
1808+ const auto *fi2 = dynamic_cast <const CTU::FileInfo *>(fi);
1809+ if (fi2) {
1810+ ctu.functionCalls .insert (ctu.functionCalls .end (), fi2->functionCalls .cbegin (), fi2->functionCalls .cend ());
1811+ ctu.nestedCalls .insert (ctu.nestedCalls .end (), fi2->nestedCalls .cbegin (), fi2->nestedCalls .cend ());
1812+ }
18101813 }
18111814 }
1812- }
18131815
1814- // cppcheck-suppress shadowFunction - TODO: fix this
1815- for (Check *check : Check::instances ())
1816- errors |= check->analyseWholeProgram (ctu, mFileInfo , mSettings , mErrorLogger ); // TODO: ctu
1816+ // cppcheck-suppress shadowFunction - TODO: fix this
1817+ for (Check *check : Check::instances ())
1818+ errors |= check->analyseWholeProgram (ctu, mFileInfo , mSettings , mErrorLogger ); // TODO: ctu
1819+ }
18171820
18181821 if (mUnusedFunctionsCheck )
18191822 errors |= mUnusedFunctionsCheck ->check (mSettings , mErrorLogger );
@@ -1823,9 +1826,16 @@ bool CppCheck::analyseWholeProgram()
18231826
18241827unsigned int CppCheck::analyseWholeProgram (const std::string &buildDir, const std::list<FileWithDetails> &files, const std::list<FileSettings>& fileSettings, const std::string& ctuInfo)
18251828{
1826- executeAddonsWholeProgram (files, fileSettings, ctuInfo);
18271829 if (mSettings .checks .isEnabled (Checks::unusedFunction))
18281830 CheckUnusedFunctions::analyseWholeProgram (mSettings , mErrorLogger , buildDir);
1831+
1832+ if (mUnusedFunctionsCheck )
1833+ mUnusedFunctionsCheck ->check (mSettings , mErrorLogger );
1834+
1835+ if (Settings::unusedFunctionOnly ())
1836+ return mLogger ->exitcode ();
1837+
1838+ executeAddonsWholeProgram (files, fileSettings, ctuInfo);
18291839 std::list<Check::FileInfo*> fileInfoList;
18301840 CTU::FileInfo ctuFileInfo;
18311841
@@ -1876,9 +1886,6 @@ unsigned int CppCheck::analyseWholeProgram(const std::string &buildDir, const st
18761886 for (Check *check : Check::instances ())
18771887 check->analyseWholeProgram (ctuFileInfo, fileInfoList, mSettings , mErrorLogger );
18781888
1879- if (mUnusedFunctionsCheck )
1880- mUnusedFunctionsCheck ->check (mSettings , mErrorLogger );
1881-
18821889 for (Check::FileInfo *fi : fileInfoList)
18831890 delete fi;
18841891
0 commit comments