Skip to content

State of warnings in CI develop #496

Description

@Becheler

Compiler warnings (global, full CI matrix)

Source: CI run 26759013540 on develop (push, sha 6efc6b60, 2026-06-01). All 24 jobs succeeded; the counts below are warnings, not errors.

Per-job warning counts

Job Warnings
windows_msvc_14_3 (msvc-14.3) 1226
macos (clang, 14) 88
macos (clang, 17) 83
macos (clang, 20) 83
ubuntu (clang-19, 14/17/20/23) 76 each
ubuntu (gcc-14, 14/17/20/23) 52 each
all *-cmake-install / *-cmake-subdir jobs 0

The cmake jobs build only the library, so they surface nothing. All warnings come from the b2 toolset jobs that also build tests and examples. Counts are stable across language-standard variants (14/17/20/23), so the standard level does not change the warning set.

Correctness-relevant (fix or investigate, do not just silence)

File:line Warning Compilers
detail/adjacency_list.hpp:2276 variable p used uninitialized / passed as uninitialized const reference clang (-Wuninitialized-const-reference) and gcc (-Wmaybe-uninitialized)
test/r_c_shortest_paths_test.cpp:160, :264 possibly dangling reference to a temporary gcc (-Wdangling-reference)
example/r_c_shortest_paths_example.cpp:158 possibly dangling reference to a temporary gcc (-Wdangling-reference)
pending/detail/disjoint_sets.hpp:58, :59 signed/unsigned comparison gcc (-Wsign-compare)

adjacency_list.hpp:2276 is the strongest signal: two independent compilers agree p may be read before initialization.

Cosmetic clang/gcc warnings (dead code / deprecation)

Library headers:

File:line Warning Flag
howard_cycle_ratio.hpp:360 lambda capture this not used -Wunused-lambda-capture
r_c_shortest_paths.hpp:200 unused typedef LTraits -Wunused-local-typedef(s)
louvain_clustering.hpp:58, :226, :529 unused type aliases -Wunused-local-typedef(s)
louvain_clustering.hpp:243, :403, :558 pass_number / iteration set but not used -Wunused-but-set-variable

Tests:

File:line Warning Flag
test/graph.cpp:159, test/property_iter.cpp:63, test/csr_graph_test.cpp:328 variable set but not used -Wunused-but-set-variable
test/isomorphism.cpp:89, :308, test/vf2_sub_graph_iso_test.cpp:80 std::random_shuffle deprecated, use std::shuffle -Wdeprecated-declarations
test/min_degree_empty.cpp:40 signed/unsigned comparison -Wsign-compare

Examples:

File:line Warning Flag
example/graph-assoc-types.cpp:16-20, example/quick-tour.cpp:34 unused type aliases -Wunused-local-typedef(s)
example/minimum_degree_ordering.cpp:45, example/two_graphs_common_spanning_trees.cpp:57 unused variable -Wunused-variable
example/fibonacci_heap.cpp:44 signed/unsigned comparison -Wsign-compare
example/fibonacci_heap.cpp:47 std::random_shuffle deprecated -Wdeprecated-declarations

clang/gcc flag totals (raw occurrences across all unix jobs)

Flag Count
-Wunused-but-set-variable 259
-Wunused-local-typedef(s) 126 + 108
-Wunused-lambda-capture 77
-Wdeprecated-declarations 45
-Wsign-compare 24
-Wunused-variable 22
-Wmaybe-uninitialized 20
-Wuninitialized-const-reference 14
-Wdangling-reference 12

MSVC (msvc-14.3): 1226 warnings, 162 distinct sites

Dominated by numeric conversion warnings that the gcc/clang matrix mostly does not emit:

Code Meaning Count
C4267 conversion from size_t, possible loss of data 836
C4305 truncation (e.g. double to float) 198
C4244 conversion, possible loss of data 162
C4101 unreferenced local variable 15
C4996 sscanf etc. deemed unsafe (CRT) 9
C4146 unary minus on unsigned type 6

Top files by MSVC warning count:

File Count
property_map.hpp 150
random.hpp 132
minimum_degree_ordering.hpp 120
king_ordering.hpp 72
isomorphism.hpp 45
bandwidth.hpp 36
disjoint_sets.hpp 30
(plus astar/quick_tour/bellman-ford examples via C4305) many

These are long-standing size_t to int / float-truncation issues in core headers. They are mostly benign on LP64 but real on MSVC's data model, and are the bulk of the project's total warning volume.

Takeaways

  • Almost all of the gcc/clang noise is dead-code lint, cheap to clear.
  • Three correctness-class items deserve real review: the uninitialized p in adjacency_list.hpp, the dangling references in r_c_shortest_paths, and the signed/unsigned comparisons in disjoint_sets.hpp.
  • MSVC conversion warnings are by far the largest group and a separate, larger cleanup effort focused on property_map.hpp, random.hpp, and the ordering headers.

Metadata

Metadata

Assignees

Labels

priority: highBlocks users or core functionality. Needs attention in the current cycle.warning

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions