Skip to content

Commit bab239c

Browse files
committed
Refactor: enable optional clang-tidy build, cleanup includes, and add release preset with analysis
- Introduced ENABLE_CLANG_TIDY CMake option to toggle clang-tidy analysis - Introduced BUILD_EXAMPLES_AOS option to optionally build example apps - Added new CMake preset: 'configure_release_tidy' with clang-tidy and test support - Replaced legacy "aos/aos.h" and "aoe/aoe.h" includes with minimal required headers - Updated unit tests and examples to reflect include cleanup - Improved consistency and clarity in test and example main files
1 parent 5dffb49 commit bab239c

File tree

43 files changed

+150
-137
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+150
-137
lines changed

CMakeLists.txt

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,22 @@ set (PROJECT_NAME aos)
33
project(${PROJECT_NAME} C CXX)
44
set(CMAKE_CXX_STANDARD_REQUIRED True)
55
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
6-
set(CMAKE_CXX_CLANG_TIDY
7-
clang-tidy
8-
-format-style=file
9-
--extra-arg=-Wno-unknown-warning-option
10-
--extra-arg=-Wno-unused-command-line-argument
11-
-header-filter=aos.*\|aoe.*
12-
)
6+
7+
option(ENABLE_CLANG_TIDY "Enable clang-tidy static analysis" OFF)
8+
9+
if (ENABLE_CLANG_TIDY)
10+
set(CMAKE_CXX_CLANG_TIDY
11+
clang-tidy
12+
-format-style=file
13+
--extra-arg=-Wno-unknown-warning-option
14+
--extra-arg=-Wno-unused-command-line-argument
15+
-header-filter=aos.*\|aoe.*
16+
)
17+
message(STATUS "Clang-Tidy enabled")
18+
else()
19+
message(STATUS "Clang-Tidy disabled")
20+
endif()
21+
1322

1423
set(CLANG_TIDY_FOR_3RD_PARTY "" CACHE STRING "" FORCE)
1524
function(disable_clang_tidy_for_target target)
@@ -201,17 +210,21 @@ target_link_libraries(${PROJECT_NAME}
201210
fmt
202211
)
203212

213+
option(BUILD_EXAMPLES_AOS "Build example applications" ON)
204214

205-
add_subdirectory(examples)
206-
215+
if (BUILD_EXAMPLES)
216+
add_subdirectory(examples)
217+
else()
218+
message(STATUS "Examples are skipped.")
219+
endif()
207220

221+
# Disable C++20 modules support to avoid experimental behavior and improve compatibility
208222
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 23)
209223
set_target_properties(${PROJECT_NAME} PROPERTIES
210224
CXX_SCAN_FOR_MODULES OFF
211225
CXX_MODULE_STD_ONLY OFF
212226
)
213227

214-
215228
option(BUILD_TESTS_AOS "Build tests" ON)
216229
if(BUILD_TESTS_AOS)
217230
enable_testing()

