enabled functionConst and functionStatic in selfcheck (#3862)

* fixed functionConst findings and enabled it in selfcheck

* fixed functionStatic findings and enabled it in selfcheck

* .travis_suppressions: adjusted comment

* testimportproject.cpp: added missing asserts
This commit is contained in:
Oliver Stöneberg 2022-03-02 07:46:47 +01:00 committed by GitHub
parent 8e8e6b1170
commit 4a63af02ed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 41 additions and 41 deletions

View File

@ -1,8 +1,6 @@
unusedPrivateFunction:test/testbufferoverrun.cpp
unusedPrivateFunction:test/testcmdlineparser.cpp
shadowFunction
functionConst
functionStatic
bitwiseOnBoolean
# temporary suppressions - fix the warnings!
@ -13,7 +11,7 @@ symbolDatabaseWarning:gui/temp/moc_*.cpp
simplifyUsing:gui/temp/moc_*.cpp
symbolDatabaseWarning:tools/triage/moc_*.cpp
# debug suppressions
# --debug-warnings suppressions
valueFlowBailout
valueFlowBailoutIncompleteVar
autoNoType

View File

@ -302,7 +302,7 @@ static bool isOperatorFunction(const std::string & funcName)
bool CheckUnusedFunctions::check(ErrorLogger * const errorLogger, const Settings& settings)
bool CheckUnusedFunctions::check(ErrorLogger * const errorLogger, const Settings& settings) const
{
bool errors = false;
for (std::map<std::string, FunctionUsage>::const_iterator it = mFunctions.begin(); it != mFunctions.end(); ++it) {

View File

@ -63,7 +63,7 @@ public:
void parseTokens(const Tokenizer &tokenizer, const char FileName[], const Settings *settings);
// Return true if an error is reported.
bool check(ErrorLogger * const errorLogger, const Settings& settings);
bool check(ErrorLogger * const errorLogger, const Settings& settings) const;
/** @brief Parse current TU and extract file info */
Check::FileInfo *getFileInfo(const Tokenizer *tokenizer, const Settings *settings) const override;

View File

@ -312,7 +312,7 @@ struct ForwardTraversal {
return Token::findsimplematch(endBlock->link(), "goto", endBlock);
}
bool hasJump(const Token* endBlock) {
static bool hasJump(const Token* endBlock) {
return Token::findmatch(endBlock->link(), "goto|break", endBlock);
}

View File

@ -115,7 +115,7 @@ private:
bool importVcxproj(const std::string &filename, std::map<std::string, std::string, cppcheck::stricmp> &variables, const std::string &additionalIncludeDirectories, const std::vector<std::string> &fileFilters);
bool importBcb6Prj(const std::string &projectFilename);
void printError(const std::string &message);
static void printError(const std::string &message);
void setRelativePaths(const std::string &filename);

View File

@ -48,7 +48,7 @@ struct PathAnalysis {
void forward(const std::function<Progress(const Info&)>& f) const;
Info forwardFind(std::function<bool(const Info&)> pred) {
Info forwardFind(std::function<bool(const Info&)> pred) const {
Info result{};
forward([&](const Info& info) {
if (pred(info)) {

View File

@ -1156,7 +1156,7 @@ void SymbolDatabase::createSymbolDatabaseSetTypePointers()
const Type *type = findVariableType(tok->scope(), tok);
if (type)
const_cast<Token *>(tok)->type(type);
const_cast<Token *>(tok)->type(type); // TODO: avoid const_cast
}
}
@ -1428,7 +1428,7 @@ void SymbolDatabase::createSymbolDatabaseIncompleteVars()
continue;
if (mSettings->standards.cpp >= Standards::CPP20 && cpp20keywords.count(tok->str()) > 0)
continue;
const_cast<Token *>(tok)->isIncompleteVar(true);
const_cast<Token *>(tok)->isIncompleteVar(true); // TODO: avoid const_cast
}
}

View File

@ -1450,10 +1450,12 @@ private:
void createSymbolDatabaseSetScopePointers();
void createSymbolDatabaseSetFunctionPointers(bool firstPass);
void createSymbolDatabaseSetVariablePointers();
// cppcheck-suppress functionConst
void createSymbolDatabaseSetTypePointers();
void createSymbolDatabaseSetSmartPointerType();
void createSymbolDatabaseEnums();
void createSymbolDatabaseEscapeFunctions();
// cppcheck-suppress functionConst
void createSymbolDatabaseIncompleteVars();
void addClassFunction(Scope **scope, const Token **tok, const Token *argStart);

View File

@ -1824,7 +1824,7 @@ class SelectValueFromVarIdMapRange {
return mIt->second;
}
pointer operator->() {
pointer operator->() const {
return &mIt->second;
}

View File

@ -117,7 +117,7 @@ private:
}])";
std::istringstream istr(json);
TestImporter importer;
importer.importCompileCommands(istr);
ASSERT_EQUALS(true, importer.importCompileCommands(istr));
ASSERT_EQUALS(1, importer.fileSettings.size());
ASSERT_EQUALS("TEST1=1;TEST2=2", importer.fileSettings.begin()->defines);
}
@ -132,7 +132,7 @@ private:
}])";
std::istringstream istr(json);
TestImporter importer;
importer.importCompileCommands(istr);
ASSERT_EQUALS(true, importer.importCompileCommands(istr));
ASSERT_EQUALS(1, importer.fileSettings.size());
ASSERT_EQUALS("C:/bar.c", importer.fileSettings.begin()->filename);
#else
@ -143,7 +143,7 @@ private:
}])";
std::istringstream istr(json);
TestImporter importer;
importer.importCompileCommands(istr);
ASSERT_EQUALS(true, importer.importCompileCommands(istr));
ASSERT_EQUALS(1, importer.fileSettings.size());
ASSERT_EQUALS("/bar.c", importer.fileSettings.begin()->filename);
#endif
@ -157,7 +157,7 @@ private:
}])";
std::istringstream istr(json);
TestImporter importer;
importer.importCompileCommands(istr);
ASSERT_EQUALS(true, importer.importCompileCommands(istr));
ASSERT_EQUALS(1, importer.fileSettings.size());
ASSERT_EQUALS("/tmp/src.c", importer.fileSettings.begin()->filename);
}
@ -170,7 +170,7 @@ private:
}])";
std::istringstream istr(json);
TestImporter importer;
importer.importCompileCommands(istr);
ASSERT_EQUALS(true, importer.importCompileCommands(istr));
ASSERT_EQUALS(0, importer.fileSettings.size());
}
@ -188,7 +188,7 @@ private:
}])";
std::istringstream istr(json);
TestImporter importer;
importer.importCompileCommands(istr);
ASSERT_EQUALS(true, importer.importCompileCommands(istr));
ASSERT_EQUALS(2, importer.fileSettings.size());
ASSERT_EQUALS("C:/Users/dan/git/test-cppcheck/mylib/src/", importer.fileSettings.begin()->includePaths.front());
}
@ -207,7 +207,7 @@ private:
}])";
std::istringstream istr(json);
TestImporter importer;
importer.importCompileCommands(istr);
ASSERT_EQUALS(true, importer.importCompileCommands(istr));
ASSERT_EQUALS(2, importer.fileSettings.size());
ASSERT_EQUALS("C:/Users/dan/git/test-cppcheck/mylib/second src/", importer.fileSettings.begin()->includePaths.front());
}
@ -223,7 +223,7 @@ private:
}])";
std::istringstream istr(json);
TestImporter importer;
importer.importCompileCommands(istr);
ASSERT_EQUALS(true, importer.importCompileCommands(istr));
ASSERT_EQUALS(1, importer.fileSettings.size());
ASSERT_EQUALS("FILESDIR=\"/some/path\"", importer.fileSettings.begin()->defines);
ASSERT_EQUALS(1, importer.fileSettings.begin()->includePaths.size());
@ -243,7 +243,7 @@ private:
}])";
std::istringstream istr(json);
TestImporter importer;
importer.importCompileCommands(istr); // Do not crash
ASSERT_EQUALS(true, importer.importCompileCommands(istr)); // Do not crash
}
void importCompileCommands9() const {
@ -258,7 +258,7 @@ private:
}])";
std::istringstream istr(json);
TestImporter importer;
importer.importCompileCommands(istr);
ASSERT_EQUALS(true, importer.importCompileCommands(istr));
}
void importCompileCommandsArgumentsSection() const {
@ -267,7 +267,7 @@ private:
"\"file\": \"src.c\" } ]";
std::istringstream istr(json);
TestImporter importer;
importer.importCompileCommands(istr);
ASSERT_EQUALS(true, importer.importCompileCommands(istr));
ASSERT_EQUALS(1, importer.fileSettings.size());
ASSERT_EQUALS("/tmp/src.c", importer.fileSettings.begin()->filename);
}
@ -277,7 +277,7 @@ private:
"\"file\": \"src.mm\" } ]";
std::istringstream istr(json);
TestImporter importer;
importer.importCompileCommands(istr);
ASSERT_EQUALS(false, importer.importCompileCommands(istr));
ASSERT_EQUALS(0, importer.fileSettings.size());
}

