2026-03-28 11:45:09 +03:00
|
|
|
# clang-tidy configuration for WoWee
|
|
|
|
|
# Targets C++20. Checks are tuned for a Vulkan/game-engine codebase:
|
|
|
|
|
# - reinterpret_cast, pointer arithmetic, and magic numbers are frequent
|
|
|
|
|
# in low-level graphics/network code, so the most aggressive
|
|
|
|
|
# cppcoreguidelines and readability-magic-numbers checks are disabled.
|
|
|
|
|
---
|
|
|
|
|
Checks: >
|
|
|
|
|
bugprone-*,
|
|
|
|
|
clang-analyzer-*,
|
|
|
|
|
performance-*,
|
|
|
|
|
modernize-use-nullptr,
|
|
|
|
|
modernize-use-override,
|
|
|
|
|
modernize-use-default-member-init,
|
|
|
|
|
modernize-use-emplace,
|
|
|
|
|
modernize-loop-convert,
|
|
|
|
|
modernize-deprecated-headers,
|
|
|
|
|
modernize-make-unique,
|
|
|
|
|
modernize-make-shared,
|
refactor(game): extract EntityController from GameHandler (step 1.3)
Moves entity lifecycle, name/creature/game-object caches, transport GUID
tracking, and the entire update-object pipeline out of GameHandler into a
new EntityController class (friend-class pattern, same as CombatHandler
et al.).
What moved:
- applyUpdateObjectBlock() — 1,520-line core of all entity creation,
field updates, and movement application
- processOutOfRangeObjects() / finalizeUpdateObjectBatch()
- handleUpdateObject() / handleCompressedUpdateObject() / handleDestroyObject()
- handleNameQueryResponse() / handleCreatureQueryResponse()
- handleGameObjectQueryResponse() / handleGameObjectPageText()
- handlePageTextQueryResponse()
- enqueueUpdateObjectWork() / processPendingUpdateObjectWork()
- playerNameCache, playerClassRaceCache_, pendingNameQueries
- creatureInfoCache, pendingCreatureQueries
- gameObjectInfoCache_, pendingGameObjectQueries_
- transportGuids_, serverUpdatedTransportGuids_
- EntityManager (accessed by other handlers via getEntityManager())
8 opcodes re-registered by EntityController::registerOpcodes():
SMSG_UPDATE_OBJECT, SMSG_COMPRESSED_UPDATE_OBJECT, SMSG_DESTROY_OBJECT,
SMSG_NAME_QUERY_RESPONSE, SMSG_CREATURE_QUERY_RESPONSE,
SMSG_GAMEOBJECT_QUERY_RESPONSE, SMSG_GAMEOBJECT_PAGETEXT,
SMSG_PAGE_TEXT_QUERY_RESPONSE
Other handler files (combat, movement, social, spell, inventory, quest,
chat) updated to access EntityManager via getEntityManager() and the
name cache via getPlayerNameCache() — no logic changes.
Also included:
- .clang-tidy: add modernize-use-nodiscard,
modernize-use-designated-initializers; set -std=c++20 in ExtraArgs
- test.sh: prepend clang's own resource include dir before GCC's to
silence xmmintrin.h / ia32intrin.h conflicts during clang-tidy runs
Line counts:
entity_controller.hpp 147 lines (new)
entity_controller.cpp 2172 lines (new)
game_handler.cpp 8095 lines (was 10143, −2048)
Build: 0 errors, 0 warnings.
2026-03-29 08:21:27 +03:00
|
|
|
modernize-use-nodiscard,
|
|
|
|
|
modernize-use-designated-initializers,
|
2026-03-28 11:45:09 +03:00
|
|
|
readability-braces-around-statements,
|
|
|
|
|
readability-container-size-empty,
|
|
|
|
|
readability-delete-null-pointer,
|
|
|
|
|
readability-else-after-return,
|
|
|
|
|
readability-misplaced-array-index,
|
|
|
|
|
readability-non-const-parameter,
|
|
|
|
|
readability-redundant-control-flow,
|
|
|
|
|
readability-redundant-declaration,
|
|
|
|
|
readability-simplify-boolean-expr,
|
|
|
|
|
readability-string-compare,
|
|
|
|
|
-bugprone-easily-swappable-parameters,
|
|
|
|
|
-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,
|
|
|
|
|
-performance-avoid-endl
|
|
|
|
|
|
|
|
|
|
WarningsAsErrors: ''
|
|
|
|
|
|
|
|
|
|
# Suppress the noise from GCC-only LTO flags in compile_commands.json.
|
|
|
|
|
# clang doesn't support -fno-fat-lto-objects; this silences the harmless warning.
|
|
|
|
|
ExtraArgs:
|
refactor(game): extract EntityController from GameHandler (step 1.3)
Moves entity lifecycle, name/creature/game-object caches, transport GUID
tracking, and the entire update-object pipeline out of GameHandler into a
new EntityController class (friend-class pattern, same as CombatHandler
et al.).
What moved:
- applyUpdateObjectBlock() — 1,520-line core of all entity creation,
field updates, and movement application
- processOutOfRangeObjects() / finalizeUpdateObjectBatch()
- handleUpdateObject() / handleCompressedUpdateObject() / handleDestroyObject()
- handleNameQueryResponse() / handleCreatureQueryResponse()
- handleGameObjectQueryResponse() / handleGameObjectPageText()
- handlePageTextQueryResponse()
- enqueueUpdateObjectWork() / processPendingUpdateObjectWork()
- playerNameCache, playerClassRaceCache_, pendingNameQueries
- creatureInfoCache, pendingCreatureQueries
- gameObjectInfoCache_, pendingGameObjectQueries_
- transportGuids_, serverUpdatedTransportGuids_
- EntityManager (accessed by other handlers via getEntityManager())
8 opcodes re-registered by EntityController::registerOpcodes():
SMSG_UPDATE_OBJECT, SMSG_COMPRESSED_UPDATE_OBJECT, SMSG_DESTROY_OBJECT,
SMSG_NAME_QUERY_RESPONSE, SMSG_CREATURE_QUERY_RESPONSE,
SMSG_GAMEOBJECT_QUERY_RESPONSE, SMSG_GAMEOBJECT_PAGETEXT,
SMSG_PAGE_TEXT_QUERY_RESPONSE
Other handler files (combat, movement, social, spell, inventory, quest,
chat) updated to access EntityManager via getEntityManager() and the
name cache via getPlayerNameCache() — no logic changes.
Also included:
- .clang-tidy: add modernize-use-nodiscard,
modernize-use-designated-initializers; set -std=c++20 in ExtraArgs
- test.sh: prepend clang's own resource include dir before GCC's to
silence xmmintrin.h / ia32intrin.h conflicts during clang-tidy runs
Line counts:
entity_controller.hpp 147 lines (new)
entity_controller.cpp 2172 lines (new)
game_handler.cpp 8095 lines (was 10143, −2048)
Build: 0 errors, 0 warnings.
2026-03-29 08:21:27 +03:00
|
|
|
- -std=c++20
|
2026-03-28 11:45:09 +03:00
|
|
|
- -Wno-ignored-optimization-argument
|
|
|
|
|
|
|
|
|
|
HeaderFilterRegex: '^.*/include/.*\.hpp$'
|
|
|
|
|
|
|
|
|
|
CheckOptions:
|
|
|
|
|
- key: modernize-use-default-member-init.UseAssignment
|
|
|
|
|
value: true
|