Skip to content

Commit 21ea669

Browse files
authored
some Check::FileInfo/CTU::FileInfo usage cleanups (#8612)
1 parent 01e2254 commit 21ea669

17 files changed

Lines changed: 56 additions & 52 deletions

lib/check.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,25 +78,24 @@ class CPPCHECKLIB Check {
7878
/** Base class used for whole-program analysis */
7979
class CPPCHECKLIB FileInfo {
8080
public:
81-
explicit FileInfo(std::string f0 = {}) : file0(std::move(f0)) {}
81+
explicit FileInfo(std::string f0) : file0(std::move(f0)) {}
8282
virtual ~FileInfo() = default;
83-
virtual std::string toString() const {
84-
return std::string();
85-
}
83+
virtual std::string toString() const = 0;
8684
std::string file0;
8785
};
8886

89-
virtual FileInfo * getFileInfo(const Tokenizer& /*tokenizer*/, const Settings& /*settings*/, const std::string& /*currentConfig*/) const {
87+
virtual const FileInfo * getFileInfo(const Tokenizer& /*tokenizer*/, const Settings& /*settings*/, const std::string& /*currentConfig*/) const {
9088
return nullptr;
9189
}
9290

93-
virtual FileInfo * loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement) const {
91+
virtual const FileInfo * loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement, const std::string& file0) const {
9492
(void)xmlElement;
93+
(void)file0;
9594
return nullptr;
9695
}
9796

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

lib/checkbufferoverrun.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -900,6 +900,8 @@ namespace
900900
/** data for multifile checking */
901901
class MyFileInfo : public Check::FileInfo {
902902
public:
903+
explicit MyFileInfo(std::string f0) : Check::FileInfo(std::move(f0)) {}
904+
903905
using Check::FileInfo::FileInfo;
904906
/** unsafe array index usage */
905907
std::list<CTU::FileInfo::UnsafeUsage> unsafeArrayIndex;
@@ -952,7 +954,7 @@ bool CheckBufferOverrunImpl::isCtuUnsafePointerArith(const Settings &settings, c
952954
}
953955

954956
/** @brief Parse current TU and extract file info */
955-
Check::FileInfo *CheckBufferOverrun::getFileInfo(const Tokenizer &tokenizer, const Settings &settings, const std::string& /*currentConfig*/) const
957+
const Check::FileInfo *CheckBufferOverrun::getFileInfo(const Tokenizer &tokenizer, const Settings &settings, const std::string& /*currentConfig*/) const
956958
{
957959
const std::list<CTU::FileInfo::UnsafeUsage> &unsafeArrayIndex = CTU::getUnsafeUsage(tokenizer, settings, CheckBufferOverrunImpl::isCtuUnsafeArrayIndex);
958960
const std::list<CTU::FileInfo::UnsafeUsage> &unsafePointerArith = CTU::getUnsafeUsage(tokenizer, settings, CheckBufferOverrunImpl::isCtuUnsafePointerArith);
@@ -965,12 +967,12 @@ Check::FileInfo *CheckBufferOverrun::getFileInfo(const Tokenizer &tokenizer, con
965967
return fileInfo;
966968
}
967969

968-
Check::FileInfo * CheckBufferOverrun::loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement) const
970+
const Check::FileInfo * CheckBufferOverrun::loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement, const std::string& file0) const
969971
{
970972
const std::string arrayIndex("array-index");
971973
const std::string pointerArith("pointer-arith");
972974

973-
auto *fileInfo = new MyFileInfo;
975+
auto *fileInfo = new MyFileInfo(file0);
974976
for (const tinyxml2::XMLElement *e = xmlElement->FirstChildElement(); e; e = e->NextSiblingElement()) {
975977
const char* name = e->Name();
976978
if (name == arrayIndex)
@@ -988,7 +990,7 @@ Check::FileInfo * CheckBufferOverrun::loadFileInfoFromXml(const tinyxml2::XMLEle
988990
}
989991

990992
/** @brief Analyse all file infos for all TU */
991-
bool CheckBufferOverrun::analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
993+
bool CheckBufferOverrun::analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<const Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
992994
{
993995
CheckBufferOverrunImpl dummy(nullptr, settings, errorLogger);
994996
dummy.

lib/checkbufferoverrun.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,14 @@ class CPPCHECKLIB CheckBufferOverrun : public Check {
6767
void runChecks(const Tokenizer &tokenizer, ErrorLogger& errorLogger) override;
6868

6969
/** @brief Parse current TU and extract file info */
70-
Check::FileInfo *getFileInfo(const Tokenizer &tokenizer, const Settings &settings, const std::string& /*currentConfig*/) const override;
70+
const Check::FileInfo *getFileInfo(const Tokenizer &tokenizer, const Settings &settings, const std::string& /*currentConfig*/) const override;
7171

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

7575
void getErrorMessages(ErrorLogger& errorLogger, const Settings &settings) const override;
7676

77-
Check::FileInfo * loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement) const override;
77+
const Check::FileInfo * loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement, const std::string& file0) const override;
7878

7979
std::string classInfo() const override {
8080
return "Out of bounds checking:\n"

lib/checkclass.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3693,6 +3693,8 @@ namespace
36933693
/* multifile checking; one definition rule violations */
36943694
class MyFileInfo : public Check::FileInfo {
36953695
public:
3696+
explicit MyFileInfo(std::string f0) : Check::FileInfo(std::move(f0)) {}
3697+
36963698
using Check::FileInfo::FileInfo;
36973699
struct NameLoc {
36983700
std::string className;
@@ -3728,7 +3730,7 @@ namespace
37283730
};
37293731
}
37303732

3731-
Check::FileInfo *CheckClass::getFileInfo(const Tokenizer &tokenizer, const Settings& /*settings*/, const std::string& currentConfig) const
3733+
const Check::FileInfo *CheckClass::getFileInfo(const Tokenizer &tokenizer, const Settings& /*settings*/, const std::string& currentConfig) const
37323734
{
37333735
if (!tokenizer.isCPP())
37343736
return nullptr;
@@ -3798,9 +3800,9 @@ Check::FileInfo *CheckClass::getFileInfo(const Tokenizer &tokenizer, const Setti
37983800
return fileInfo;
37993801
}
38003802

3801-
Check::FileInfo * CheckClass::loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement) const
3803+
const Check::FileInfo * CheckClass::loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement, const std::string& file0) const
38023804
{
3803-
auto *fileInfo = new MyFileInfo;
3805+
auto *fileInfo = new MyFileInfo(file0);
38043806
for (const tinyxml2::XMLElement *e = xmlElement->FirstChildElement(); e; e = e->NextSiblingElement()) {
38053807
if (std::strcmp(e->Name(), "class") != 0)
38063808
continue;
@@ -3828,7 +3830,7 @@ Check::FileInfo * CheckClass::loadFileInfoFromXml(const tinyxml2::XMLElement *xm
38283830
return fileInfo;
38293831
}
38303832

3831-
bool CheckClass::analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
3833+
bool CheckClass::analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<const Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
38323834
{
38333835
(void)ctu;
38343836
(void)settings;

lib/checkclass.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,12 @@ class CPPCHECKLIB CheckClass : public Check {
6161
void runChecks(const Tokenizer &tokenizer, ErrorLogger& errorLogger) override;
6262

6363
/** @brief Parse current TU and extract file info */
64-
Check::FileInfo *getFileInfo(const Tokenizer &tokenizer, const Settings& /*settings*/, const std::string& currentConfig) const override;
64+
const Check::FileInfo *getFileInfo(const Tokenizer &tokenizer, const Settings& /*settings*/, const std::string& currentConfig) const override;
6565

66-
Check::FileInfo * loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement) const override;
66+
const Check::FileInfo * loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement, const std::string& file0) const override;
6767

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

7171
void getErrorMessages(ErrorLogger& errorLogger, const Settings &settings) const override;
7272

lib/checknullpointer.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ namespace
604604
};
605605
}
606606

607-
Check::FileInfo *CheckNullPointer::getFileInfo(const Tokenizer &tokenizer, const Settings &settings, const std::string& currentConfig) const
607+
const Check::FileInfo *CheckNullPointer::getFileInfo(const Tokenizer &tokenizer, const Settings &settings, const std::string& currentConfig) const
608608
{
609609
(void)currentConfig;
610610

@@ -617,18 +617,18 @@ Check::FileInfo *CheckNullPointer::getFileInfo(const Tokenizer &tokenizer, const
617617
return fileInfo;
618618
}
619619

620-
Check::FileInfo * CheckNullPointer::loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement) const
620+
const Check::FileInfo * CheckNullPointer::loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement, const std::string& file0) const
621621
{
622622
const std::list<CTU::FileInfo::UnsafeUsage> &unsafeUsage = CTU::loadUnsafeUsageListFromXml(xmlElement);
623623
if (unsafeUsage.empty())
624624
return nullptr;
625625

626-
auto *fileInfo = new MyFileInfo;
626+
auto *fileInfo = new MyFileInfo(file0);
627627
fileInfo->unsafeUsage = unsafeUsage;
628628
return fileInfo;
629629
}
630630

631-
bool CheckNullPointer::analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
631+
bool CheckNullPointer::analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<const Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
632632
{
633633
(void)settings;
634634

lib/checknullpointer.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,12 @@ class CPPCHECKLIB CheckNullPointer : public Check {
5959
void runChecks(const Tokenizer &tokenizer, ErrorLogger& errorLogger) override;
6060

6161
/** @brief Parse current TU and extract file info */
62-
Check::FileInfo *getFileInfo(const Tokenizer &tokenizer, const Settings &settings, const std::string& currentConfig) const override;
62+
const Check::FileInfo *getFileInfo(const Tokenizer &tokenizer, const Settings &settings, const std::string& currentConfig) const override;
6363

64-
Check::FileInfo * loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement) const override;
64+
const Check::FileInfo * loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement, const std::string& file0) const override;
6565

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

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

lib/checkuninitvar.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1727,7 +1727,7 @@ static bool isVariableUsage(const Settings &settings, const Token *argtok, CTU::
17271727
return isVariableUsage(settings, argtok, &value->value);
17281728
}
17291729

1730-
Check::FileInfo *CheckUninitVar::getFileInfo(const Tokenizer &tokenizer, const Settings &settings, const std::string& /*currentConfig*/) const
1730+
const Check::FileInfo *CheckUninitVar::getFileInfo(const Tokenizer &tokenizer, const Settings &settings, const std::string& /*currentConfig*/) const
17311731
{
17321732
const std::list<CTU::FileInfo::UnsafeUsage> &unsafeUsage = CTU::getUnsafeUsage(tokenizer, settings, ::isVariableUsage);
17331733
if (unsafeUsage.empty())
@@ -1738,18 +1738,18 @@ Check::FileInfo *CheckUninitVar::getFileInfo(const Tokenizer &tokenizer, const S
17381738
return fileInfo;
17391739
}
17401740

1741-
Check::FileInfo * CheckUninitVar::loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement) const
1741+
const Check::FileInfo * CheckUninitVar::loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement, const std::string& file0) const
17421742
{
17431743
const std::list<CTU::FileInfo::UnsafeUsage> &unsafeUsage = CTU::loadUnsafeUsageListFromXml(xmlElement);
17441744
if (unsafeUsage.empty())
17451745
return nullptr;
17461746

1747-
auto *fileInfo = new MyFileInfo;
1747+
auto *fileInfo = new MyFileInfo(file0);
17481748
fileInfo->unsafeUsage = unsafeUsage;
17491749
return fileInfo;
17501750
}
17511751

1752-
bool CheckUninitVar::analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
1752+
bool CheckUninitVar::analyseWholeProgram(const CTU::FileInfo &ctu, const std::list<const Check::FileInfo*> &fileInfo, const Settings& settings, ErrorLogger &errorLogger)
17531753
{
17541754
(void)settings;
17551755

lib/checkuninitvar.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,12 @@ class CPPCHECKLIB CheckUninitVar : public Check {
6969
void runChecks(const Tokenizer &tokenizer, ErrorLogger& errorLogger) override;
7070

7171
/** @brief Parse current TU and extract file info */
72-
Check::FileInfo *getFileInfo(const Tokenizer &tokenizer, const Settings &settings, const std::string& /*currentConfig*/) const override;
72+
const Check::FileInfo *getFileInfo(const Tokenizer &tokenizer, const Settings &settings, const std::string& /*currentConfig*/) const override;
7373

74-
Check::FileInfo * loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement) const override;
74+
const Check::FileInfo * loadFileInfoFromXml(const tinyxml2::XMLElement *xmlElement, const std::string& file0) const override;
7575

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

7979
void getErrorMessages(ErrorLogger& errorLogger, const Settings& settings) const override;
8080

lib/cppcheck.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1379,7 +1379,7 @@ void CppCheck::checkNormalTokens(const Tokenizer &tokenizer, AnalyzerInformation
13791379
if (mSettings.useSingleJob() || analyzerInformation) {
13801380
// Analyse the tokens..
13811381
{
1382-
CTU::FileInfo * const fi1 = CTU::getFileInfo(tokenizer);
1382+
const CTU::FileInfo * const fi1 = CTU::getFileInfo(tokenizer);
13831383
if (analyzerInformation)
13841384
analyzerInformation->setFileInfo("ctu", fi1->toString());
13851385
if (mSettings.useSingleJob())
@@ -1390,7 +1390,7 @@ void CppCheck::checkNormalTokens(const Tokenizer &tokenizer, AnalyzerInformation
13901390

13911391
if (!doUnusedFunctionOnly) {
13921392
for (const Check * const c : CheckInstances::get()) {
1393-
if (Check::FileInfo * const fi = c->getFileInfo(tokenizer, mSettings, currentConfig)) {
1393+
if (const Check::FileInfo * const fi = c->getFileInfo(tokenizer, mSettings, currentConfig)) {
13941394
if (analyzerInformation)
13951395
analyzerInformation->setFileInfo(c->name(), fi->toString());
13961396
if (mSettings.useSingleJob())
@@ -1855,7 +1855,7 @@ unsigned int CppCheck::analyseWholeProgram(const std::string &buildDir, const st
18551855

18561856
executeAddonsWholeProgram(files, fileSettings, ctuInfo);
18571857

1858-
std::list<Check::FileInfo*> fileInfoList;
1858+
std::list<const Check::FileInfo*> fileInfoList;
18591859
CTU::FileInfo ctuFileInfo;
18601860

18611861
const auto handler = [&fileInfoList, &ctuFileInfo](const char* checkattr, const tinyxml2::XMLElement* e, const AnalyzerInformation::Info& filesTxtInfo) {
@@ -1865,8 +1865,7 @@ unsigned int CppCheck::analyseWholeProgram(const std::string &buildDir, const st
18651865
}
18661866
for (const Check *check : CheckInstances::get()) {
18671867
if (checkattr == check->name()) {
1868-
if (Check::FileInfo* fi = check->loadFileInfoFromXml(e)) {
1869-
fi->file0 = filesTxtInfo.sourceFile;
1868+
if (const Check::FileInfo* fi = check->loadFileInfoFromXml(e, filesTxtInfo.sourceFile)) {
18701869
fileInfoList.push_back(fi);
18711870
}
18721871
}
@@ -1884,7 +1883,7 @@ unsigned int CppCheck::analyseWholeProgram(const std::string &buildDir, const st
18841883
c->analyseWholeProgram(ctuFileInfo, fileInfoList, mSettings, mErrorLogger);
18851884
}
18861885

1887-
for (Check::FileInfo *fi : fileInfoList)
1886+
for (const Check::FileInfo *fi : fileInfoList)
18881887
delete fi;
18891888

18901889
return mLogger->exitcode();

0 commit comments

Comments
 (0)