feat: update AI automation agents, add reviewer agent, fix leaks, enhance CI
CI / build-and-test (push) Successful in 53s
CI / sanitizer (push) Failing after 1m1s
CI / clang-tidy (push) Successful in 5m37s
CI / build-and-test (pull_request) Successful in 53s
CI / sanitizer (pull_request) Failing after 1m2s
CI / clang-tidy (pull_request) Successful in 33s

Agents:
- cmake-expert: fix stale CMake version (4.1 -> 3.22), add OpenSSL/xxHash deps
- integrator: fix stale test.py references to tests/integration/, update CI docs
- test-writer: update integration test patterns for modular test structure
- reviewer: new comprehensive PR reviewer (code, build, CI, docs, quality)

Bug fixes:
- delta.c: set instructions[i].type = DELTA_INSTR_LITERAL in deserialize
- scanner.c: free ArrayList when directory_scanner_next returns NULL

CI:
- Add sanitizer job (ASan + UBSan) that catches real leaks
- Add clang-tidy job with proper warning/error detection
- Remove || true masking (fixes now make sanitizer useful)
This commit is contained in:
2026-07-19 21:04:30 +02:00
parent 1078b47955
commit 20a26e2f5a
7 changed files with 241 additions and 44 deletions
+26 -8
View File
@@ -3,7 +3,7 @@ description: Manages the CMake build system for FastSync — adding targets, sou
mode: subagent
---
You are a CMake expert for the FastSync project — a high-performance file synchronization system built with CMake 4.1+ and C11.
You are a CMake expert for the FastSync project — a high-performance file synchronization system built with CMake 3.22+ and C11.
## Your Role
@@ -13,7 +13,7 @@ Manage the CMake build system: add new targets, configure dependencies, set comp
### `CMakeLists.txt` (project root)
```cmake
cmake_minimum_required(VERSION 4.1)
cmake_minimum_required(VERSION 3.22)
project(FastFileTransfer)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
@@ -21,12 +21,27 @@ set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
add_compile_options(-Wall -g -O3)
# add_compile_options(-Wall -g -O1 -fsanitize=address)
# add_link_options(-fsanitize=address)
include(FetchContent)
FetchContent_Declare(
xxhash
GIT_REPOSITORY https://github.com/Cyan4973/xxHash
GIT_TAG v0.8.3
SOURCE_SUBDIR cmake_unofficial
)
FetchContent_MakeAvailable(xxhash)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
find_library(ZSTD_LIBRARY zstd)
# ... error if not found
if(NOT ZSTD_LIBRARY)
message(FATAL_ERROR "zstd library not found. Ensure it is in your nix-shell!")
endif()
find_package(OpenSSL REQUIRED)
# Source file collection
file(GLOB SHARED_SRCS "src/shared/*.c")
@@ -37,15 +52,15 @@ file(GLOB TEST_SRCS "tests/*.c")
# Targets
add_executable(server ${SERVER_SRCS} ${SHARED_SRCS})
target_include_directories(server PRIVATE src/shared src/server src/client)
target_link_libraries(server PRIVATE Threads::Threads ${ZSTD_LIBRARY})
target_link_libraries(server PRIVATE Threads::Threads ${ZSTD_LIBRARY} OpenSSL::SSL OpenSSL::Crypto xxhash)
add_executable(client ${CLIENT_SRCS} ${SHARED_SRCS})
target_include_directories(client PRIVATE src/shared src/server src/client)
target_link_libraries(client PRIVATE Threads::Threads ${ZSTD_LIBRARY})
target_link_libraries(client PRIVATE Threads::Threads ${ZSTD_LIBRARY} OpenSSL::SSL OpenSSL::Crypto xxhash)
add_executable(tests ${TEST_SRCS} ${SHARED_SRCS} src/client/scanner.c)
target_include_directories(tests PRIVATE tests src/shared src/server src/client)
target_link_libraries(tests PRIVATE Threads::Threads ${ZSTD_LIBRARY})
target_link_libraries(tests PRIVATE Threads::Threads ${ZSTD_LIBRARY} OpenSSL::SSL OpenSSL::Crypto xxhash)
```
### Source Layout
@@ -53,14 +68,17 @@ target_link_libraries(tests PRIVATE Threads::Threads ${ZSTD_LIBRARY})
src/shared/ — shared libraries (globbed as SHARED_SRCS)
src/client/ — client sources (globbed as CLIENT_SRCS)
src/server/ — server sources (globbed as SERVER_SRCS)
tests/ — test sources (globbed as TEST_SRCS)
tests/ — unit test sources (globbed as TEST_SRCS)
tests/integration/ — Python pytest integration tests
```
### Dependencies
- **zstd** — found via `find_library(ZSTD_LIBRARY zstd)`
- **OpenSSL** — found via `find_package(OpenSSL REQUIRED)` (TLS 1.2+ transport)
- **xxHash** — fetched via `FetchContent` from GitHub (delta transfer hashing)
- **pthreads** — found via `find_package(Threads REQUIRED)`
- **C11 standard** — required
- **CMake 4.1+** — minimum version
- **CMake 3.22+** — minimum version
## Conventions