- Erstelle die Datei `CLEAN_CODE_REFACTORING.md`, die die Ziele und Prinzipien des Clean Code Refactorings beschreibt. - Implementiere neue Klassen wie `UserRepository`, `WebSocketMessageHandler`, `MessageValidator`, `ConfigurationManager` und `ChatUserClean`, um die Lesbarkeit, Wartbarkeit und Testbarkeit des Codes zu verbessern. - Füge Methoden zur Fehlerbehandlung, zur Verwendung von Konstanten und zur Anwendung des Factory Patterns hinzu. - Aktualisiere die `CMakeLists.txt`, um die neuen Quellcodedateien einzuschließen. - Optimiere die `ChatRoom`- und `ChatUser`-Klassen, um die neuen Strukturen und Prinzipien zu integrieren. - Füge einen Migrationsleitfaden und Metriken zur Bewertung der Codequalität hinzu.
57 lines
1.9 KiB
CMake
57 lines
1.9 KiB
CMake
cmake_minimum_required(VERSION 3.10)
|
|
|
|
project(YourChat VERSION 0.1)
|
|
|
|
set(CMAKE_CXX_STANDARD 23)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
|
include_directories(${PROJECT_SOURCE_DIR}/src)
|
|
|
|
# Option to enable debug logging (guards [Debug] prints)
|
|
option(YC_DEBUG "Enable YourChat debug logging" OFF)
|
|
message(STATUS "YC_DEBUG option: ${YC_DEBUG}")
|
|
|
|
add_executable(yourchat
|
|
src/main.cpp
|
|
src/lib/base.cpp
|
|
src/core/config.cpp
|
|
src/core/server.cpp
|
|
src/core/ssl_server.cpp
|
|
src/core/chat_room.cpp
|
|
src/lib/tools.cpp
|
|
src/core/chat_user.cpp
|
|
src/lib/database.cpp
|
|
src/object/user.cpp
|
|
src/object/room.cpp
|
|
# Clean Code Refactoring
|
|
src/core/user_repository.cpp
|
|
src/core/websocket_message_handler.cpp
|
|
src/core/message_validator.cpp
|
|
src/core/configuration_manager.cpp
|
|
)
|
|
target_link_libraries(yourchat jsoncpp pthread pqxx)
|
|
|
|
if(YC_DEBUG)
|
|
message(STATUS "YC_DEBUG enabled: defining YC_DEBUG=1, enabling Debug build and verbose makefiles")
|
|
# Ensure Debug build type for better symbols/optimizations settings
|
|
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build type" FORCE)
|
|
# Show full compile/link commands to verify -DYC_DEBUG in use
|
|
set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "Verbose Makefile" FORCE)
|
|
# Export compile_commands.json for tooling
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "Export compile_commands.json" FORCE)
|
|
target_compile_definitions(yourchat PRIVATE YC_DEBUG=1)
|
|
endif()
|
|
|
|
# Link OpenSSL for WebSocket handshake helpers
|
|
find_package(OpenSSL REQUIRED)
|
|
target_link_libraries(yourchat OpenSSL::SSL OpenSSL::Crypto)
|
|
|
|
# Link libwebsockets for SSL/TLS WebSocket support
|
|
find_package(PkgConfig REQUIRED)
|
|
pkg_check_modules(LWS REQUIRED libwebsockets)
|
|
target_include_directories(yourchat PRIVATE ${LWS_INCLUDE_DIRS})
|
|
target_link_libraries(yourchat ${LWS_LIBRARIES})
|
|
|
|
add_executable(ws_probe tools/ws_probe.cpp)
|
|
target_compile_features(ws_probe PRIVATE cxx_std_17)
|
|
target_link_libraries(ws_probe pthread)
|