Skip to content

Commit b901fbe

Browse files
authored
small Check::analyseWholeProgram() related cleanup (#7203)
1 parent 11aef93 commit b901fbe

15 files changed

+48
-39
lines changed

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -734,7 +734,7 @@ test/testcheck.o: test/testcheck.cpp lib/addoninfo.h lib/check.h lib/color.h lib
734734
test/testclangimport.o: test/testclangimport.cpp lib/addoninfo.h lib/check.h lib/clangimport.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/sourcelocation.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/vfvalue.h test/fixture.h
735735
$(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testclangimport.cpp
736736

737-
test/testclass.o: test/testclass.cpp externals/simplecpp/simplecpp.h lib/addoninfo.h lib/check.h lib/checkclass.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/sourcelocation.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/vfvalue.h test/fixture.h test/helpers.h
737+
test/testclass.o: test/testclass.cpp externals/simplecpp/simplecpp.h lib/addoninfo.h lib/check.h lib/checkclass.h lib/color.h lib/config.h lib/ctu.h lib/errorlogger.h lib/errortypes.h lib/library.h lib/mathlib.h lib/platform.h lib/preprocessor.h lib/settings.h lib/sourcelocation.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/tokenize.h lib/tokenlist.h lib/utils.h lib/vfvalue.h test/fixture.h test/helpers.h
738738
$(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testclass.cpp
739739

740740
test/testcmdlineparser.o: test/testcmdlineparser.cpp cli/cmdlinelogger.h cli/cmdlineparser.h externals/simplecpp/simplecpp.h lib/addoninfo.h lib/check.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/filesettings.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/preprocessor.h lib/settings.h lib/standards.h lib/suppressions.h lib/timer.h lib/tokenize.h lib/tokenlist.h lib/utils.h test/fixture.h test/helpers.h test/redirect.h

lib/check.h

+1-5
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,7 @@ class CPPCHECKLIB Check {
120120
}
121121

122122
// Return true if an error is reported.
123-
virtual bool analyseWholeProgram(const CTU::FileInfo *ctu, const std::list<FileInfo*> &fileInfo, const Settings& /*settings*/, ErrorLogger & /*errorLogger*/) {
124-
(void)ctu;
125-
(void)fileInfo;
126-
//(void)settings;
127-
//(void)errorLogger;
123+
virtual bool analyseWholeProgram(const CTU::FileInfo& /*ctu*/, const std::list<FileInfo*>& /*fileInfo*/, const Settings& /*settings*/, ErrorLogger & /*errorLogger*/) {
128124
return false;
129125
}
130126

lib/checkbufferoverrun.cpp

+7-6
Original file line numberDiff line numberDiff line change
@@ -982,17 +982,18 @@ Check::FileInfo * CheckBufferOverrun::loadFileInfoFromXml(const tinyxml2::XMLEle
982982
}
983983

984984
/** @brief Analyse all file infos for all TU */
985-
bool CheckBufferOverrun::analyseWholeProgram(const CTU::FileInfo *ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
985+
bool CheckBufferOverrun::analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
986986
{
987-
if (!ctu)
988-
return false;
989-
bool foundErrors = false;
990-
991987
CheckBufferOverrun dummy(nullptr, &settings, &errorLogger);
992988
dummy.
993989
logChecker("CheckBufferOverrun::analyseWholeProgram");
994990

995-
const std::map<std::string, std::list<const CTU::FileInfo::CallBase *>> callsMap = ctu->getCallsMap();
991+
if (fileInfo.empty())
992+
return false;
993+
994+
const std::map<std::string, std::list<const CTU::FileInfo::CallBase *>> callsMap = ctu.getCallsMap();
995+
996+
bool foundErrors = false;
996997

997998
for (const Check::FileInfo* fi1 : fileInfo) {
998999
const auto *fi = dynamic_cast<const MyFileInfo*>(fi1);

lib/checkbufferoverrun.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class CPPCHECKLIB CheckBufferOverrun : public Check {
7272
Check::FileInfo *getFileInfo(const Tokenizer &tokenizer, const Settings &settings) const override;
7373

7474
/** @brief Analyse all file infos for all TU */
75-
bool analyseWholeProgram(const CTU::FileInfo *ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger) override;
75+
bool analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger) override;
7676

7777
void arrayIndex();
7878
void arrayIndexError(const Token* tok,

lib/checkclass.cpp

+10-6
Original file line numberDiff line numberDiff line change
@@ -3696,18 +3696,22 @@ Check::FileInfo * CheckClass::loadFileInfoFromXml(const tinyxml2::XMLElement *xm
36963696
return fileInfo;
36973697
}
36983698

3699-
bool CheckClass::analyseWholeProgram(const CTU::FileInfo *ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
3699+
bool CheckClass::analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
37003700
{
3701-
bool foundErrors = false;
3702-
(void)ctu; // This argument is unused
3703-
(void)settings; // This argument is unused
3704-
3705-
std::unordered_map<std::string, MyFileInfo::NameLoc> all;
3701+
(void)ctu;
3702+
(void)settings;
37063703

37073704
CheckClass dummy(nullptr, &settings, &errorLogger);
37083705
dummy.
37093706
logChecker("CheckClass::analyseWholeProgram");
37103707

3708+
if (fileInfo.empty())
3709+
return false;
3710+
3711+
bool foundErrors = false;
3712+
3713+
std::unordered_map<std::string, MyFileInfo::NameLoc> all;
3714+
37113715
for (const Check::FileInfo* fi1 : fileInfo) {
37123716
const auto *fi = dynamic_cast<const MyFileInfo*>(fi1);
37133717
if (!fi)

lib/checkclass.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ class CPPCHECKLIB CheckClass : public Check {
138138
Check::FileInfo * loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement) const override;
139139

140140
/** @brief Analyse all file infos for all TU */
141-
bool analyseWholeProgram(const CTU::FileInfo *ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger) override;
141+
bool analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger) override;
142142

143143
const SymbolDatabase* mSymbolDatabase{};
144144

lib/checknullpointer.cpp

+8-6
Original file line numberDiff line numberDiff line change
@@ -634,18 +634,20 @@ Check::FileInfo * CheckNullPointer::loadFileInfoFromXml(const tinyxml2::XMLEleme
634634
return fileInfo;
635635
}
636636

637-
bool CheckNullPointer::analyseWholeProgram(const CTU::FileInfo *ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
637+
bool CheckNullPointer::analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
638638
{
639-
if (!ctu)
640-
return false;
641-
bool foundErrors = false;
642-
(void)settings; // This argument is unused
639+
(void)settings;
643640

644641
CheckNullPointer dummy(nullptr, &settings, &errorLogger);
645642
dummy.
646643
logChecker("CheckNullPointer::analyseWholeProgram"); // unusedfunctions
647644

648-
const std::map<std::string, std::list<const CTU::FileInfo::CallBase *>> callsMap = ctu->getCallsMap();
645+
if (fileInfo.empty())
646+
return false;
647+
648+
const std::map<std::string, std::list<const CTU::FileInfo::CallBase *>> callsMap = ctu.getCallsMap();
649+
650+
bool foundErrors = false;
649651

650652
for (const Check::FileInfo* fi1 : fileInfo) {
651653
const auto *fi = dynamic_cast<const MyFileInfo*>(fi1);

lib/checknullpointer.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ class CPPCHECKLIB CheckNullPointer : public Check {
9898
Check::FileInfo * loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement) const override;
9999

100100
/** @brief Analyse all file infos for all TU */
101-
bool analyseWholeProgram(const CTU::FileInfo *ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger) override;
101+
bool analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger) override;
102102

103103
/** Get error messages. Used by --errorlist */
104104
void getErrorMessages(ErrorLogger *errorLogger, const Settings *settings) const override;

lib/checkuninitvar.cpp

+9-5
Original file line numberDiff line numberDiff line change
@@ -1742,14 +1742,18 @@ Check::FileInfo * CheckUninitVar::loadFileInfoFromXml(const tinyxml2::XMLElement
17421742
return fileInfo;
17431743
}
17441744

1745-
bool CheckUninitVar::analyseWholeProgram(const CTU::FileInfo *ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
1745+
bool CheckUninitVar::analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
17461746
{
1747-
if (!ctu)
1747+
(void)settings;
1748+
1749+
// TODO: logChecker
1750+
1751+
if (fileInfo.empty())
17481752
return false;
1749-
bool foundErrors = false;
1750-
(void)settings; // This argument is unused
17511753

1752-
const std::map<std::string, std::list<const CTU::FileInfo::CallBase *>> callsMap = ctu->getCallsMap();
1754+
const std::map<std::string, std::list<const CTU::FileInfo::CallBase *>> callsMap = ctu.getCallsMap();
1755+
1756+
bool foundErrors = false;
17531757

17541758
for (const Check::FileInfo* fi1 : fileInfo) {
17551759
const auto *fi = dynamic_cast<const MyFileInfo*>(fi1);

lib/checkuninitvar.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class CPPCHECKLIB CheckUninitVar : public Check {
101101
Check::FileInfo * loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement) const override;
102102

103103
/** @brief Analyse all file infos for all TU */
104-
bool analyseWholeProgram(const CTU::FileInfo *ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger) override;
104+
bool analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger) override;
105105

106106
void uninitvarError(const Token* tok, const ValueFlow::Value& v);
107107
void uninitdataError(const Token *tok, const std::string &varname);

lib/cppcheck.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1991,7 +1991,7 @@ bool CppCheck::analyseWholeProgram()
19911991

19921992
// cppcheck-suppress shadowFunction - TODO: fix this
19931993
for (Check *check : Check::instances())
1994-
errors |= check->analyseWholeProgram(&ctu, mFileInfo, mSettings, mErrorLogger); // TODO: ctu
1994+
errors |= check->analyseWholeProgram(ctu, mFileInfo, mSettings, mErrorLogger); // TODO: ctu
19951995

19961996
if (mUnusedFunctionsCheck)
19971997
errors |= mUnusedFunctionsCheck->check(mSettings, mErrorLogger);
@@ -2054,7 +2054,7 @@ unsigned int CppCheck::analyseWholeProgram(const std::string &buildDir, const st
20542054
// Analyse the tokens
20552055
// cppcheck-suppress shadowFunction - TODO: fix this
20562056
for (Check *check : Check::instances())
2057-
check->analyseWholeProgram(&ctuFileInfo, fileInfoList, mSettings, mErrorLogger);
2057+
check->analyseWholeProgram(ctuFileInfo, fileInfoList, mSettings, mErrorLogger);
20582058

20592059
if (mUnusedFunctionsCheck)
20602060
mUnusedFunctionsCheck->check(mSettings, mErrorLogger);

test/testbufferoverrun.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -5236,7 +5236,7 @@ class TestBufferOverrun : public TestFixture {
52365236
std::list<Check::FileInfo*> fileInfo;
52375237
Check& c = getCheck<CheckBufferOverrun>();
52385238
fileInfo.push_back(c.getFileInfo(tokenizer, settings0));
5239-
c.analyseWholeProgram(ctu, fileInfo, settings0, *this); // TODO: check result
5239+
c.analyseWholeProgram(*ctu, fileInfo, settings0, *this); // TODO: check result
52405240
while (!fileInfo.empty()) {
52415241
delete fileInfo.back();
52425242
fileInfo.pop_back();

test/testclass.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
#include "check.h"
2020
#include "checkclass.h"
21+
#include "ctu.h"
2122
#include "errortypes.h"
2223
#include "fixture.h"
2324
#include "helpers.h"
@@ -9030,7 +9031,8 @@ class TestClass : public TestFixture {
90309031
}
90319032

90329033
// Check code..
9033-
check.analyseWholeProgram(nullptr, fileInfo, settingsDefault, *this); // TODO: check result
9034+
const CTU::FileInfo ctu;
9035+
check.analyseWholeProgram(ctu, fileInfo, settingsDefault, *this); // TODO: check result
90349036

90359037
while (!fileInfo.empty()) {
90369038
delete fileInfo.back();

test/testnullpointer.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -4566,7 +4566,7 @@ class TestNullPointer : public TestFixture {
45664566
std::list<Check::FileInfo*> fileInfo;
45674567
Check& c = getCheck<CheckNullPointer>();
45684568
fileInfo.push_back(c.getFileInfo(tokenizer, settings));
4569-
c.analyseWholeProgram(ctu, fileInfo, settings, *this); // TODO: check result
4569+
c.analyseWholeProgram(*ctu, fileInfo, settings, *this); // TODO: check result
45704570
while (!fileInfo.empty()) {
45714571
delete fileInfo.back();
45724572
fileInfo.pop_back();

test/testuninitvar.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -7880,7 +7880,7 @@ class TestUninitVar : public TestFixture {
78807880
std::list<Check::FileInfo*> fileInfo;
78817881
Check& c = getCheck<CheckUninitVar>();
78827882
fileInfo.push_back(c.getFileInfo(tokenizer, settings));
7883-
c.analyseWholeProgram(ctu, fileInfo, settings, *this); // TODO: check result
7883+
c.analyseWholeProgram(*ctu, fileInfo, settings, *this); // TODO: check result
78847884
while (!fileInfo.empty()) {
78857885
delete fileInfo.back();
78867886
fileInfo.pop_back();

0 commit comments

Comments
 (0)