View File

@ -76,7 +76,7 @@ private:
return library.load(doc);
}
void isCompliantValidationExpression() {
void isCompliantValidationExpression() const {
ASSERT_EQUALS(true, Library::isCompliantValidationExpression("-1"));
ASSERT_EQUALS(true, Library::isCompliantValidationExpression("1"));
ASSERT_EQUALS(true, Library::isCompliantValidationExpression("1:"));

View File

@ -262,7 +262,7 @@ private:
ASSERT_EQUALS(0, platform.long_long_bit);
}
void invalid_config_file_1() {
void invalid_config_file_1() const {
// Invalid XML file: mismatching elements "boolt" vs "bool".
const char xmldata[] = "<?xml version=\"1.0\"?>\n"
"<platform>\n"

View File

@ -167,7 +167,7 @@ bool TestFixture::assertEquals(const char * const filename, const unsigned int l
return expected == actual;
}
std::string TestFixture::deleteLineNumber(const std::string &message) const
std::string TestFixture::deleteLineNumber(const std::string &message)
{
std::string result(message);
// delete line number in "...:NUMBER:..."
@ -290,7 +290,7 @@ void TestFixture::assertNoThrowFail(const char * const filename, const unsigned
}
void TestFixture::complainMissingLib(const char * const libname) const
void TestFixture::complainMissingLib(const char * const libname)
{
missingLibs.insert(libname);
}

View File

@ -90,8 +90,8 @@ protected:
void assertThrow(const char * const filename, const unsigned int linenr) const;
void assertThrowFail(const char * const filename, const unsigned int linenr) const;
void assertNoThrowFail(const char * const filename, const unsigned int linenr) const;
void complainMissingLib(const char * const libname) const;
std::string deleteLineNumber(const std::string &message) const;
static void complainMissingLib(const char * const libname);
static std::string deleteLineNumber(const std::string &message);
void setVerbose(bool v) {
mVerbose = v;

View File

@ -84,7 +84,7 @@ private:
ASSERT_EQUALS("", suppressions.parseFile(s2));
}
Suppressions::ErrorMessage errorMessage(const std::string &errorId) const {
static Suppressions::ErrorMessage errorMessage(const std::string &errorId) {
Suppressions::ErrorMessage ret;
ret.errorId = errorId;
ret.hash = 0;
@ -93,7 +93,7 @@ private:
return ret;
}
Suppressions::ErrorMessage errorMessage(const std::string &errorId, const std::string &file, int line) const {
static Suppressions::ErrorMessage errorMessage(const std::string &errorId, const std::string &file, int line) {
Suppressions::ErrorMessage ret;
ret.errorId = errorId;
ret.setFileName(file);
@ -484,13 +484,13 @@ private:
ASSERT_EQUALS(true, s2.isSuppressed(errorMessage("abc", "include/1.h", 142)));
}
void suppressionsLine0() {
void suppressionsLine0() const {
Suppressions suppressions;
suppressions.addSuppressionLine("syntaxError:*:0");
ASSERT_EQUALS(true, suppressions.isSuppressed(errorMessage("syntaxError", "test.cpp", 0)));
}
void suppressionsFileComment() {
void suppressionsFileComment() const {
std::istringstream file1("# comment\nabc");
Suppressions suppressions1;
suppressions1.parseFile(file1);
@ -746,7 +746,7 @@ private:
ASSERT_EQUALS("", errout.str());
}
void symbol() {
void symbol() const {
Suppressions::Suppression s;
s.errorId = "foo";
s.symbolName = "array*";

View File

@ -1103,14 +1103,14 @@ private:
ASSERT(t == nullptr);
}
void findClosingBracket() {
void findClosingBracket() const {
givenACodeSampleToTokenize var("template<typename X, typename...Y> struct S : public Fred<Wilma<Y...>> {}");
const Token* const t = var.tokens()->next()->findClosingBracket();
ASSERT(Token::simpleMatch(t, "> struct"));
}
void expressionString() {
void expressionString() const {
givenACodeSampleToTokenize var1("void f() { *((unsigned long long *)x) = 0; }");
const Token *const tok1 = Token::findsimplematch(var1.tokens(), "*");
ASSERT_EQUALS("*((unsigned long long*)x)", tok1->expressionString());
@ -1132,7 +1132,7 @@ private:
ASSERT_EQUALS("x=\"\\x00\\x01\\x02\\x03\\x04\\x05\\x06\\x07\"", data6.tokens()->next()->expressionString());
}
void hasKnownIntValue() {
void hasKnownIntValue() const {
// pointer might be NULL
ValueFlow::Value v1(0);

View File

@ -45,7 +45,7 @@ private:
TEST_CASE(exampleAlgorithms);
}
std::string testTokenRange(ConstTokenRange range, const Token* start, const Token* end) const {
static std::string testTokenRange(ConstTokenRange range, const Token* start, const Token* end) {
auto tokenToString = [](const Token* t) {
return t ? t->str() : "<null>";
};

View File

@ -32,7 +32,7 @@ private:
TEST_CASE(matchglob);
}
void isValidGlobPattern() {
void isValidGlobPattern() const {
ASSERT_EQUALS(true, ::isValidGlobPattern("*"));
ASSERT_EQUALS(true, ::isValidGlobPattern("*x"));
ASSERT_EQUALS(true, ::isValidGlobPattern("x*"));
@ -52,7 +52,7 @@ private:
ASSERT_EQUALS(false, ::isValidGlobPattern("x??"));
}
void matchglob() {
void matchglob() const {
ASSERT_EQUALS(true, ::matchglob("*", "xyz"));
ASSERT_EQUALS(true, ::matchglob("x*", "xyz"));
ASSERT_EQUALS(true, ::matchglob("*z", "xyz"));

View File

@ -1946,7 +1946,7 @@ private:
ASSERT(actual.find("X@2 = 0") != std::string::npos);
}
std::string getLine(const std::string &code, int lineNumber) {
static std::string getLine(const std::string &code, int lineNumber) {
std::string nr = MathLib::toString(lineNumber);
const std::string::size_type pos1 = code.find('\n' + nr + ": ");
if (pos1 == std::string::npos)