Skip to content

Commit

Permalink
small Check::analyseWholeProgram() related cleanup (#7203)
Browse files Browse the repository at this point in the history
  • Loading branch information
firewave authored Jan 11, 2025
1 parent 11aef93 commit b901fbe
Show file tree
Hide file tree
Showing 15 changed files with 48 additions and 39 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -734,7 +734,7 @@ test/testcheck.o: test/testcheck.cpp lib/addoninfo.h lib/check.h lib/color.h lib
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
$(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testclangimport.cpp

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
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
$(CXX) ${INCLUDE_FOR_TEST} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ test/testclass.cpp

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
Expand Down
6 changes: 1 addition & 5 deletions lib/check.h
Original file line number Diff line number Diff line change
Expand Up @@ -120,11 +120,7 @@ class CPPCHECKLIB Check {
}

// Return true if an error is reported.
virtual bool analyseWholeProgram(const CTU::FileInfo *ctu, const std::list<FileInfo*> &fileInfo, const Settings& /*settings*/, ErrorLogger & /*errorLogger*/) {
(void)ctu;
(void)fileInfo;
//(void)settings;
//(void)errorLogger;
virtual bool analyseWholeProgram(const CTU::FileInfo& /*ctu*/, const std::list<FileInfo*>& /*fileInfo*/, const Settings& /*settings*/, ErrorLogger & /*errorLogger*/) {
return false;
}

Expand Down
13 changes: 7 additions & 6 deletions lib/checkbufferoverrun.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -982,17 +982,18 @@ Check::FileInfo * CheckBufferOverrun::loadFileInfoFromXml(const tinyxml2::XMLEle
}

/** @brief Analyse all file infos for all TU */
bool CheckBufferOverrun::analyseWholeProgram(const CTU::FileInfo *ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
bool CheckBufferOverrun::analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
{
if (!ctu)
return false;
bool foundErrors = false;

CheckBufferOverrun dummy(nullptr, &settings, &errorLogger);
dummy.
logChecker("CheckBufferOverrun::analyseWholeProgram");

const std::map<std::string, std::list<const CTU::FileInfo::CallBase *>> callsMap = ctu->getCallsMap();
if (fileInfo.empty())
return false;

const std::map<std::string, std::list<const CTU::FileInfo::CallBase *>> callsMap = ctu.getCallsMap();

bool foundErrors = false;

for (const Check::FileInfo* fi1 : fileInfo) {
const auto *fi = dynamic_cast<const MyFileInfo*>(fi1);
Expand Down
2 changes: 1 addition & 1 deletion lib/checkbufferoverrun.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ class CPPCHECKLIB CheckBufferOverrun : public Check {
Check::FileInfo *getFileInfo(const Tokenizer &tokenizer, const Settings &settings) const override;

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

void arrayIndex();
void arrayIndexError(const Token* tok,
Expand Down
16 changes: 10 additions & 6 deletions lib/checkclass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3696,18 +3696,22 @@ Check::FileInfo * CheckClass::loadFileInfoFromXml(const tinyxml2::XMLElement *xm
return fileInfo;
}

bool CheckClass::analyseWholeProgram(const CTU::FileInfo *ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
bool CheckClass::analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
{
bool foundErrors = false;
(void)ctu; // This argument is unused
(void)settings; // This argument is unused

std::unordered_map<std::string, MyFileInfo::NameLoc> all;
(void)ctu;
(void)settings;

CheckClass dummy(nullptr, &settings, &errorLogger);
dummy.
logChecker("CheckClass::analyseWholeProgram");

if (fileInfo.empty())
return false;

bool foundErrors = false;

std::unordered_map<std::string, MyFileInfo::NameLoc> all;

for (const Check::FileInfo* fi1 : fileInfo) {
const auto *fi = dynamic_cast<const MyFileInfo*>(fi1);
if (!fi)
Expand Down
2 changes: 1 addition & 1 deletion lib/checkclass.h
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ class CPPCHECKLIB CheckClass : public Check {
Check::FileInfo * loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement) const override;

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

const SymbolDatabase* mSymbolDatabase{};

Expand Down
14 changes: 8 additions & 6 deletions lib/checknullpointer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -634,18 +634,20 @@ Check::FileInfo * CheckNullPointer::loadFileInfoFromXml(const tinyxml2::XMLEleme
return fileInfo;
}

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

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

const std::map<std::string, std::list<const CTU::FileInfo::CallBase *>> callsMap = ctu->getCallsMap();
if (fileInfo.empty())
return false;

const std::map<std::string, std::list<const CTU::FileInfo::CallBase *>> callsMap = ctu.getCallsMap();

bool foundErrors = false;

for (const Check::FileInfo* fi1 : fileInfo) {
const auto *fi = dynamic_cast<const MyFileInfo*>(fi1);
Expand Down
2 changes: 1 addition & 1 deletion lib/checknullpointer.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ class CPPCHECKLIB CheckNullPointer : public Check {
Check::FileInfo * loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement) const override;

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

/** Get error messages. Used by --errorlist */
void getErrorMessages(ErrorLogger *errorLogger, const Settings *settings) const override;
Expand Down
14 changes: 9 additions & 5 deletions lib/checkuninitvar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1742,14 +1742,18 @@ Check::FileInfo * CheckUninitVar::loadFileInfoFromXml(const tinyxml2::XMLElement
return fileInfo;
}

bool CheckUninitVar::analyseWholeProgram(const CTU::FileInfo *ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
bool CheckUninitVar::analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
{
if (!ctu)
(void)settings;

// TODO: logChecker

if (fileInfo.empty())
return false;
bool foundErrors = false;
(void)settings; // This argument is unused

const std::map<std::string, std::list<const CTU::FileInfo::CallBase *>> callsMap = ctu->getCallsMap();
const std::map<std::string, std::list<const CTU::FileInfo::CallBase *>> callsMap = ctu.getCallsMap();

bool foundErrors = false;

for (const Check::FileInfo* fi1 : fileInfo) {
const auto *fi = dynamic_cast<const MyFileInfo*>(fi1);
Expand Down
2 changes: 1 addition & 1 deletion lib/checkuninitvar.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ class CPPCHECKLIB CheckUninitVar : public Check {
Check::FileInfo * loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement) const override;

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

void uninitvarError(const Token* tok, const ValueFlow::Value& v);
void uninitdataError(const Token *tok, const std::string &varname);
Expand Down
4 changes: 2 additions & 2 deletions lib/cppcheck.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1991,7 +1991,7 @@ bool CppCheck::analyseWholeProgram()

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

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

if (mUnusedFunctionsCheck)
mUnusedFunctionsCheck->check(mSettings, mErrorLogger);
Expand Down
2 changes: 1 addition & 1 deletion test/testbufferoverrun.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5236,7 +5236,7 @@ class TestBufferOverrun : public TestFixture {
std::list<Check::FileInfo*> fileInfo;
Check& c = getCheck<CheckBufferOverrun>();
fileInfo.push_back(c.getFileInfo(tokenizer, settings0));
c.analyseWholeProgram(ctu, fileInfo, settings0, *this); // TODO: check result
c.analyseWholeProgram(*ctu, fileInfo, settings0, *this); // TODO: check result
while (!fileInfo.empty()) {
delete fileInfo.back();
fileInfo.pop_back();
Expand Down
4 changes: 3 additions & 1 deletion test/testclass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

#include "check.h"
#include "checkclass.h"
#include "ctu.h"
#include "errortypes.h"
#include "fixture.h"
#include "helpers.h"
Expand Down Expand Up @@ -9030,7 +9031,8 @@ class TestClass : public TestFixture {
}

// Check code..
check.analyseWholeProgram(nullptr, fileInfo, settingsDefault, *this); // TODO: check result
const CTU::FileInfo ctu;
check.analyseWholeProgram(ctu, fileInfo, settingsDefault, *this); // TODO: check result

while (!fileInfo.empty()) {
delete fileInfo.back();
Expand Down
2 changes: 1 addition & 1 deletion test/testnullpointer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4566,7 +4566,7 @@ class TestNullPointer : public TestFixture {
std::list<Check::FileInfo*> fileInfo;
Check& c = getCheck<CheckNullPointer>();
fileInfo.push_back(c.getFileInfo(tokenizer, settings));
c.analyseWholeProgram(ctu, fileInfo, settings, *this); // TODO: check result
c.analyseWholeProgram(*ctu, fileInfo, settings, *this); // TODO: check result
while (!fileInfo.empty()) {
delete fileInfo.back();
fileInfo.pop_back();
Expand Down
2 changes: 1 addition & 1 deletion test/testuninitvar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7880,7 +7880,7 @@ class TestUninitVar : public TestFixture {
std::list<Check::FileInfo*> fileInfo;
Check& c = getCheck<CheckUninitVar>();
fileInfo.push_back(c.getFileInfo(tokenizer, settings));
c.analyseWholeProgram(ctu, fileInfo, settings, *this); // TODO: check result
c.analyseWholeProgram(*ctu, fileInfo, settings, *this); // TODO: check result
while (!fileInfo.empty()) {
delete fileInfo.back();
fileInfo.pop_back();
Expand Down

0 comments on commit b901fbe

Please sign in to comment.