Skip to content

Commit f336c2e

Browse files
committed
Refactoring; Renamed Scope::classStart and Scope::classEnd
1 parent ed79f30 commit f336c2e

32 files changed

Lines changed: 303 additions & 303 deletions

lib/check64bit.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ void Check64BitPortability::pointerassignment()
6161
else
6262
continue;
6363

64-
for (const Token* tok = scope->classStart->next(); tok != scope->classEnd; tok = tok->next()) {
64+
for (const Token* tok = scope->bodyStart->next(); tok != scope->bodyEnd; tok = tok->next()) {
6565
// skip nested functions
6666
if (tok->str() == "{") {
6767
if (tok->scope()->type == Scope::ScopeType::eFunction || tok->scope()->type == Scope::ScopeType::eLambda)
@@ -88,7 +88,7 @@ void Check64BitPortability::pointerassignment()
8888

8989
// Check assignments
9090
for (const Scope * scope : symbolDatabase->functionScopes) {
91-
for (const Token *tok = scope->classStart; tok && tok != scope->classEnd; tok = tok->next()) {
91+
for (const Token *tok = scope->bodyStart; tok && tok != scope->bodyEnd; tok = tok->next()) {
9292
if (tok->str() != "=")
9393
continue;
9494

lib/checkassert.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ void CheckAssert::assertWithSideEffects()
6363
const Scope* scope = f->functionScope;
6464
if (!scope) continue;
6565

66-
for (const Token *tok2 = scope->classStart; tok2 != scope->classEnd; tok2 = tok2->next()) {
66+
for (const Token *tok2 = scope->bodyStart; tok2 != scope->bodyEnd; tok2 = tok2->next()) {
6767
if (tok2->tokType() != Token::eAssignmentOp && tok2->tokType() != Token::eIncDecOp)
6868
continue;
6969

@@ -74,7 +74,7 @@ void CheckAssert::assertWithSideEffects()
7474
continue; // Pointers need to be dereferenced, otherwise there is no error
7575

7676
bool noReturnInScope = true;
77-
for (const Token *rt = scope->classStart; rt != scope->classEnd; rt = rt->next()) {
77+
for (const Token *rt = scope->bodyStart; rt != scope->bodyEnd; rt = rt->next()) {
7878
if (rt->str() != "return") continue; // find all return statements
7979
if (inSameScope(rt, tok2)) {
8080
noReturnInScope = false;

lib/checkautovariables.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ static bool variableIsUsedInScope(const Token* start, unsigned int varId, const
165165
if (!start) // Ticket #5024
166166
return false;
167167

168-
for (const Token *tok = start; tok && tok != scope->classEnd; tok = tok->next()) {
168+
for (const Token *tok = start; tok && tok != scope->bodyEnd; tok = tok->next()) {
169169
if (tok->varId() == varId)
170170
return true;
171171
const Scope::ScopeType scopeType = tok->scope()->type;
@@ -186,7 +186,7 @@ void CheckAutoVariables::assignFunctionArg()
186186

187187
const SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
188188
for (const Scope * scope : symbolDatabase->functionScopes) {
189-
for (const Token *tok = scope->classStart; tok && tok != scope->classEnd; tok = tok->next()) {
189+
for (const Token *tok = scope->bodyStart; tok && tok != scope->bodyEnd; tok = tok->next()) {
190190
// TODO: What happens if this is removed?
191191
if (tok->astParent())
192192
continue;
@@ -196,7 +196,7 @@ void CheckAutoVariables::assignFunctionArg()
196196
if (isNonReferenceArg(vartok) &&
197197
!Token::Match(vartok->next(), "= %varid% ;", vartok->varId()) &&
198198
!variableIsUsedInScope(Token::findsimplematch(vartok->next(), ";"), vartok->varId(), scope) &&
199-
!Token::findsimplematch(vartok, "goto", scope->classEnd)) {
199+
!Token::findsimplematch(vartok, "goto", scope->bodyEnd)) {
200200
if (vartok->variable()->isPointer() && printWarning)
201201
errorUselessAssignmentPtrArg(vartok);
202202
else if (printStyle)
@@ -208,7 +208,7 @@ void CheckAutoVariables::assignFunctionArg()
208208

209209
static bool reassignedGlobalPointer(const Token *vartok, unsigned int pointerVarId)
210210
{
211-
const Token * const end = vartok->variable()->typeStartToken()->scope()->classEnd;
211+
const Token * const end = vartok->variable()->typeStartToken()->scope()->bodyEnd;
212212
for (const Token *tok2 = vartok; tok2 != nullptr && tok2 != end; tok2 = tok2->next()) {
213213
if (Token::Match(tok2, "%varid% =", pointerVarId))
214214
return true;
@@ -227,7 +227,7 @@ void CheckAutoVariables::autoVariables()
227227
const bool printInconclusive = _settings->inconclusive;
228228
const SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
229229
for (const Scope * scope : symbolDatabase->functionScopes) {
230-
for (const Token *tok = scope->classStart; tok && tok != scope->classEnd; tok = tok->next()) {
230+
for (const Token *tok = scope->bodyStart; tok && tok != scope->bodyEnd; tok = tok->next()) {
231231
// Critical assignment
232232
if (Token::Match(tok, "[;{}] %var% = & %var%") && isRefPtrArg(tok->next()) && isAutoVar(tok->tokAt(4))) {
233233
if (checkRvalueExpression(tok->tokAt(4)))
@@ -335,7 +335,7 @@ void CheckAutoVariables::returnPointerToLocalArray()
335335

336336
// have we reached a function that returns a pointer
337337
if (tok->previous() && tok->previous()->str() == "*") {
338-
for (const Token *tok2 = scope->classStart->next(); tok2 && tok2 != scope->classEnd; tok2 = tok2->next()) {
338+
for (const Token *tok2 = scope->bodyStart->next(); tok2 && tok2 != scope->bodyEnd; tok2 = tok2->next()) {
339339
// Return pointer to local array variable..
340340
if (tok2 ->str() == "return" && isAutoVarArray(tok2->astOperand1())) {
341341
errorReturnPointerToLocalArray(tok2);
@@ -519,9 +519,9 @@ void CheckAutoVariables::returnReference()
519519

520520
// have we reached a function that returns a reference?
521521
if (tok->previous() && tok->previous()->str() == "&") {
522-
for (const Token *tok2 = scope->classStart->next(); tok2 && tok2 != scope->classEnd; tok2 = tok2->next()) {
522+
for (const Token *tok2 = scope->bodyStart->next(); tok2 && tok2 != scope->bodyEnd; tok2 = tok2->next()) {
523523
if (!tok2->scope()->isExecutable()) {
524-
tok2 = tok2->scope()->classEnd;
524+
tok2 = tok2->scope()->bodyEnd;
525525
if (!tok2)
526526
break;
527527
continue;

lib/checkbool.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ void CheckBool::checkIncrementBoolean()
5959

6060
const SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
6161
for (const Scope * scope : symbolDatabase->functionScopes) {
62-
for (const Token* tok = scope->classStart->next(); tok != scope->classEnd; tok = tok->next()) {
62+
for (const Token* tok = scope->bodyStart->next(); tok != scope->bodyEnd; tok = tok->next()) {
6363
if (Token::Match(tok, "%var% ++")) {
6464
const Variable *var = tok->variable();
6565
if (isBool(var))
@@ -97,7 +97,7 @@ void CheckBool::checkBitwiseOnBoolean()
9797

9898
const SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
9999
for (const Scope * scope : symbolDatabase->functionScopes) {
100-
for (const Token* tok = scope->classStart->next(); tok != scope->classEnd; tok = tok->next()) {
100+
for (const Token* tok = scope->bodyStart->next(); tok != scope->bodyEnd; tok = tok->next()) {
101101
if (Token::Match(tok, "(|.|return|&&|%oror%|throw|, %var% [&|]")) {
102102
const Variable *var = tok->next()->variable();
103103
if (isBool(var)) {
@@ -134,7 +134,7 @@ void CheckBool::checkComparisonOfBoolWithInt()
134134

135135
const SymbolDatabase* const symbolDatabase = _tokenizer->getSymbolDatabase();
136136
for (const Scope * scope : symbolDatabase->functionScopes) {
137-
for (const Token* tok = scope->classStart->next(); tok != scope->classEnd; tok = tok->next()) {
137+
for (const Token* tok = scope->bodyStart->next(); tok != scope->bodyEnd; tok = tok->next()) {
138138
const Token* const left = tok->astOperand1();
139139
const Token* const right = tok->astOperand2();
140140
if (left && right && tok->isComparisonOp()) {
@@ -187,7 +187,7 @@ void CheckBool::checkComparisonOfFuncReturningBool()
187187
const SymbolDatabase * const symbolDatabase = _tokenizer->getSymbolDatabase();
188188

189189
for (const Scope * scope : symbolDatabase->functionScopes) {
190-
for (const Token* tok = scope->classStart->next(); tok != scope->classEnd; tok = tok->next()) {
190+
for (const Token* tok = scope->bodyStart->next(); tok != scope->bodyEnd; tok = tok->next()) {
191191
if (tok->tokType() != Token::eComparisonOp || tok->str() == "==" || tok->str() == "!=")
192192
continue;
193193
const Token *firstToken = tok->previous();
@@ -249,7 +249,7 @@ void CheckBool::checkComparisonOfBoolWithBool()
249249
const SymbolDatabase* const symbolDatabase = _tokenizer->getSymbolDatabase();
250250

251251
for (const Scope * scope : symbolDatabase->functionScopes) {
252-
for (const Token* tok = scope->classStart->next(); tok != scope->classEnd; tok = tok->next()) {
252+
for (const Token* tok = scope->bodyStart->next(); tok != scope->bodyEnd; tok = tok->next()) {
253253
if (tok->tokType() != Token::eComparisonOp || tok->str() == "==" || tok->str() == "!=")
254254
continue;
255255
bool firstTokenBool = false;
@@ -291,7 +291,7 @@ void CheckBool::checkAssignBoolToPointer()
291291
{
292292
const SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
293293
for (const Scope * scope : symbolDatabase->functionScopes) {
294-
for (const Token* tok = scope->classStart; tok != scope->classEnd; tok = tok->next()) {
294+
for (const Token* tok = scope->bodyStart; tok != scope->bodyEnd; tok = tok->next()) {
295295
if (tok->str() == "=" && astIsBool(tok->astOperand2())) {
296296
const Token *lhs = tok->astOperand1();
297297
while (lhs && (lhs->str() == "." || lhs->str() == "::"))
@@ -321,7 +321,7 @@ void CheckBool::checkComparisonOfBoolExpressionWithInt()
321321
const SymbolDatabase* symbolDatabase = _tokenizer->getSymbolDatabase();
322322

323323
for (const Scope * scope : symbolDatabase->functionScopes) {
324-
for (const Token* tok = scope->classStart->next(); tok != scope->classEnd; tok = tok->next()) {
324+
for (const Token* tok = scope->bodyStart->next(); tok != scope->bodyEnd; tok = tok->next()) {
325325
if (!tok->isComparisonOp())
326326
continue;
327327

@@ -391,7 +391,7 @@ void CheckBool::pointerArithBool()
391391
if (tok)
392392
tok = tok->astOperand1();
393393
} else if (scope.type == Scope::eDo)
394-
tok = (scope.classEnd->tokAt(2)) ? scope.classEnd->tokAt(2)->astOperand2() : nullptr;
394+
tok = (scope.bodyEnd->tokAt(2)) ? scope.bodyEnd->tokAt(2)->astOperand2() : nullptr;
395395

396396
pointerArithBoolCond(tok);
397397
}
@@ -435,7 +435,7 @@ void CheckBool::checkAssignBoolToFloat()
435435
return;
436436
const SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
437437
for (const Scope * scope : symbolDatabase->functionScopes) {
438-
for (const Token* tok = scope->classStart; tok != scope->classEnd; tok = tok->next()) {
438+
for (const Token* tok = scope->bodyStart; tok != scope->bodyEnd; tok = tok->next()) {
439439
if (tok->str() == "=" && astIsBool(tok->astOperand2())) {
440440
const Token *lhs = tok->astOperand1();
441441
while (lhs && (lhs->str() == "." || lhs->str() == "::"))

lib/checkboost.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ void CheckBoost::checkBoostForeachModification()
3535
{
3636
const SymbolDatabase *symbolDatabase = _tokenizer->getSymbolDatabase();
3737
for (const Scope * scope : symbolDatabase->functionScopes) {
38-
for (const Token *tok = scope->classStart->next(); tok && tok != scope->classEnd; tok = tok->next()) {
38+
for (const Token *tok = scope->bodyStart->next(); tok && tok != scope->bodyEnd; tok = tok->next()) {
3939
if (!Token::simpleMatch(tok, "BOOST_FOREACH ("))
4040
continue;
4141

lib/checkbufferoverrun.cpp

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,7 @@ void CheckBufferOverrun::checkFunctionParameter(const Token &ftok, unsigned int
461461
return;
462462

463463
// Check the parameter usage in the function scope..
464-
for (const Token* ftok2 = func->functionScope->classStart; ftok2 != func->functionScope->classEnd; ftok2 = ftok2->next()) {
464+
for (const Token* ftok2 = func->functionScope->bodyStart; ftok2 != func->functionScope->bodyEnd; ftok2 = ftok2->next()) {
465465
if (Token::Match(ftok2, "if|for|switch|while (")) {
466466
// bailout if there is buffer usage..
467467
if (bailoutIfSwitch(ftok2, parameter->declarationId())) {
@@ -614,7 +614,7 @@ void CheckBufferOverrun::checkScope(const Token *tok, const std::vector<const st
614614

615615
const bool printPortability = _settings->isEnabled(Settings::PORTABILITY);
616616

617-
for (const Token* const end = tok->scope()->classEnd; tok && tok != end; tok = tok->next()) {
617+
for (const Token* const end = tok->scope()->bodyEnd; tok && tok != end; tok = tok->next()) {
618618
if (declarationId != 0 && Token::Match(tok, "%varid% = new|malloc|realloc", declarationId)) {
619619
// Abort
620620
break;
@@ -899,7 +899,7 @@ void CheckBufferOverrun::checkScope(const Token *tok, const ArrayInfo &arrayInfo
899899
{
900900
bool reassigned = false;
901901

902-
for (const Token* const end = tok->scope()->classEnd; tok != end; tok = tok->next()) {
902+
for (const Token* const end = tok->scope()->bodyEnd; tok != end; tok = tok->next()) {
903903
if (reassigned && tok->str() == ";")
904904
break;
905905

@@ -918,7 +918,7 @@ void CheckBufferOverrun::checkScope(const Token *tok, std::map<unsigned int, Arr
918918
{
919919
unsigned int reassigned = 0;
920920

921-
for (const Token* const end = tok->scope()->classEnd; tok != end; tok = tok->next()) {
921+
for (const Token* const end = tok->scope()->bodyEnd; tok != end; tok = tok->next()) {
922922
if (reassigned && tok->str() == ";") {
923923
arrayInfos.erase(reassigned);
924924
reassigned = 0;
@@ -1233,7 +1233,7 @@ void CheckBufferOverrun::checkGlobalAndLocalVariable()
12331233
arrayInfos[var->declarationId()] = ArrayInfo(&*var, symbolDatabase, var->declarationId());
12341234
}
12351235
if (!arrayInfos.empty())
1236-
checkScope(scope->classStart ? scope->classStart : _tokenizer->tokens(), arrayInfos);
1236+
checkScope(scope->bodyStart ? scope->bodyStart : _tokenizer->tokens(), arrayInfos);
12371237
}
12381238

12391239
const std::vector<const std::string*> v;
@@ -1243,7 +1243,7 @@ void CheckBufferOverrun::checkGlobalAndLocalVariable()
12431243
for (std::size_t i = 0; i < functions; ++i) {
12441244
const Scope * scope = symbolDatabase->functionScopes[i];
12451245

1246-
for (const Token *tok = scope->classStart; tok != scope->classEnd; tok = tok->next()) {
1246+
for (const Token *tok = scope->bodyStart; tok != scope->bodyEnd; tok = tok->next()) {
12471247
if (!Token::Match(tok, "[*;{}] %var% ="))
12481248
continue;
12491249

@@ -1355,9 +1355,9 @@ void CheckBufferOverrun::checkStructVariable()
13551355
// check for member variables
13561356
if (func_scope->functionOf == scope) {
13571357
// only check non-empty function
1358-
if (func_scope->classStart->next() != func_scope->classEnd) {
1358+
if (func_scope->bodyStart->next() != func_scope->bodyEnd) {
13591359
// start checking after the {
1360-
const Token *tok = func_scope->classStart->next();
1360+
const Token *tok = func_scope->bodyStart->next();
13611361
checkScope(tok, arrayInfo);
13621362
}
13631363
}
@@ -1370,7 +1370,7 @@ void CheckBufferOverrun::checkStructVariable()
13701370
std::vector<const std::string*> varname = { nullptr, &arrayInfo.varname() };
13711371

13721372
// search the function and it's parameters
1373-
for (const Token *tok3 = func_scope->classDef; tok3 && tok3 != func_scope->classEnd; tok3 = tok3->next()) {
1373+
for (const Token *tok3 = func_scope->classDef; tok3 && tok3 != func_scope->bodyEnd; tok3 = tok3->next()) {
13741374
// search for the class/struct name
13751375
if (tok3->str() != scope->className)
13761376
continue;
@@ -1442,7 +1442,7 @@ void CheckBufferOverrun::checkStructVariable()
14421442

14431443
// Goto end of statement.
14441444
const Token *checkTok = nullptr;
1445-
while (tok3 && tok3 != func_scope->classEnd) {
1445+
while (tok3 && tok3 != func_scope->bodyEnd) {
14461446
// End of statement.
14471447
if (tok3->str() == ";") {
14481448
checkTok = tok3;
@@ -1703,7 +1703,7 @@ void CheckBufferOverrun::checkBufferAllocatedWithStrlen()
17031703
const std::size_t functions = symbolDatabase->functionScopes.size();
17041704
for (std::size_t i = 0; i < functions; ++i) {
17051705
const Scope * scope = symbolDatabase->functionScopes[i];
1706-
for (const Token *tok = scope->classStart->next(); tok && tok != scope->classEnd; tok = tok->next()) {
1706+
for (const Token *tok = scope->bodyStart->next(); tok && tok != scope->bodyEnd; tok = tok->next()) {
17071707
const unsigned int dstVarId = tok->varId();
17081708
if (!dstVarId || tok->strAt(1) != "=")
17091709
continue;
@@ -1729,7 +1729,7 @@ void CheckBufferOverrun::checkBufferAllocatedWithStrlen()
17291729

17301730
// To avoid false positives and added complexity, we will only look for
17311731
// improper usage of the buffer within the block that it was allocated
1732-
for (const Token* const end = tok->scope()->classEnd; tok && tok->next() && tok != end; tok = tok->next()) {
1732+
for (const Token* const end = tok->scope()->bodyEnd; tok && tok->next() && tok != end; tok = tok->next()) {
17331733
// If the buffers are modified, we can't be sure of their sizes
17341734
if (tok->varId() == srcVarId || tok->varId() == dstVarId)
17351735
break;
@@ -1753,7 +1753,7 @@ void CheckBufferOverrun::checkStringArgument()
17531753
const std::size_t functions = symbolDatabase->functionScopes.size();
17541754
for (std::size_t functionIndex = 0; functionIndex < functions; ++functionIndex) {
17551755
const Scope * const scope = symbolDatabase->functionScopes[functionIndex];
1756-
for (const Token *tok = scope->classStart; tok != scope->classEnd; tok = tok->next()) {
1756+
for (const Token *tok = scope->bodyStart; tok != scope->bodyEnd; tok = tok->next()) {
17571757
if (!Token::Match(tok, "%name% (") || !_settings->library.hasminsize(tok->str()))
17581758
continue;
17591759

@@ -1804,7 +1804,7 @@ void CheckBufferOverrun::checkInsecureCmdLineArgs()
18041804
continue;
18051805

18061806
// Jump to the opening curly brace
1807-
tok = symbolDatabase->functionScopes[i]->classStart;
1807+
tok = symbolDatabase->functionScopes[i]->bodyStart;
18081808

18091809
// Search within main() for possible buffer overruns involving argv
18101810
for (const Token* end = tok->link(); tok != end; tok = tok->next()) {
@@ -1925,7 +1925,7 @@ void CheckBufferOverrun::arrayIndexThenCheck()
19251925
const std::size_t functions = symbolDatabase->functionScopes.size();
19261926
for (std::size_t i = 0; i < functions; ++i) {
19271927
const Scope * const scope = symbolDatabase->functionScopes[i];
1928-
for (const Token *tok = scope->classStart; tok && tok != scope->classEnd; tok = tok->next()) {
1928+
for (const Token *tok = scope->bodyStart; tok && tok != scope->bodyEnd; tok = tok->next()) {
19291929
if (Token::simpleMatch(tok, "sizeof (")) {
19301930
tok = tok->linkAt(1);
19311931
continue;
@@ -2000,7 +2000,7 @@ Check::FileInfo* CheckBufferOverrun::getFileInfo(const Tokenizer *tokenizer, con
20002000
const std::size_t functions = symbolDB->functionScopes.size();
20012001
for (std::size_t i = 0; i < functions; ++i) {
20022002
const Scope * const scope = symbolDB->functionScopes[i];
2003-
for (const Token *tok = scope->classStart; tok && tok != scope->classEnd; tok = tok->next()) {
2003+
for (const Token *tok = scope->bodyStart; tok && tok != scope->bodyEnd; tok = tok->next()) {
20042004
if (Token::Match(tok, "%var% [") &&
20052005
Token::Match(tok->linkAt(1), "] !![") &&
20062006
tok->variable() &&

0 commit comments

Comments
 (0)