Commit ce8936e
authored
chore: Modernize CMake build, CI workflows, and code quality tooling (#16)
This pull request introduces significant improvements to the C++
project's build system, code quality tooling, and codebase consistency.
The main focus is on modernizing the CMake configuration, enhancing CI
workflows, enforcing code quality standards, and making minor code
improvements for readability and correctness.
**Build System Modernization and CI Improvements:**
* Migrated to CMake 3.25+ with modern target-based configuration,
introduced `CMakePresets.json` for standardized build and test presets,
and improved compiler warning handling using `target_compile_options`.
[[1]](diffhunk://#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20aL1-R12)
[[2]](diffhunk://#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20aR36-R43)
[[3]](diffhunk://#diff-1712b235e02bd4a3ad866fe26447a6dc5c1b449faeea513f449d244d46d03cf5R1-R107)
* Updated the GitHub Actions workflow to split formatting and build/test
jobs, enforce `clang-format` checks, and use CMake presets for CI
builds.
**Code Quality and Tooling Enhancements:**
* Refined `.clang-tidy` configuration to enable/disable specific checks,
treat critical warnings as errors, and set header filtering for source
files.
* Improved CMake targets for `clang-format` and `clang-tidy`, ensuring
only source files are linted and all code is properly formatted.
[[1]](diffhunk://#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20aL60-R97)
[[2]](diffhunk://#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20aR118-R133)
* Added VSCode settings for YAML associations and updated documentation
with requirements, build instructions, and code quality commands.
[[1]](diffhunk://#diff-a5de3e5871ffcc383a2294845bd3df25d3eeff6c29ad46e3a396577c413bf357L7-R11)
[[2]](diffhunk://#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5R6-R55)
* Removed obsolete `scripts/run_tests.sh` in favor of CMake presets and
CI workflows.
**Codebase Consistency and Minor Fixes:**
* Added `[[nodiscard]]` and other modern C++ attributes to key methods,
improved initialization, and standardized output formatting across
several data structures and algorithms.
[[1]](diffhunk://#diff-035b7389279440bf3472b6a9ab837486652786563c0bcb30e6c466af3d972ed0L29-R29)
[[2]](diffhunk://#diff-035b7389279440bf3472b6a9ab837486652786563c0bcb30e6c466af3d972ed0L44-R44)
[[3]](diffhunk://#diff-0b5eede64af7e5fa987b28c15c62d66036eef93142f747dd42406b49e2ee301dL47-R50)
[[4]](diffhunk://#diff-ca43b5fe493a373d174223fe3547b0c58250493f79b5c95b1981b8c286d82c75L16-R16)
[[5]](diffhunk://#diff-ca43b5fe493a373d174223fe3547b0c58250493f79b5c95b1981b8c286d82c75L49)
[[6]](diffhunk://#diff-5524ccff0723a609f11dc709f077a3813e2a34d4533a7fca4b6b891a8408bd94L52-R52)
[[7]](diffhunk://#diff-8e68f308a036639d8ef3c8d27b1d42015f92db971daba5e31fc26fd9acff1e40L190-R190)
[[8]](diffhunk://#diff-e9c600dcc202ad9d737c0c1084beb09567317bf0b01fe089c212d36c602704afL32-R33)
[[9]](diffhunk://#diff-e9c600dcc202ad9d737c0c1084beb09567317bf0b01fe089c212d36c602704afL47-R47)
[[10]](diffhunk://#diff-2cf88c17b45aaab80a3a46e62ee7e698ad0a621a513f96e8c5283467eada8e43L88-R89)
[[11]](diffhunk://#diff-c824d5e43b627b233c542eac5d32e3d436d356cd1b00fa93c89724de403f6cd4L35-R42)
[[12]](diffhunk://#diff-c824d5e43b627b233c542eac5d32e3d436d356cd1b00fa93c89724de403f6cd4L74-R74)
[[13]](diffhunk://#diff-f64e54e408e0f27c25e219f69f3f632f7efc4f70023e48716cb71aca45662392L39-R43)
[[14]](diffhunk://#diff-96b15a28ce488fdb6264a757c5e03585c8032ca9f92b2a852bf1e3b0e40bb6f0R5)
[[15]](diffhunk://#diff-96b15a28ce488fdb6264a757c5e03585c8032ca9f92b2a852bf1e3b0e40bb6f0L54-R55)
[[16]](diffhunk://#diff-a3fbb7e77fc266ed86ac6d96d669c727b8d1c328c30d1db10b48c44c66a8094aL8-R8)
[[17]](diffhunk://#diff-a3fbb7e77fc266ed86ac6d96d669c727b8d1c328c30d1db10b48c44c66a8094aL121-R120)
[[18]](diffhunk://#diff-ffabb94a8f5f7a9e75419de83bfa5ef14f7a632dd612b0f19e245cf418bf022aL13-R13)
**Summary of Most Important Changes:**
**Build System & CI Modernization**
- Migrated to CMake 3.25+ with modern target-based configuration,
introduced `CMakePresets.json` for easier builds and tests, and improved
compiler warning management.
[[1]](diffhunk://#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20aL1-R12)
[[2]](diffhunk://#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20aR36-R43)
[[3]](diffhunk://#diff-1712b235e02bd4a3ad866fe26447a6dc5c1b449faeea513f449d244d46d03cf5R1-R107)
- Updated GitHub Actions workflow to separate formatting and build/test
jobs, enforce code formatting with `clang-format`, and use CMake presets
for CI.
- Removed legacy shell script `scripts/run_tests.sh` in favor of
CMake-based workflows.
**Code Quality Tooling**
- Enhanced `.clang-tidy` configuration: fine-tuned enabled/disabled
checks, set key warnings as errors, and added header filtering for
focused analysis.
- Improved CMake integration for `clang-format` and `clang-tidy`
targets, ensuring correct file selection and command usage.
[[1]](diffhunk://#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20aL60-R97)
[[2]](diffhunk://#diff-1e7de1ae2d059d21e1dd75d5812d5a34b0222cef273b7c3a2af62eb747f9d20aR118-R133)
- Updated VSCode settings for better YAML support and improved
documentation with requirements and code quality instructions.
[[1]](diffhunk://#diff-a5de3e5871ffcc383a2294845bd3df25d3eeff6c29ad46e3a396577c413bf357L7-R11)
[[2]](diffhunk://#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5R6-R55)
**Codebase Improvements**
- Applied modern C++ best practices: added `[[nodiscard]]`, improved
initialization, standardized output, and fixed minor code issues for
clarity and correctness across multiple files.
[[1]](diffhunk://#diff-035b7389279440bf3472b6a9ab837486652786563c0bcb30e6c466af3d972ed0L29-R29)
[[2]](diffhunk://#diff-035b7389279440bf3472b6a9ab837486652786563c0bcb30e6c466af3d972ed0L44-R44)
[[3]](diffhunk://#diff-0b5eede64af7e5fa987b28c15c62d66036eef93142f747dd42406b49e2ee301dL47-R50)
[[4]](diffhunk://#diff-ca43b5fe493a373d174223fe3547b0c58250493f79b5c95b1981b8c286d82c75L16-R16)
[[5]](diffhunk://#diff-ca43b5fe493a373d174223fe3547b0c58250493f79b5c95b1981b8c286d82c75L49)
[[6]](diffhunk://#diff-5524ccff0723a609f11dc709f077a3813e2a34d4533a7fca4b6b891a8408bd94L52-R52)
[[7]](diffhunk://#diff-8e68f308a036639d8ef3c8d27b1d42015f92db971daba5e31fc26fd9acff1e40L190-R190)
[[8]](diffhunk://#diff-e9c600dcc202ad9d737c0c1084beb09567317bf0b01fe089c212d36c602704afL32-R33)
[[9]](diffhunk://#diff-e9c600dcc202ad9d737c0c1084beb09567317bf0b01fe089c212d36c602704afL47-R47)
[[10]](diffhunk://#diff-2cf88c17b45aaab80a3a46e62ee7e698ad0a621a513f96e8c5283467eada8e43L88-R89)
[[11]](diffhunk://#diff-c824d5e43b627b233c542eac5d32e3d436d356cd1b00fa93c89724de403f6cd4L35-R42)
[[12]](diffhunk://#diff-c824d5e43b627b233c542eac5d32e3d436d356cd1b00fa93c89724de403f6cd4L74-R74)
[[13]](diffhunk://#diff-f64e54e408e0f27c25e219f69f3f632f7efc4f70023e48716cb71aca45662392L39-R43)
[[14]](diffhunk://#diff-96b15a28ce488fdb6264a757c5e03585c8032ca9f92b2a852bf1e3b0e40bb6f0R5)
[[15]](diffhunk://#diff-96b15a28ce488fdb6264a757c5e03585c8032ca9f92b2a852bf1e3b0e40bb6f0L54-R55)
[[16]](diffhunk://#diff-a3fbb7e77fc266ed86ac6d96d669c727b8d1c328c30d1db10b48c44c66a8094aL8-R8)
[[17]](diffhunk://#diff-a3fbb7e77fc266ed86ac6d96d669c727b8d1c328c30d1db10b48c44c66a8094aL121-R120)
[[18]](diffhunk://#diff-ffabb94a8f5f7a9e75419de83bfa5ef14f7a632dd612b0f19e245cf418bf022aL13-R13)1 parent 85247b3 commit ce8936e
File tree
27 files changed
+366
-134
lines changed- .github/workflows
- .vscode
- scripts
- src
- data_structure
- graph
- math
- search
- sorting
27 files changed
+366
-134
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
5 | | - | |
6 | | - | |
7 | | - | |
8 | 4 | | |
9 | | - | |
10 | 5 | | |
11 | | - | |
12 | | - | |
13 | | - | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
14 | 38 | | |
15 | 39 | | |
16 | 40 | | |
17 | | - | |
18 | | - | |
19 | | - | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
11 | | - | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
12 | 13 | | |
13 | 14 | | |
14 | | - | |
15 | | - | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
16 | 32 | | |
17 | 33 | | |
18 | | - | |
19 | | - | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
20 | 37 | | |
21 | | - | |
22 | | - | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
8 | 12 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
5 | | - | |
6 | 4 | | |
7 | 5 | | |
8 | 6 | | |
9 | 7 | | |
10 | 8 | | |
11 | 9 | | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
18 | 13 | | |
19 | 14 | | |
20 | 15 | | |
| |||
38 | 33 | | |
39 | 34 | | |
40 | 35 | | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
41 | 44 | | |
42 | 45 | | |
43 | 46 | | |
| |||
57 | 60 | | |
58 | 61 | | |
59 | 62 | | |
60 | | - | |
61 | | - | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
62 | 71 | | |
63 | 72 | | |
64 | 73 | | |
65 | 74 | | |
66 | 75 | | |
67 | | - | |
| 76 | + | |
68 | 77 | | |
69 | 78 | | |
70 | 79 | | |
71 | 80 | | |
72 | 81 | | |
73 | 82 | | |
74 | 83 | | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
75 | 91 | | |
76 | 92 | | |
77 | 93 | | |
| 94 | + | |
78 | 95 | | |
79 | 96 | | |
| 97 | + | |
80 | 98 | | |
81 | 99 | | |
82 | 100 | | |
| |||
97 | 115 | | |
98 | 116 | | |
99 | 117 | | |
| 118 | + | |
100 | 119 | | |
101 | 120 | | |
| 121 | + | |
102 | 122 | | |
103 | 123 | | |
104 | 124 | | |
105 | | - | |
106 | | - | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
107 | 134 | | |
108 | 135 | | |
109 | 136 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
0 commit comments