CMakePresets.json

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
"CMAKE_INSTALL_PREFIX": "${sourceDir}/install/",
1212
"CMAKE_CXX_COMPILER": "/usr/bin/g++",
1313
"CMAKE_C_COMPILER": "/usr/bin/gcc",
14-
"CMAKE_BUILD_TYPE": "Debug"
14+
"CMAKE_BUILD_TYPE": "Debug",
15+
"BUILD_TESTS_AOS": "ON"
1516
}
1617
},
1718
{
@@ -24,7 +25,23 @@
2425
"CMAKE_INSTALL_PREFIX": "${sourceDir}/install/",
2526
"CMAKE_CXX_COMPILER": "/usr/bin/g++",
2627
"CMAKE_C_COMPILER": "/usr/bin/gcc",
27-
"CMAKE_BUILD_TYPE": "Release"
28+
"CMAKE_BUILD_TYPE": "Release",
29+
"BUILD_TESTS_AOS": "ON"
30+
}
31+
},
32+
{
33+
"name": "configure_release_tidy",
34+
"displayName": "GCC Release with clang-tidy and tests",
35+
"description": "Release build using clang-tidy and enabled tests",
36+
"generator": "Ninja",
37+
"binaryDir": "${sourceDir}/build/${presetName}",
38+
"cacheVariables": {
39+
"CMAKE_INSTALL_PREFIX": "${sourceDir}/install/",
40+
"CMAKE_CXX_COMPILER": "/usr/bin/g++",
41+
"CMAKE_C_COMPILER": "/usr/bin/gcc",
42+
"CMAKE_BUILD_TYPE": "Release",
43+
"ENABLE_CLANG_TIDY": "ON",
44+
"BUILD_TESTS_AOS": "ON"
2845
}
2946
}
3047
],
@@ -36,6 +53,10 @@
3653
{
3754
"name": "build_release",
3855
"configurePreset": "configure_release"
56+
},
57+
{
58+
"name": "build_release_tidy",
59+
"configurePreset": "configure_release_tidy"
3960
}
4061
],
4162
"testPresets": [

aoe/binance/order_book_event/i_order_book_event.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
#include "aos/order_book_event/i_order_book_event.h"
99
#include "aos/order_book_level_raw/order_book_level_raw.h"
1010
#include "aos/order_book_view/i_order_book_view.h"
11-
11+
#include "aos/trading_pair/trading_pair.h"
1212
namespace aoe {
1313
namespace binance {
1414

aoe/bybit/order_book_event/i_order_book_event.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include "aos/order_book_event/i_order_book_event.h"
99
#include "aos/order_book_level_raw/order_book_level_raw.h"
1010
#include "aos/order_book_view/i_order_book_view.h"
11+
#include "aos/trading_pair/trading_pair.h"
1112

1213
namespace aoe {
1314
namespace bybit {

aoe/bybit/ping_manager/for_private_channel/ping_manager.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
#pragma once
22
#include "aoe/bybit/session/web_socket/i_web_socket.h"
33
#include "aoe/ping_manager/i_ping_manager.h"
4+
#include "boost/asio/steady_timer.hpp"
45
#include "nlohmann/json.hpp"
6+
57
namespace aoe {
68
namespace bybit {
79
namespace impl {

aoe/bybit/request/cancel_order/i_request.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include "aos/common/common.h"
55
#include "aos/common/exchange_id.h"
66
#include "aos/request/i_request.h"
7+
#include "aos/trading_pair/trading_pair.h"
78

89
namespace aoe {
910
namespace bybit {

aoe/bybit/request/cancel_order/request.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
#pragma once
22
#include "aoe/bybit/enum_printer/enum_printer.h"
33
#include "aoe/bybit/request/cancel_order/i_request.h"
4+
#include "aoe/bybit/request/place_order/request.h"
45
#include "aos/converters/trading_pair_to_big_string_view/trading_pair_to_big_string_view.h"
56
#include "aos/trading_pair_printer/i_trading_pair_printer.h"
7+
68
namespace aoe {
79
namespace bybit {
810
namespace cancel_order {

examples/example11/main.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "aos/position_strategy/position_strategy.h"
1212
#include "aos/trading_pair/trading_pair.h"
1313
#include "boost/intrusive_ptr.hpp"
14+
1415
int main() {
1516
try {
1617
{

examples/example13/main.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "aos/position_tracker/position_tracker.h"
1313
#include "aos/trading_pair/trading_pair.h"
1414
#include "boost/intrusive_ptr.hpp"
15+
1516
int main() {
1617
try {
1718
using Price = double;

examples/example18/main.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
// Copyright 2025 Denis Evlanov
22

3-
#include <boost/asio.hpp>
4-
5-
#include "aos/aos.h"
3+
#include "aos/avg_tracker/avg_tracker.h"
4+
#include "aos/deviation_tracker/deviation_tracker.h"
5+
#include "aos/histogram/histogram_calculator.h"
6+
#include "aos/joint_histogram/joint_histogram_calculator.h"
67
#include "aos/logger/mylog.h"
8+
#include "aos/market_triplet_manager/market_triplet_manager.h"
9+
#include "aos/max_tracker/max_tracker.h"
10+
#include "aos/min_tracker/min_tracker.h"
11+
#include "aos/mutual_information/mutual_information_calculator.h"
12+
#include "aos/sliding_window_storage/sliding_window_storage.h"
713

814
int main() {
915
{

0 commit comments

Comments
 (0)