2026-05-05 07:56 ftp://ftp.de.debian.org/debian/pool/main/t/tanks/tanks_1.0.1+ds.orig.tar.xz cppcheck-options: --library=posix --library=gnu --library=bsd --library=sdl --inconclusive --enable=style,information --inline-suppr --template=daca2 --disable=missingInclude --suppress=unmatchedSuppression --check-library --debug-warnings --suppress=autoNoType --suppress=valueFlowBailout --suppress=bailoutUninitVar --suppress=symbolDatabaseWarning --suppress=normalCheckLevelConditionExpressions -D__GNUC__ --platform=unix64 -j1 platform: Linux-6.8.0-1047-aws-aarch64-with-glibc2.35 python: 3.10.12 client-version: 1.4.0 compiler: g++ (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0 cppcheck: head 2.20.0 head-info: 519958a (2026-05-04 15:03:10 +0200) count: 169 166 elapsed-time: 1.7 1.5 head-timing-info: old-timing-info: head results: tanks-1.0.1+ds/src/app.cpp:31:92: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable h [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/engine/sound_manager.h:7:1: warning: Member variable 'Sound::volume' has no initializer. [uninitMemberVarNoCtor] tanks-1.0.1+ds/src/engine/sound_manager.h:7:1: warning: Member variable 'Sound::multi_instance' has no initializer. [uninitMemberVarNoCtor] tanks-1.0.1+ds/src/engine/sdl/sdl_engine.h:28:5: warning: Member variable 'SDLEngine::m_window' is not initialized. [uninitMemberVarPrivate] tanks-1.0.1+ds/src/engine/sdl/sdl_engine.h:29:5: warning: Member variable 'SDLEngine::m_renderer' is not initialized. [uninitMemberVarPrivate] tanks-1.0.1+ds/src/engine/sdl/sdl_engine.h:30:5: warning: Member variable 'SDLEngine::m_sound_manager' is not initialized. [uninitMemberVarPrivate] tanks-1.0.1+ds/src/engine/sdl/sdl_engine.h:32:5: warning: Member variable 'SDLEngine::m_config' is not initialized. [uninitMemberVarPrivate] tanks-1.0.1+ds/src/app.cpp:17:5: warning: Class 'App' does not have a copy constructor which is recommended since it has dynamic memory/resource management. [noCopyConstructor] tanks-1.0.1+ds/src/app.cpp:17:5: warning: Class 'App' does not have a operator= which is recommended since it has dynamic memory/resource management. [noOperatorEq] tanks-1.0.1+ds/src/engine/data/event.h:21:5: style: Class 'Event' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/engine/interactive_component.h:14:5: style: Class 'InteractiveComponentsHolder' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/engine/sdl/sdl_renderer.h:11:5: style: Class 'SDLRenderer' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/objects/tank/tank.h:85:9: style: Class 'ShieldEffect' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/objects/tank/tank.h:93:9: style: Class 'ShortShieldEffect' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/objects/tank/tank.h:101:9: style: Class 'BoatEffect' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/objects/tank/tank.h:108:9: style: Class 'FrozenEffect' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/objects/tank/tank.h:115:9: style: Class 'OnIceEffect' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/objects/tank/player/player.h:65:9: style: Class 'CreatingState' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/objects/tank/player/player.h:76:9: style: Class 'AliveState' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/objects/tank/player/player.h:90:9: style: Class 'DestroyedState' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/objects/tank/player/player.h:101:9: style: Class 'PreviewState' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/app_state/appstate.h:12:14: style: The destructor '~AppState' overrides a destructor in a base class but is not marked with a 'override' specifier. [missingOverride] tanks-1.0.1+ds/src/engine/interactive_component.h:17:14: note: Virtual destructor in base class tanks-1.0.1+ds/src/app_state/appstate.h:12:14: note: Destructor in derived class tanks-1.0.1+ds/src/engine/sdl/sdl_renderer.h:12:6: style: The destructor '~SDLRenderer' overrides a destructor in a base class but is not marked with a 'override' specifier. [missingOverride] tanks-1.0.1+ds/src/engine/renderer.h:12:14: note: Virtual destructor in base class tanks-1.0.1+ds/src/engine/sdl/sdl_renderer.h:12:6: note: Destructor in derived class tanks-1.0.1+ds/src/objects/tank/tank.h:17:14: style: The destructor '~Tank' overrides a destructor in a base class but is not marked with a 'override' specifier. [missingOverride] tanks-1.0.1+ds/src/objects/object.h:14:14: note: Virtual destructor in base class tanks-1.0.1+ds/src/objects/tank/tank.h:17:14: note: Destructor in derived class tanks-1.0.1+ds/src/objects/tank/player/player.h:12:6: style: The destructor '~Player' overrides a destructor in a base class but is not marked with a 'override' specifier. [missingOverride] tanks-1.0.1+ds/src/objects/tank/tank.h:17:14: note: Virtual destructor in base class tanks-1.0.1+ds/src/objects/tank/player/player.h:12:6: note: Destructor in derived class tanks-1.0.1+ds/src/app_state/menu.h:19:6: style: The destructor '~Menu' overrides a destructor in a base class but is not marked with a 'override' specifier. [missingOverride] tanks-1.0.1+ds/src/app_state/appstate.h:12:14: note: Virtual destructor in base class tanks-1.0.1+ds/src/app_state/menu.h:19:6: note: Destructor in derived class tanks-1.0.1+ds/src/engine/sdl/sdl_sound_manager.h:26:13: style:inconclusive: Statements following 'return' will never be executed. [unreachableCode] tanks-1.0.1+ds/src/engine/data/data.h:26:29: style: Parameter 'other' can be declared as reference to const [constParameterReference] tanks-1.0.1+ds/src/app_state/game/game.cpp:180:36: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable x [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/game.cpp:480:42: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable w [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/game.cpp:516:44: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable RAND_MAX [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/game.cpp:566:50: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable x [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/game.cpp:17:7: warning: Member variable 'Game::m_new_enemy_cooldown' is not initialized in the constructor. [uninitMemberVar] tanks-1.0.1+ds/src/app_state/game/game.cpp:30:7: warning: Member variable 'Game::m_new_enemy_cooldown' is not initialized in the constructor. [uninitMemberVar] tanks-1.0.1+ds/src/app_state/game/game.cpp:35:5: performance: Variable 'm_players' is assigned in constructor body. Consider performing initialization in initialization list. [useInitializationList] tanks-1.0.1+ds/src/app_state/game/game.cpp:148:12: style:inconclusive: Technically the member function 'Game::drawEnemy' can be const. [functionConst] tanks-1.0.1+ds/src/app_state/game/game.h:45:10: note: Technically the member function 'Game::drawEnemy' can be const. tanks-1.0.1+ds/src/app_state/game/game.cpp:148:12: note: Technically the member function 'Game::drawEnemy' can be const. tanks-1.0.1+ds/src/app_state/game/game.cpp:272:12: style: The member function 'Game::checkCollisionTwoTanks' can be static. [functionStatic] tanks-1.0.1+ds/src/app_state/game/game.h:51:10: note: The member function 'Game::checkCollisionTwoTanks' can be static. tanks-1.0.1+ds/src/app_state/game/game.cpp:272:12: note: The member function 'Game::checkCollisionTwoTanks' can be static. tanks-1.0.1+ds/src/app_state/game/game.cpp:312:12: style: The member function 'Game::checkCollisionEnemyBulletsWithPlayer' can be static. [functionStatic] tanks-1.0.1+ds/src/app_state/game/game.h:53:10: note: The member function 'Game::checkCollisionEnemyBulletsWithPlayer' can be static. tanks-1.0.1+ds/src/app_state/game/game.cpp:312:12: note: The member function 'Game::checkCollisionEnemyBulletsWithPlayer' can be static. tanks-1.0.1+ds/src/app_state/game/game.cpp:32:7: warning: Class 'Game' does not have a copy constructor which is recommended since it has dynamic memory/resource management. [noCopyConstructor] tanks-1.0.1+ds/src/app_state/game/game.cpp:32:7: warning: Class 'Game' does not have a operator= which is recommended since it has dynamic memory/resource management. [noOperatorEq] tanks-1.0.1+ds/src/objects/tank/enemy/enemy.h:45:9: style: Class 'CreatingState' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/objects/tank/enemy/enemy.h:56:9: style: Class 'AliveState' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/objects/tank/enemy/enemy.h:70:9: style: Class 'DestroyedState' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/app_state/game/game.h:87:9: style: Class 'StartingState' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/app_state/game/game.h:98:9: style: Class 'PlayingState' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/app_state/game/game.h:121:9: style: Class 'PauseState' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/app_state/game/game.h:133:9: style: Class 'GameOverState' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/app_state/scores.h:37:9: style: Class 'CountingState' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/app_state/scores.h:48:9: style: Class 'IdleState' has a constructor with 1 argument that is not explicit. [noExplicitConstructor] tanks-1.0.1+ds/src/objects/tank/enemy/enemy.h:10:6: style: The destructor '~Enemy' overrides a destructor in a base class but is not marked with a 'override' specifier. [missingOverride] tanks-1.0.1+ds/src/objects/tank/tank.h:17:14: note: Virtual destructor in base class tanks-1.0.1+ds/src/objects/tank/enemy/enemy.h:10:6: note: Destructor in derived class tanks-1.0.1+ds/src/app_state/game/level_environment.h:15:6: style: The destructor '~LevelEnvironment' overrides a destructor in a base class but is not marked with a 'override' specifier. [missingOverride] tanks-1.0.1+ds/src/engine/interactive_component.h:17:14: note: Virtual destructor in base class tanks-1.0.1+ds/src/app_state/game/level_environment.h:15:6: note: Destructor in derived class tanks-1.0.1+ds/src/app_state/game/game.h:21:6: style: The destructor '~Game' overrides a destructor in a base class but is not marked with a 'override' specifier. [missingOverride] tanks-1.0.1+ds/src/app_state/appstate.h:12:14: note: Virtual destructor in base class tanks-1.0.1+ds/src/app_state/game/game.h:21:6: note: Destructor in derived class tanks-1.0.1+ds/src/app_state/game/game.cpp:289:10: style: The scope of the variable 'intersect_rect' can be reduced. [variableScope] tanks-1.0.1+ds/src/app_state/game/game.cpp:316:10: style: The scope of the variable 'intersect_rect' can be reduced. [variableScope] tanks-1.0.1+ds/src/app_state/game/game.cpp:475:9: style: The scope of the variable 'min_metric' can be reduced. [variableScope] tanks-1.0.1+ds/src/app_state/game/game.cpp:30:34: performance: Function parameter 'players' should be passed by const reference. [passedByValue] tanks-1.0.1+ds/src/app_state/game/game.cpp:189:15: style: Variable 'player' can be declared as pointer to const [constVariablePointer] tanks-1.0.1+ds/src/app_state/game/game.cpp:312:56: style: Parameter 'enemy' can be declared as pointer to const [constParameterPointer] tanks-1.0.1+ds/src/app_state/game/game.cpp:483:23: style: Variable 'player' can be declared as pointer to const [constVariablePointer] tanks-1.0.1+ds/src/app_state/game/game.cpp:548:45: warning:inconclusive: Either the condition 'm_enemy_respown_position>=starting_points.size()' is redundant or 'm_enemy_respown_position' can have the value greater or equal to starting_points.size()+4294967294. Expression 'starting_points.at(m_enemy_respown_position)' causes access out of bounds. [containerOutOfBounds] tanks-1.0.1+ds/src/app_state/game/game.cpp:551:34: note: Assuming that condition 'm_enemy_respown_position>=starting_points.size()' is not redundant tanks-1.0.1+ds/src/app_state/game/game.cpp:550:5: note: m_enemy_respown_position is incremented', new value is symbolic=starting_points.size()+4294967294 tanks-1.0.1+ds/src/app_state/game/game.cpp:548:45: note: Access out of bounds tanks-1.0.1+ds/src/app_state/game/game.cpp:499:24: style: Variable 'min_metric' is assigned a value that is never used. [unreadVariable] tanks-1.0.1+ds/src/app_state/game/game.cpp:221:59: performance: Prefer prefix ++/-- operators for non-primitive types. [postfixOperator] tanks-1.0.1+ds/src/app_state/game/game.cpp:222:53: performance: Prefer prefix ++/-- operators for non-primitive types. [postfixOperator] tanks-1.0.1+ds/src/app_state/game/game.cpp:225:59: performance: Prefer prefix ++/-- operators for non-primitive types. [postfixOperator] tanks-1.0.1+ds/src/app_state/game/game.cpp:226:53: performance: Prefer prefix ++/-- operators for non-primitive types. [postfixOperator] tanks-1.0.1+ds/src/app_state/game/game_game_over_state.cpp:8:56: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable h [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/game_game_over_state.cpp:45:92: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_state_machine [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/game_level_ending_state.cpp:31:65: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_players [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/game_level_ending_state.cpp:50:39: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_players [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/game_level_ending_state.cpp:5:57: style:inconclusive: Function 'LevelEndingState' argument 2 names different: declaration 'no_waiting' definition 'no_wating'. [funcArgNamesDifferent] tanks-1.0.1+ds/src/app_state/game/game.h:107:41: note: Function 'LevelEndingState' argument 2 names different: declaration 'no_waiting' definition 'no_wating'. tanks-1.0.1+ds/src/app_state/game/game_level_ending_state.cpp:5:57: note: Function 'LevelEndingState' argument 2 names different: declaration 'no_waiting' definition 'no_wating'. tanks-1.0.1+ds/src/app_state/game/game_pause_state.cpp:36:47: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_context [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/game_playing_state.cpp:16:52: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_enemies_to_kill_count [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/game_playing_state.cpp:38:24: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_current_level [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/game_starting_state.cpp:13:43: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable h [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/game_starting_state.cpp:32:43: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_context [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:17:46: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable w [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:176:79: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable h [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:311:65: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable h [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:396:92: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable h [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:484:105: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable w [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:533:45: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable h [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:555:45: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable h [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:17:5: performance: Variable 'm_eagle_tile_rect' is assigned in constructor body. Consider performing initialization in initialization list. [useInitializationList] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:19:5: performance: Variable 'm_map_outside_colision_left_rect' is assigned in constructor body. Consider performing initialization in initialization list. [useInitializationList] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:20:5: performance: Variable 'm_map_outside_colision_right_rect' is assigned in constructor body. Consider performing initialization in initialization list. [useInitializationList] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:21:5: performance: Variable 'm_map_outside_colision_top_rect' is assigned in constructor body. Consider performing initialization in initialization list. [useInitializationList] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:22:5: performance: Variable 'm_map_outside_colision_bottom_rect' is assigned in constructor body. Consider performing initialization in initialization list. [useInitializationList] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:45:24: style:inconclusive: Technically the member function 'LevelEnvironment::drawFirstLayer' can be const. [functionConst] tanks-1.0.1+ds/src/app_state/game/level_environment.h:17:10: note: Technically the member function 'LevelEnvironment::drawFirstLayer' can be const. tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:45:24: note: Technically the member function 'LevelEnvironment::drawFirstLayer' can be const. tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:289:24: style:inconclusive: Technically the member function 'LevelEnvironment::checkCollisionWithEagle' can be const. [functionConst] tanks-1.0.1+ds/src/app_state/game/level_environment.h:28:10: note: Technically the member function 'LevelEnvironment::checkCollisionWithEagle' can be const. tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:289:24: note: Technically the member function 'LevelEnvironment::checkCollisionWithEagle' can be const. tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:300:24: style:inconclusive: Technically the member function 'LevelEnvironment::checkCollisionTankWithEnteringEnv' can be const. [functionConst] tanks-1.0.1+ds/src/app_state/game/level_environment.h:32:10: note: Technically the member function 'LevelEnvironment::checkCollisionTankWithEnteringEnv' can be const. tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:300:24: note: Technically the member function 'LevelEnvironment::checkCollisionTankWithEnteringEnv' can be const. tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:385:24: style:inconclusive: Technically the member function 'LevelEnvironment::checkCollisionTankWithLeavingEnv' can be const. [functionConst] tanks-1.0.1+ds/src/app_state/game/level_environment.h:33:10: note: Technically the member function 'LevelEnvironment::checkCollisionTankWithLeavingEnv' can be const. tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:385:24: note: Technically the member function 'LevelEnvironment::checkCollisionTankWithLeavingEnv' can be const. tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:41:16: warning: Class 'LevelEnvironment' does not have a copy constructor which is recommended since it has dynamic memory/resource management. [noCopyConstructor] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:41:16: warning: Class 'LevelEnvironment' does not have a operator= which is recommended since it has dynamic memory/resource management. [noOperatorEq] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:74:16: style: Variable 'row' can be declared as reference to const [constVariableReference] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:220:19: style: Variable 'lr' can be declared as reference to const [constVariableReference] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:361:19: style: Variable 'lr' can be declared as reference to const [constVariableReference] tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:444:23: style: Variable 'lr' can be declared as reference to const [constVariableReference] tanks-1.0.1+ds/src/app_state/menu.cpp:20:47: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable h [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/menu.cpp:52:38: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable w [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/menu.cpp:24:5: warning: Class 'Menu' does not have a copy constructor which is recommended since it has dynamic memory/resource management. [noCopyConstructor] tanks-1.0.1+ds/src/app_state/menu.cpp:24:5: warning: Class 'Menu' does not have a operator= which is recommended since it has dynamic memory/resource management. [noOperatorEq] tanks-1.0.1+ds/src/app_state/menu.cpp:56:11: style: The scope of the variable 'text_start' can be reduced. [variableScope] tanks-1.0.1+ds/src/app_state/menu.cpp:57:15: performance: Range variable 'text' should be declared as const reference. [iterateByValue] tanks-1.0.1+ds/src/app_state/scores.cpp:119:24: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_score_counter [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/scores.cpp:151:24: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_score_counter [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/app_state/scores.cpp:13:5: performance: Variable 'm_players' is assigned in constructor body. Consider performing initialization in initialization list. [useInitializationList] tanks-1.0.1+ds/src/app_state/scores.cpp:11:7: warning: Class 'Scores' does not have a copy constructor which is recommended since it has dynamic memory/resource management. [noCopyConstructor] tanks-1.0.1+ds/src/app_state/scores.cpp:11:7: warning: Class 'Scores' does not have a operator= which is recommended since it has dynamic memory/resource management. [noOperatorEq] tanks-1.0.1+ds/src/app_state/scores.cpp:9:134: style:inconclusive: Function 'Scores' argument 5 names different: declaration 'parent_state_machine' definition 'state_machine'. [funcArgNamesDifferent] tanks-1.0.1+ds/src/app_state/scores.h:12:130: note: Function 'Scores' argument 5 names different: declaration 'parent_state_machine' definition 'state_machine'. tanks-1.0.1+ds/src/app_state/scores.cpp:9:134: note: Function 'Scores' argument 5 names different: declaration 'parent_state_machine' definition 'state_machine'. tanks-1.0.1+ds/src/app_state/scores.cpp:9:38: performance: Function parameter 'players' should be passed by const reference. [passedByValue] tanks-1.0.1+ds/src/app_state/scores.cpp:61:15: style: Variable 'player' can be declared as pointer to const [constVariablePointer] tanks-1.0.1+ds/src/engine/sdl/sdl_event_mapper.h:210:22: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable KMOD_LSHIFT [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/engine/sdl/sdl_engine.cpp:42:18: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable SDL_INIT_VIDEO [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/engine/sdl/sdl_engine.cpp:124:27: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable SDL_QUIT [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/engine/sdl/sdl_engine.cpp:130:42: style: Condition 'handleInternalEvents(*e)==ProcessingResult::STOP' is always false [knownConditionTrueFalse] tanks-1.0.1+ds/src/engine/sdl/sdl_engine.cpp:130:37: note: Calling function 'handleInternalEvents' returns 1 tanks-1.0.1+ds/src/engine/sdl/sdl_engine.cpp:130:42: note: Condition 'handleInternalEvents(*e)==ProcessingResult::STOP' is always false tanks-1.0.1+ds/src/engine/sdl/sdl_engine.cpp:170:43: performance: Function parameter 'config' should be passed by const reference. [passedByValue] tanks-1.0.1+ds/src/engine/sdl/sdl_renderer.cpp:11:20: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable IMG_INIT_PNG [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/engine/sdl/sdl_renderer.cpp:52:49: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable SDL_RENDERER_ACCELERATED [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/engine/sdl/sdl_renderer.cpp:179:41: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable SDL_WINDOW_FULLSCREEN_DESKTOP [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/engine/sdl/sdl_sound_manager.cpp:87:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable cerr [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/engine/sdl/sdl_sound_manager.cpp:127:35: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable MIX_MAX_VOLUME [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/engine/sdl/sdl_sound_manager.cpp:134:37: style: The member function 'SDLSoundManager::findAllMatchingSounds' can be static. [functionStatic] tanks-1.0.1+ds/src/engine/sdl/sdl_sound_manager.h:49:24: note: The member function 'SDLSoundManager::findAllMatchingSounds' can be static. tanks-1.0.1+ds/src/engine/sdl/sdl_sound_manager.cpp:134:37: note: The member function 'SDLSoundManager::findAllMatchingSounds' can be static. tanks-1.0.1+ds/src/engine/sdl/sdl_sound_manager.cpp:148:23: style: The member function 'SDLSoundManager::canPlay' can be static. [functionStatic] tanks-1.0.1+ds/src/engine/sdl/sdl_sound_manager.h:51:10: note: The member function 'SDLSoundManager::canPlay' can be static. tanks-1.0.1+ds/src/engine/sdl/sdl_sound_manager.cpp:148:23: note: The member function 'SDLSoundManager::canPlay' can be static. tanks-1.0.1+ds/src/engine/sdl/sdl_sound_manager.cpp:153:9: style: Consider using std::all_of or std::none_of algorithm instead of a raw loop. [useStlAlgorithm] tanks-1.0.1+ds/src/engine/sdl/sdl_sound_manager.cpp:166:9: style: Consider using std::all_of or std::none_of algorithm instead of a raw loop. [useStlAlgorithm] tanks-1.0.1+ds/src/engine/state_machine/state_machine.cpp:100:20: style: The member function 'StateMachine::initializeStateIfNeeded' can be static. [functionStatic] tanks-1.0.1+ds/src/engine/state_machine/state_machine.h:26:10: note: The member function 'StateMachine::initializeStateIfNeeded' can be static. tanks-1.0.1+ds/src/engine/state_machine/state_machine.cpp:100:20: note: The member function 'StateMachine::initializeStateIfNeeded' can be static. tanks-1.0.1+ds/src/engine/state_machine/state_machine.cpp:13:16: warning: Class 'StateMachine' does not have a copy constructor which is recommended since it has dynamic memory/resource management. [noCopyConstructor] tanks-1.0.1+ds/src/engine/state_machine/state_machine.cpp:13:16: warning: Class 'StateMachine' does not have a operator= which is recommended since it has dynamic memory/resource management. [noOperatorEq] tanks-1.0.1+ds/src/main.cpp:14:26: style: Parameter 'args' can be declared as const array [constParameter] tanks-1.0.1+ds/src/objects/tank/bullet.cpp:6:9: warning: Member variable 'Bullet::m_owner' is not initialized in the constructor. [uninitMemberVar] tanks-1.0.1+ds/src/objects/tank/enemy/enemy.cpp:116:48: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable RAND_MAX [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/objects/tank/enemy/enemy.cpp:86:17: style:inconclusive: Technically the member function 'Enemy::scoreForHit' can be const. [functionConst] tanks-1.0.1+ds/src/objects/tank/enemy/enemy.h:18:14: note: Technically the member function 'Enemy::scoreForHit' can be const. tanks-1.0.1+ds/src/objects/tank/enemy/enemy.cpp:86:17: note: Technically the member function 'Enemy::scoreForHit' can be const. tanks-1.0.1+ds/src/objects/tank/enemy/enemy.cpp:10:7: warning: Class 'Enemy' does not have a copy constructor which is recommended since it has dynamic memory/resource management. [noCopyConstructor] tanks-1.0.1+ds/src/objects/tank/enemy/enemy.cpp:10:7: warning: Class 'Enemy' does not have a operator= which is recommended since it has dynamic memory/resource management. [noOperatorEq] tanks-1.0.1+ds/src/objects/tank/enemy/enemy_alive_state.cpp:9:20: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_context [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/objects/tank/enemy/enemy_alive_state.cpp:28:20: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_context [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/objects/tank/enemy/enemy_creating_state.cpp:9:20: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_context [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/objects/tank/enemy/enemy_creating_state.cpp:36:20: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_context [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/objects/tank/enemy/enemy_destroyed_state.cpp:9:20: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_context [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/objects/tank/enemy/enemy_destroyed_state.cpp:36:20: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_context [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/objects/tank/player/player.cpp:16:5: performance: Variable 'm_key_state_up' is assigned in constructor body. Consider performing initialization in initialization list. [useInitializationList] tanks-1.0.1+ds/src/objects/tank/player/player.cpp:17:5: performance: Variable 'm_key_state_down' is assigned in constructor body. Consider performing initialization in initialization list. [useInitializationList] tanks-1.0.1+ds/src/objects/tank/player/player.cpp:18:5: performance: Variable 'm_key_state_left' is assigned in constructor body. Consider performing initialization in initialization list. [useInitializationList] tanks-1.0.1+ds/src/objects/tank/player/player.cpp:19:5: performance: Variable 'm_key_state_right' is assigned in constructor body. Consider performing initialization in initialization list. [useInitializationList] tanks-1.0.1+ds/src/objects/tank/player/player.cpp:20:5: performance: Variable 'm_key_state_fire' is assigned in constructor body. Consider performing initialization in initialization list. [useInitializationList] tanks-1.0.1+ds/src/objects/tank/player/player.cpp:204:21: style:inconclusive: Technically the member function 'Player::movingState' can be const. [functionConst] tanks-1.0.1+ds/src/objects/tank/player/player.h:34:17: note: Technically the member function 'Player::movingState' can be const. tanks-1.0.1+ds/src/objects/tank/player/player.cpp:204:21: note: Technically the member function 'Player::movingState' can be const. tanks-1.0.1+ds/src/objects/tank/player/player.cpp:8:7: warning: Class 'Player' does not have a copy constructor which is recommended since it has dynamic memory/resource management. [noCopyConstructor] tanks-1.0.1+ds/src/objects/tank/player/player.cpp:8:7: warning: Class 'Player' does not have a operator= which is recommended since it has dynamic memory/resource management. [noOperatorEq] tanks-1.0.1+ds/src/objects/tank/player/player.cpp:6:74: performance: Function parameter 'control_keys' should be passed by const reference. [passedByValue] tanks-1.0.1+ds/src/objects/tank/player/player_alive_state.cpp:10:22: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_context [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/objects/tank/player/player_alive_state.cpp:29:22: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_context [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/objects/tank/player/player_alive_state.cpp:59:22: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_context [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/objects/tank/player/player_alive_state.cpp:57:26: style:inconclusive: Either there is a missing 'override', or the member function 'Player::AliveState::checkKeyStates' can be const. [functionConst] tanks-1.0.1+ds/src/objects/tank/player/player.h:84:14: note: Either there is a missing 'override', or the member function 'Player::AliveState::checkKeyStates' can be const. tanks-1.0.1+ds/src/objects/tank/player/player_alive_state.cpp:57:26: note: Either there is a missing 'override', or the member function 'Player::AliveState::checkKeyStates' can be const. tanks-1.0.1+ds/src/objects/tank/player/player_creating_state.cpp:10:22: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_context [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/objects/tank/player/player_creating_state.cpp:50:22: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_context [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/objects/tank/player/player_destroyed_state.cpp:9:22: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_context [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/objects/tank/player/player_destroyed_state.cpp:35:22: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_context [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/objects/tank/player/player_preview_state.cpp:9:22: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_context [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/objects/tank/player/player_preview_state.cpp:37:22: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable m_context [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/objects/tank/tank.cpp:119:62: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable w [valueFlowBailoutIncompleteVar] tanks-1.0.1+ds/src/objects/tank/tank.cpp:6:7: warning: Member variable 'Tank::m_flags' is not initialized in the constructor. [uninitMemberVar] tanks-1.0.1+ds/src/objects/tank/tank.cpp:6:7: warning: Member variable 'Tank::m_bullet_max_count' is not initialized in the constructor. [uninitMemberVar] tanks-1.0.1+ds/src/objects/tank/tank.cpp:62:12: style:inconclusive: Technically the member function 'Tank::nextCollisionRect' can be const. [functionConst] tanks-1.0.1+ds/src/objects/tank/tank.h:23:10: note: Technically the member function 'Tank::nextCollisionRect' can be const. tanks-1.0.1+ds/src/objects/tank/tank.cpp:62:12: note: Technically the member function 'Tank::nextCollisionRect' can be const. tanks-1.0.1+ds/src/objects/tank/tank.cpp:227:12: style:inconclusive: Technically the member function 'Tank::hasBoatEffect' can be const. [functionConst] tanks-1.0.1+ds/src/objects/tank/tank.h:41:10: note: Technically the member function 'Tank::hasBoatEffect' can be const. tanks-1.0.1+ds/src/objects/tank/tank.cpp:227:12: note: Technically the member function 'Tank::hasBoatEffect' can be const. tanks-1.0.1+ds/src/objects/tank/tank.cpp:137:26: style: Parameter 'intersect_rect' can be declared as reference to const [constParameterReference] tanks-1.0.1+ds/src/objects/tank/tank.cpp:309:18: style: Variable 'onIceEffect' can be declared as pointer to const [constVariablePointer] tanks-1.0.1+ds/src/objects/tank/tank_effect.cpp:17:16: warning: Class 'TankEffect' does not have a copy constructor which is recommended since it has dynamic memory/resource management. [noCopyConstructor] tanks-1.0.1+ds/src/objects/tank/tank_effect.cpp:17:16: warning: Class 'TankEffect' does not have a operator= which is recommended since it has dynamic memory/resource management. [noOperatorEq] tanks-1.0.1+ds/src/spriteconfig.cpp:46:58: style:inconclusive: Function 'getSpriteData' argument 1 names different: declaration 'sp' definition 'st'. [funcArgNamesDifferent] tanks-1.0.1+ds/src/spriteconfig.h:95:48: note: Function 'getSpriteData' argument 1 names different: declaration 'sp' definition 'st'. tanks-1.0.1+ds/src/spriteconfig.cpp:46:58: note: Function 'getSpriteData' argument 1 names different: declaration 'sp' definition 'st'. diff: head tanks-1.0.1+ds/src/app_state/game/level_environment.cpp:220:19: style: Variable 'lr' can be declared as reference to const [constVariableReference] head tanks-1.0.1+ds/src/engine/sound_manager.h:7:1: warning: Member variable 'Sound::multi_instance' has no initializer. [uninitMemberVarNoCtor] head tanks-1.0.1+ds/src/engine/sound_manager.h:7:1: warning: Member variable 'Sound::volume' has no initializer. [uninitMemberVarNoCtor] DONE