Skip to content

Fix/explicit variability#1256

Merged
BotellaA merged 11 commits intonextfrom
fix/explicit_variability
Apr 2, 2026
Merged

Fix/explicit variability#1256
BotellaA merged 11 commits intonextfrom
fix/explicit_variability

Conversation

@MoulardM
Copy link
Copy Markdown
Contributor

No description provided.

@MoulardM MoulardM requested a review from panquez March 30, 2026 14:55
@github-actions github-actions bot changed the base branch from master to next March 30, 2026 14:55
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 30, 2026

Cpp-Linter Report ⚠️

Some files did not pass the configured checks!

clang-tidy (v20.1.8) reports: 97 concern(s)
  • include/geode/basic/attribute_manager.hpp:44:31: warning: [cppcoreguidelines-special-member-functions]

    class 'AttributeManager' defines a destructor, a copy constructor, a copy assignment operator and a move constructor but does not define a move assignment operator

       44 |     class opengeode_basic_api AttributeManager
          |                               ^
  • include/geode/basic/attribute_manager.hpp:268:9: warning: [modernize-use-nodiscard]

    function 'mutex' should be marked [[nodiscard]]

      268 |         absl::Mutex& mutex() const;
          |         ^
          |         [[nodiscard]] 
  • include/geode/basic/cached_value.hpp:38:11: warning: [cppcoreguidelines-special-member-functions]

    class 'CachedValue' defines a copy constructor, a copy assignment operator, a move constructor and a move assignment operator but does not define a destructor

       38 |     class CachedValue
          |           ^
  • include/geode/basic/cached_value.hpp:43:22: warning: [modernize-type-traits]

    use c++14 style type templates

       43 |             typename std::add_pointer< ReturnType( Args... ) >::type;
          |             ~~~~~~~~ ^                                        ~~~~~~
          |                                      _t
  • include/geode/basic/cached_value.hpp:48:13: warning: [cppcoreguidelines-prefer-member-initializer]

    'value_' should be initialized in a member initializer of the constructor

       46 |         CachedValue( const CachedValue& other )
          |                                                
          |                                                 : value_(other.value_)
       47 |         {
       48 |             value_ = other.value_;
          |             ^~~~~~~~~~~~~~~~~~~~~~
  • include/geode/basic/cached_value.hpp:49:13: warning: [cppcoreguidelines-prefer-member-initializer]

    'computed_' should be initialized in a member initializer of the constructor

       46 |         CachedValue( const CachedValue& other )
          |                                                
          |                                                , computed_(other.computed_.load())
       47 |         {
       48 |             value_ = other.value_;
       49 |             computed_ = other.computed_.load();
          |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • include/geode/basic/cached_value.hpp:53:13: warning: [cppcoreguidelines-prefer-member-initializer]

    'value_' should be initialized in a member initializer of the constructor

       51 |         CachedValue( CachedValue&& other ) noexcept
          |                                                    
          |                                                     : value_(std::move( other.value_ ))
       52 |         {
       53 |             value_ = std::move( other.value_ );
          |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • include/geode/basic/cached_value.hpp:54:13: warning: [cppcoreguidelines-prefer-member-initializer]

    'computed_' should be initialized in a member initializer of the constructor

       51 |         CachedValue( CachedValue&& other ) noexcept
          |                                                    
          |                                                    , computed_(other.computed_.load())
       52 |         {
       53 |             value_ = std::move( other.value_ );
       54 |             computed_ = other.computed_.load();
          |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • include/geode/basic/cached_value.hpp:57:22: warning: [cert-oop54-cpp]

    operator=() does not handle self-assignment properly

       57 |         CachedValue& operator=( const CachedValue& other )
          |                      ^
  • include/geode/basic/cached_value.hpp:118:43: warning: [readability-identifier-length]

    parameter name 'a' is too short, expected at least 3 characters

      118 |                            { []( Archive& a, CachedValue& value ) {
          |                                           ^
  • include/geode/basic/cached_value.hpp:119:38: warning: [cppcoreguidelines-init-variables]

    variable 'computed' is not initialized

      119 |                                 bool computed;
          |                                      ^       
          |                                               = false
  • include/geode/basic/mapping.hpp:37:11: warning: [cppcoreguidelines-special-member-functions]

    class 'MappingBase' defines a copy constructor, a copy assignment operator, a move constructor and a move assignment operator but does not define a destructor

       37 |     class MappingBase
          |           ^
  • include/geode/basic/mapping.hpp:65:62: warning: [readability-identifier-length]

    parameter name 'in' is too short, expected at least 3 characters

       65 |         [[nodiscard]] const Storage< T2 >& in2out( const T1& in ) const
          |                                                              ^
  • include/geode/basic/mapping.hpp:128:11: warning: [cppcoreguidelines-special-member-functions]

    class 'BijectiveMapping' defines a copy constructor, a copy assignment operator, a move constructor and a move assignment operator but does not define a destructor

      128 |     class BijectiveMapping : public MappingBase< T1, T2, OneValueStorage >
          |           ^
  • include/geode/basic/mapping.hpp:137:29: warning: [readability-identifier-length]

    parameter name 'in' is too short, expected at least 3 characters

      137 |         void map( const T1& in, const T2& out )
          |                             ^
  • include/geode/basic/mapping.hpp:155:34: warning: [readability-identifier-length]

    parameter name 'in' is too short, expected at least 3 characters

      155 |         void erase_in( const T1& in )
          |                                  ^
  • include/geode/basic/mapping.hpp:190:11: warning: [cppcoreguidelines-special-member-functions]

    class 'GenericMapping' defines a copy constructor, a copy assignment operator, a move constructor and a move assignment operator but does not define a destructor

      190 |     class GenericMapping : public MappingBase< T1, T2, MultipleValueStorage >
          |           ^
  • include/geode/basic/mapping.hpp:199:29: warning: [readability-identifier-length]

    parameter name 'in' is too short, expected at least 3 characters

      199 |         void map( const T1& in, const T2& out )
          |                             ^
  • include/geode/basic/mapping.hpp:212:31: warning: [readability-identifier-length]

    parameter name 'in' is too short, expected at least 3 characters

      212 |         void unmap( const T1& in, const T2& out )
          |                               ^
  • include/geode/basic/mapping.hpp:242:34: warning: [readability-identifier-length]

    parameter name 'in' is too short, expected at least 3 characters

      242 |         void erase_in( const T1& in )
          |                                  ^
  • include/geode/basic/mapping.hpp:267:30: warning: [readability-identifier-length]

    variable name 'in' is too short, expected at least 3 characters

      267 |             for( const auto& in : this->out2in( out ) )
          |                              ^
  • include/geode/model/mixin/core/component_type.hpp:52:57: warning: [readability-identifier-length]

    parameter name 'id' is too short, expected at least 3 characters

       52 |         ComponentID( ComponentType component_type, uuid id )
          |                                                         ^
  • include/geode/model/mixin/core/component_type.hpp:53:58: warning: [hicpp-move-const-arg]

    std::move of the variable 'id' of the trivially-copyable type 'uuid' has no effect; remove std::move()

       53 |             : type_( std::move( component_type ) ), id_( std::move( id ) )
          |                                                          ^~~~~~~~~~    ~
  • include/geode/model/mixin/core/component_type.hpp:102:18: warning: [readability-identifier-naming]

    invalid case style for global function 'AbslHashValue'

      102 |         friend H AbslHashValue( H h, const ComponentID& value )
          |                  ^~~~~~~~~~~~~
          |                  absl_hash_value
  • include/geode/model/mixin/core/component_type.hpp:102:35: warning: [readability-identifier-length]

    parameter name 'h' is too short, expected at least 3 characters

      102 |         friend H AbslHashValue( H h, const ComponentID& value )
          |                                   ^
  • include/geode/model/mixin/core/component_type.hpp:114:43: warning: [readability-identifier-length]

    parameter name 'a' is too short, expected at least 3 characters

      114 |                            { []( Archive& a, ComponentID& component_id ) {
          |                                           ^
  • include/geode/model/mixin/core/component_type.hpp:138:54: warning: [readability-identifier-length]

    parameter name 'id' is too short, expected at least 3 characters

      138 |         size_t operator()( const geode::ComponentID& id ) const;
          |                                                      ^
  • include/geode/model/mixin/core/detail/components_storage.hpp:46:1: warning: [modernize-concat-nested-namespaces]

    nested namespaces can be concatenated

       46 | namespace geode
          | ^~~~~~~~~~~~~~~
       47 | {
          | ~
       48 |     namespace detail
          |     ~~~~~~~~~~~~~~~~
          |     namespace geode::detail
  • include/geode/model/mixin/core/detail/components_storage.hpp:63:59: warning: [readability-identifier-length]

    parameter name 'id' is too short, expected at least 3 characters

       63 |             [[nodiscard]] bool has_component( const uuid& id ) const
          |                                                           ^
  • include/geode/model/mixin/core/detail/components_storage.hpp:68:67: warning: [readability-identifier-length]

    parameter name 'id' is too short, expected at least 3 characters

       68 |             [[nodiscard]] const Component& component( const uuid& id ) const
          |                                                                   ^
  • include/geode/model/mixin/core/detail/components_storage.hpp:73:61: warning: [readability-identifier-length]

    parameter name 'id' is too short, expected at least 3 characters

       73 |             [[nodiscard]] Component& component( const uuid& id )
          |                                                             ^
  • include/geode/model/mixin/core/detail/components_storage.hpp:109:48: warning: [readability-identifier-length]

    parameter name 'id' is too short, expected at least 3 characters

      109 |             void delete_component( const uuid& id )
          |                                                ^
  • include/geode/model/mixin/core/detail/components_storage.hpp:128:17: warning: [readability-simplify-boolean-expr]

    boolean expression can be simplified by DeMorgan's theorem

      128 |                 OPENGEODE_EXCEPTION(
          |                 ^
    /__w/OpenGeode/OpenGeode/include/geode/basic/assert.hpp:121:29: note: expanded from macro 'OPENGEODE_EXCEPTION'
      121 |     if( ABSL_PREDICT_FALSE( !( condition ) ) )                                 \
          |         ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
    /__w/OpenGeode/OpenGeode/build/third_party/abseil/install/include/absl/base/optimization.h:189:59: note: expanded from macro 'ABSL_PREDICT_FALSE'
      189 | #define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
          |                                                           ^
  • include/geode/model/mixin/core/detail/components_storage.hpp:146:43: warning: [cppcoreguidelines-avoid-magic-numbers]

    36 is a magic number; consider replacing it with a named constant

      146 |                     if( filename.size() > 36 )
          |                                           ^
  • include/geode/model/mixin/core/detail/components_storage.hpp:148:72: warning: [cppcoreguidelines-avoid-magic-numbers]

    36 is a magic number; consider replacing it with a named constant

      148 |                         auto uuid = filename.substr( filename.size() - 36 );
          |                                                                        ^
  • include/geode/model/mixin/core/detail/components_storage.hpp:163:40: warning: [readability-identifier-length]

    parameter name 'a' is too short, expected at least 3 characters

      163 |                         { []( Archive& a, ComponentsStorage& storage ) {
          |                                        ^
  • include/geode/model/mixin/core/detail/components_storage.hpp:167:46: warning: [readability-identifier-length]

    parameter name 'a2' is too short, expected at least 3 characters

      167 |                                 []( Archive& a2, uuid& id,
          |                                              ^
  • include/geode/model/mixin/core/detail/components_storage.hpp:167:56: warning: [readability-identifier-length]

    parameter name 'id' is too short, expected at least 3 characters

      167 |                                 []( Archive& a2, uuid& id,
          |                                                        ^
  • include/geode/model/mixin/core/detail/components_storage.hpp:170:65: error: [clang-diagnostic-error]

    no member named 'StdSmartPtr' in namespace 'bitsery::ext'

      170 |                                     a2.ext( item, bitsery::ext::StdSmartPtr{} );
          |                                                   ~~~~~~~~~~~~~~^
  • include/geode/model/mixin/core/vertex_identifier.hpp:49:32: warning: [cppcoreguidelines-special-member-functions]

    class 'ComponentMeshVertex' defines a destructor but does not define a copy constructor, a copy assignment operator, a move constructor or a move assignment operator

       49 |     struct opengeode_model_api ComponentMeshVertex
          |                                ^
  • include/geode/model/mixin/core/vertex_identifier.hpp:71:18: warning: [readability-identifier-naming]

    invalid case style for global function 'AbslHashValue'

       71 |         friend H AbslHashValue( H h, const ComponentMeshVertex& value )
          |                  ^~~~~~~~~~~~~
          |                  absl_hash_value
  • include/geode/model/mixin/core/vertex_identifier.hpp:71:35: warning: [readability-identifier-length]

    parameter name 'h' is too short, expected at least 3 characters

       71 |         friend H AbslHashValue( H h, const ComponentMeshVertex& value )
          |                                   ^
  • include/geode/model/mixin/core/vertex_identifier.hpp:90:31: warning: [cppcoreguidelines-special-member-functions]

    class 'VertexIdentifier' defines a destructor, a move constructor and a move assignment operator but does not define a copy constructor or a copy assignment operator

       90 |     class opengeode_model_api VertexIdentifier
          |                               ^
  • include/geode/model/mixin/core/vertex_identifier.hpp:162:49: warning: [readability-identifier-length]

    parameter name 'nb' is too short, expected at least 3 characters

      162 |         index_t create_unique_vertices( index_t nb, BuilderKey );
          |                                                 ^
  • src/geode/basic/attribute_manager.cpp:322:32: warning: [bugprone-easily-swappable-parameters]

    2 adjacent parameters of 'rename_attribute' of similar type ('std::string_view') are easily swapped by mistake

      322 |         void rename_attribute( std::string_view old_name,
          |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~
      323 |             std::string_view new_name,
          |             ~~~~~~~~~~~~~~~~~~~~~~~~~
    /__w/OpenGeode/OpenGeode/src/geode/basic/attribute_manager.cpp:322:49: note: the first parameter in the range is 'old_name'
      322 |         void rename_attribute( std::string_view old_name,
          |                                                 ^~~~~~~~
    /__w/OpenGeode/OpenGeode/src/geode/basic/attribute_manager.cpp:323:30: note: the last parameter in the range is 'new_name'
      323 |             std::string_view new_name,
          |                              ^~~~~~~~
  • src/geode/basic/attribute_manager.cpp:402:9: warning: [readability-avoid-return-with-void-value]

    return statement within a void function should not have a specified return value

      402 |         return impl_->register_attribute( attribute, name, {} );
          |         ^~~~~~
  • src/geode/mesh/helpers/convert_surface_mesh.cpp:140:9: warning: [cppcoreguidelines-pro-type-member-init]

    uninitialized record type: 'cell_mesh_vertices'

      140 |         std::array< geode::index_t, 4 > cell_mesh_vertices;
          |         ^                                                 
          |                                                           {}
  • src/geode/mesh/helpers/convert_surface_mesh.cpp:147:9: warning: [cppcoreguidelines-pro-type-member-init]

    uninitialized record type: 'created_triangles'

      147 |         std::array< geode::index_t, 4 > created_triangles;
          |         ^                                                
          |                                                          {}
  • src/geode/mesh/helpers/convert_surface_mesh.cpp:165:9: warning: [cppcoreguidelines-pro-type-member-init]

    uninitialized record type: 'cell_mesh_vertices'

      165 |         std::array< geode::index_t, 4 > cell_mesh_vertices;
          |         ^                                                 
          |                                                           {}
  • src/geode/mesh/helpers/convert_surface_mesh.cpp:172:9: warning: [cppcoreguidelines-pro-type-member-init]

    uninitialized record type: 'created_triangles'

      172 |         std::array< geode::index_t, 2 > created_triangles;
          |         ^                                                
          |                                                          {}
  • src/geode/mesh/helpers/convert_surface_mesh.cpp:190:13: warning: [cppcoreguidelines-pro-type-member-init]

    uninitialized record type: 'cell_mesh_vertices'

      190 |             std::array< geode::index_t, 4 > cell_mesh_vertices;
          |             ^                                                 
          |                                                               {}
  • src/geode/mesh/helpers/convert_surface_mesh.cpp:212:13: warning: [bugprone-implicit-widening-of-multiplication-result]

    performing an implicit widening conversion to type 'size_type' (aka 'unsigned long') of a multiplication performed in type 'index_t' (aka 'unsigned int')

      212 |             2 * grid.nb_cells() + 2 * cells_to_densify.size() );
          |             ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/convert_surface_mesh.cpp:212:13: note: make conversion explicit to silence this warning
       24 |             2 * grid.nb_cells() + 2 * cells_to_densify.size() );
          |             ^~~~~~~~~~~~~~~~~~~
          |             static_cast<size_type>( )
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/convert_surface_mesh.cpp:212:13: note: perform multiplication in a wider type
      212 |             2 * grid.nb_cells() + 2 * cells_to_densify.size() );
          |             ^
          |             static_cast<size_type>( )
  • src/geode/mesh/helpers/convert_surface_mesh.cpp:212:13: warning: [readability-math-missing-parentheses]

    '*' has higher precedence than '+'; add parentheses to explicitly specify the order of operations

      212 |             2 * grid.nb_cells() + 2 * cells_to_densify.size() );
          |             ^~~~~~~~~~~~~~~~~~~
          |             (                  )
  • src/geode/mesh/helpers/convert_surface_mesh.cpp:212:35: warning: [readability-math-missing-parentheses]

    '*' has higher precedence than '+'; add parentheses to explicitly specify the order of operations

      212 |             2 * grid.nb_cells() + 2 * cells_to_densify.size() );
          |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
          |                                   (                          )
  • src/geode/mesh/helpers/convert_surface_mesh.cpp:280:36: warning: [cppcoreguidelines-avoid-magic-numbers]

    0.25 is a magic number; consider replacing it with a named constant

      280 |                 lambdas.push_back( 0.25 );
          |                                    ^
  • src/geode/mesh/helpers/convert_surface_mesh.cpp:281:65: warning: [cppcoreguidelines-avoid-magic-numbers]

    0.25 is a magic number; consider replacing it with a named constant

      281 |                 position += grid.grid_point( vertex_indices ) * 0.25;
          |                                                                 ^
  • src/geode/mesh/helpers/convert_surface_mesh.cpp:389:10: warning: [readability-function-cognitive-complexity]

    function 'triangulate_surface_mesh' has cognitive complexity of 32 (threshold 10)

      389 |     void triangulate_surface_mesh( const SurfaceMesh< dimension >& surface,
          |          ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/convert_surface_mesh.cpp:393:9: note: +1, including nesting penalty of 0, nesting level increased to 1
      393 |         for( const auto p : Range{ surface.nb_polygons() } )
          |         ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/convert_surface_mesh.cpp:397:13: note: +2, including nesting penalty of 1, nesting level increased to 2
      397 |             if( nb_vertices > 3 )
          |             ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/convert_surface_mesh.cpp:402:17: note: +3, including nesting penalty of 2, nesting level increased to 3
      402 |                 for( const auto e : LRange{ nb_vertices } )
          |                 ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/convert_surface_mesh.cpp:404:21: note: +4, including nesting penalty of 3, nesting level increased to 4
      404 |                     if( const auto adj =
          |                     ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/convert_surface_mesh.cpp:409:63: note: +5, including nesting penalty of 4, nesting level increased to 5
      409 |                                 vertices[e + 1 == nb_vertices ? 0 : e + 1] },
          |                                                               ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/convert_surface_mesh.cpp:416:17: note: +3, including nesting penalty of 2, nesting level increased to 3
      416 |                 for( const auto trgl : LIndices{ new_polygons } )
          |                 ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/convert_surface_mesh.cpp:422:21: note: +4, including nesting penalty of 3, nesting level increased to 4
      422 |                     for( const auto e : LRange{ 3 } )
          |                     ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/convert_surface_mesh.cpp:425:62: note: +5, including nesting penalty of 4, nesting level increased to 5
      425 |                         const auto vertex1 = triangle[e == 2 ? 0 : e + 1];
          |                                                              ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/convert_surface_mesh.cpp:428:25: note: +5, including nesting penalty of 4, nesting level increased to 5
      428 |                         if( adj_it == adjacents.end() )
          |                         ^
  • src/geode/mesh/helpers/detail/split_along_solid_facets.cpp:38:1: warning: [modernize-concat-nested-namespaces]

    nested namespaces can be concatenated

       38 | namespace geode
          | ^~~~~~~~~~~~~~~
       39 | {
          | ~
       40 |     namespace detail
          |     ~~~~~~~~~~~~~~~~
          |     namespace geode::detail
  • src/geode/mesh/helpers/detail/split_along_solid_facets.cpp:50:23: warning: [readability-function-cognitive-complexity]

    function 'remove_adjacencies_along_facets' has cognitive complexity of 11 (threshold 10)

       50 |             SolidInfo remove_adjacencies_along_facets(
          |                       ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/detail/split_along_solid_facets.cpp:54:17: note: +1, including nesting penalty of 0, nesting level increased to 1
       54 |                 for( const auto& solid_facet : facets_list )
          |                 ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/detail/split_along_solid_facets.cpp:56:21: note: +2, including nesting penalty of 1, nesting level increased to 2
       56 |                     if( const auto adj =
          |                     ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/detail/split_along_solid_facets.cpp:62:21: note: +2, including nesting penalty of 1, nesting level increased to 2
       62 |                     for( const auto vertex_id :
          |                     ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/detail/split_along_solid_facets.cpp:68:17: note: +1, including nesting penalty of 0, nesting level increased to 1
       68 |                 for( const auto polyhedron_id : Range{ solid_.nb_polyhedra() } )
          |                 ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/detail/split_along_solid_facets.cpp:70:21: note: +2, including nesting penalty of 1, nesting level increased to 2
       70 |                     for( const auto local_vertex_id : LRange{
          |                     ^
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/detail/split_along_solid_facets.cpp:77:25: note: +3, including nesting penalty of 2, nesting level increased to 3
       77 |                         if( info.vertices_to_check[vertex_id] )
          |                         ^
  • src/geode/mesh/helpers/detail/split_along_solid_facets.cpp:180:17: warning: [bugprone-easily-swappable-parameters]

    2 adjacent parameters of 'process_vertex' of similar type ('const PolyhedraAroundVertex &') are easily swapped by mistake

      180 |                 const PolyhedraAroundVertex& processed_polyhedra,
          |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      181 |                 const PolyhedraAroundVertex& all_polyhedra_around )
          |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/detail/split_along_solid_facets.cpp:180:46: note: the first parameter in the range is 'processed_polyhedra'
      180 |                 const PolyhedraAroundVertex& processed_polyhedra,
          |                                              ^~~~~~~~~~~~~~~~~~~
    /__w/OpenGeode/OpenGeode/src/geode/mesh/helpers/detail/split_along_solid_facets.cpp:181:46: note: the last parameter in the range is 'all_polyhedra_around'
      181 |                 const PolyhedraAroundVertex& all_polyhedra_around )
          |                                              ^~~~~~~~~~~~~~~~~~~~
  • src/geode/mesh/helpers/detail/split_along_solid_facets.cpp:208:13: warning: [modernize-use-nodiscard]

    function 'process_solid_facets' should be marked [[nodiscard]]

      208 |             ElementsMapping process_solid_facets( index_t nb_initial_facets,
          |             ^
          |             [[nodiscard]] 
  • src/geode/mesh/helpers/detail/split_along_solid_facets.cpp:241:25: warning: [bugprone-unchecked-optional-access]

    unchecked access to optional value

      241 |                         solid_facets.facet_from_vertices( facet_vertices )
          |                         ^
  • src/geode/mesh/helpers/detail/split_along_solid_facets.cpp:249:13: warning: [modernize-use-nodiscard]

    function 'final_facets_mapping' should be marked [[nodiscard]]

      249 |             ElementsMapping final_facets_mapping(
          |             ^
          |             [[nodiscard]] 
  • src/geode/mesh/helpers/detail/split_along_solid_facets.cpp:297:25: warning: [bugprone-unchecked-optional-access]

    unchecked access to optional value

      297 |                         solid_edges.edge_from_vertices( edge_vertices ).value(),
          |                         ^
  • src/geode/mesh/helpers/detail/split_along_solid_facets.cpp:304:13: warning: [modernize-use-nodiscard]

    function 'final_edges_mapping' should be marked [[nodiscard]]

      304 |             ElementsMapping final_edges_mapping(
          |             ^
          |             [[nodiscard]] 
  • src/geode/model/mixin/core/vertex_identifier.cpp:96:32: warning: [readability-identifier-length]

    parameter name 'a' is too short, expected at least 3 characters

       96 |                 { []( Archive& a, ComponentMeshVertex& component_mesh_vertex ) {
          |                                ^
  • src/geode/model/mixin/core/vertex_identifier.cpp:104:27: warning: [readability-identifier-naming]

    invalid case style for private member 'unique_vertices_name'

      104 |         const std::string unique_vertices_name = "unique vertices";
          |                           ^~~~~~~~~~~~~~~~~~~~
          |                           unique_vertices_name_
  • src/geode/model/mixin/core/vertex_identifier.cpp:117:9: warning: [modernize-use-nodiscard]

    function 'nb_unique_vertices' should be marked [[nodiscard]]

      117 |         index_t nb_unique_vertices() const
          |         ^
          |         [[nodiscard]] 
  • src/geode/model/mixin/core/vertex_identifier.cpp:122:9: warning: [modernize-use-nodiscard]

    function 'is_unique_vertex_isolated' should be marked [[nodiscard]]

      122 |         bool is_unique_vertex_isolated( index_t unique_vertex_id ) const
          |         ^
          |         [[nodiscard]] 
  • src/geode/model/mixin/core/vertex_identifier.cpp:127:9: warning: [modernize-use-nodiscard]

    function 'component_mesh_vertices' should be marked [[nodiscard]]

      127 |         const std::vector< ComponentMeshVertex >& component_mesh_vertices(
          |         ^
          |         [[nodiscard]] 
  • src/geode/model/mixin/core/vertex_identifier.cpp:137:9: warning: [modernize-use-nodiscard]

    function 'unique_vertex' should be marked [[nodiscard]]

      137 |         index_t unique_vertex(
          |         ^
          |         [[nodiscard]] 
  • src/geode/model/mixin/core/vertex_identifier.cpp:143:9: warning: [modernize-use-nodiscard]

    function 'has_component_mesh_vertices' should be marked [[nodiscard]]

      143 |         bool has_component_mesh_vertices(
          |         ^
          |         [[nodiscard]] 
  • src/geode/model/mixin/core/vertex_identifier.cpp:158:9: warning: [modernize-use-nodiscard]

    function 'has_component_mesh_vertices' should be marked [[nodiscard]]

      158 |         bool has_component_mesh_vertices(
          |         ^
          |         [[nodiscard]] 
  • src/geode/model/mixin/core/vertex_identifier.cpp:175:18: warning: [readability-identifier-length]

    variable name 'it' is too short, expected at least 3 characters

      175 |             auto it = vertex2unique_vertex_.find( component.id() );
          |                  ^
  • src/geode/model/mixin/core/vertex_identifier.cpp:228:55: warning: [readability-identifier-length]

    parameter name 'nb' is too short, expected at least 3 characters

      228 |         index_t create_unique_vertices( const index_t nb )
          |                                                       ^
  • src/geode/model/mixin/core/vertex_identifier.cpp:270:24: warning: [readability-identifier-length]

    variable name 'it' is too short, expected at least 3 characters

      270 |             const auto it = absl::c_find( vertices, component_vertex_id );
          |                        ^
  • src/geode/model/mixin/core/vertex_identifier.cpp:283:14: warning: [readability-function-cognitive-complexity]

    function 'update_unique_vertices' has cognitive complexity of 13 (threshold 10)

      283 |         void update_unique_vertices( const ComponentID& component_id,
          |              ^
    /__w/OpenGeode/OpenGeode/src/geode/model/mixin/core/vertex_identifier.cpp:288:17: note: nesting level increased to 1
      288 |                 [this, &component_id, &old2new]( index_t uv ) {
          |                 ^
    /__w/OpenGeode/OpenGeode/src/geode/model/mixin/core/vertex_identifier.cpp:289:21: note: +2, including nesting penalty of 1, nesting level increased to 2
      289 |                     if( !has_component_mesh_vertices( uv, component_id.id() ) )
          |                     ^
    /__w/OpenGeode/OpenGeode/src/geode/model/mixin/core/vertex_identifier.cpp:296:21: note: +2, including nesting penalty of 1, nesting level increased to 2
      296 |                     for( const auto v : Indices{ all_vertices } )
          |                     ^
    /__w/OpenGeode/OpenGeode/src/geode/model/mixin/core/vertex_identifier.cpp:299:25: note: +3, including nesting penalty of 2, nesting level increased to 3
      299 |                         if( cmv.component_id.id() != component_id.id() )
          |                         ^
    /__w/OpenGeode/OpenGeode/src/geode/model/mixin/core/vertex_identifier.cpp:304:25: note: +3, including nesting penalty of 2, nesting level increased to 3
      304 |                         if( new_id == NO_ID )
          |                         ^
    /__w/OpenGeode/OpenGeode/src/geode/model/mixin/core/vertex_identifier.cpp:309:25: note: +1, nesting level increased to 3
      309 |                         else
          |                         ^
    /__w/OpenGeode/OpenGeode/src/geode/model/mixin/core/vertex_identifier.cpp:312:33: note: nesting level increased to 4
      312 |                                 [v, new_id]( std::vector< ComponentMeshVertex >&
          |                                 ^
    /__w/OpenGeode/OpenGeode/src/geode/model/mixin/core/vertex_identifier.cpp:318:21: note: +2, including nesting penalty of 1, nesting level increased to 2
      318 |                     if( need_to_delete )
          |                     ^
    /__w/OpenGeode/OpenGeode/src/geode/model/mixin/core/vertex_identifier.cpp:321:29: note: nesting level increased to 3
      321 |                             [&to_delete](
          |                             ^
  • src/geode/model/mixin/core/vertex_identifier.cpp:288:58: warning: [readability-identifier-length]

    parameter name 'uv' is too short, expected at least 3 characters

      288 |                 [this, &component_id, &old2new]( index_t uv ) {
          |                                                          ^
  • src/geode/model/mixin/core/vertex_identifier.cpp:329:32: warning: [readability-function-cognitive-complexity]

    function 'delete_isolated_vertices' has cognitive complexity of 11 (threshold 10)

      329 |         std::vector< index_t > delete_isolated_vertices()
          |                                ^
    /__w/OpenGeode/OpenGeode/src/geode/model/mixin/core/vertex_identifier.cpp:334:13: note: +1, including nesting penalty of 0, nesting level increased to 1
      334 |             for( const auto v : Range{ nb_unique_vertices() } )
          |             ^
    /__w/OpenGeode/OpenGeode/src/geode/model/mixin/core/vertex_identifier.cpp:336:17: note: +2, including nesting penalty of 1, nesting level increased to 2
      336 |                 if( is_unique_vertex_isolated( v ) )
          |                 ^
    /__w/OpenGeode/OpenGeode/src/geode/model/mixin/core/vertex_identifier.cpp:341:17: note: +2, including nesting penalty of 1, nesting level increased to 2
      341 |                 for( const auto& cmv : component_mesh_vertices( v ) )
          |                 ^
    /__w/OpenGeode/OpenGeode/src/geode/model/mixin/core/vertex_identifier.cpp:349:13: note: +1, including nesting penalty of 0, nesting level increased to 1
      349 |             for( const auto& component_vertices : components_vertices )
          |             ^
    /__w/OpenGeode/OpenGeode/src/geode/model/mixin/core/vertex_identifier.cpp:353:17: note: +2, including nesting penalty of 1, nesting level increased to 2
      353 |                 for( const auto v : component_vertices.second )
          |                 ^
    /__w/OpenGeode/OpenGeode/src/geode/model/mixin/core/vertex_identifier.cpp:356:21: note: +3, including nesting penalty of 2, nesting level increased to 3
      356 |                     if( value == NO_ID )
          |                     ^
  • src/geode/model/mixin/core/vertex_identifier.cpp:391:13: warning: [readability-simplify-boolean-expr]

    boolean expression can be simplified by DeMorgan's theorem

      391 |             OPENGEODE_EXCEPTION(
          |             ^
    /__w/OpenGeode/OpenGeode/include/geode/basic/assert.hpp:121:29: note: expanded from macro 'OPENGEODE_EXCEPTION'
      121 |     if( ABSL_PREDICT_FALSE( !( condition ) ) )                                 \
          |         ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
    /__w/OpenGeode/OpenGeode/build/third_party/abseil/install/include/absl/base/optimization.h:189:59: note: expanded from macro 'ABSL_PREDICT_FALSE'
      189 | #define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
          |                                                           ^
  • src/geode/model/mixin/core/vertex_identifier.cpp:406:36: warning: [readability-identifier-length]

    parameter name 'a' is too short, expected at least 3 characters

      406 |                     { []( Archive& a, Impl& impl ) {
          |                                    ^
  • src/geode/model/mixin/core/vertex_identifier.cpp:411:44: error: [clang-diagnostic-error]

    no member named 'StdMap' in namespace 'bitsery::ext'

      411 |                              bitsery::ext::StdMap{
          |                              ~~~~~~~~~~~~~~^
  • src/geode/model/mixin/core/vertex_identifier.cpp:427:38: warning: [readability-identifier-length]

    parameter name 'a' is too short, expected at least 3 characters

      427 |                         []( Archive& a, Impl& impl ) {
          |                                      ^
  • src/geode/model/mixin/core/vertex_identifier.cpp:432:47: error: [clang-diagnostic-error]

    no member named 'StdMap' in namespace 'bitsery::ext'

      432 |                                 bitsery::ext::StdMap{
          |                                 ~~~~~~~~~~~~~~^
  • src/geode/model/mixin/core/vertex_identifier.cpp:530:52: warning: [hicpp-named-parameter]

    all parameters should be named in a function

      530 |         const MeshComponent& component, BuilderKey )
          |                                                    ^
          |                                                     /*unused*/
  • src/geode/model/mixin/core/vertex_identifier.cpp:537:52: warning: [hicpp-named-parameter]

    all parameters should be named in a function

      537 |         const MeshComponent& component, BuilderKey )
          |                                                    ^
          |                                                     /*unused*/
  • src/geode/model/mixin/core/vertex_identifier.cpp:542:64: warning: [hicpp-named-parameter]

    all parameters should be named in a function

      542 |     index_t VertexIdentifier::create_unique_vertex( BuilderKey )
          |                                                                ^
          |                                                                 /*unused*/
  • src/geode/model/mixin/core/vertex_identifier.cpp:547:63: warning: [readability-identifier-length]

    parameter name 'nb' is too short, expected at least 3 characters

      547 |     index_t VertexIdentifier::create_unique_vertices( index_t nb, BuilderKey )
          |                                                               ^
  • src/geode/model/mixin/core/vertex_identifier.cpp:547:78: warning: [hicpp-named-parameter]

    all parameters should be named in a function

      547 |     index_t VertexIdentifier::create_unique_vertices( index_t nb, BuilderKey )
          |                                                                              ^
          |                                                                               /*unused*/
  • src/geode/model/mixin/core/vertex_identifier.cpp:553:29: warning: [performance-unnecessary-value-param]

    the parameter 'component_vertex_id' is copied for each invocation but only used as a const reference; consider making it a const reference

      553 |         ComponentMeshVertex component_vertex_id,
          |                             ^
          |         const              &
  • src/geode/model/mixin/core/vertex_identifier.cpp:555:20: warning: [hicpp-named-parameter]

    all parameters should be named in a function

      555 |         BuilderKey )
          |                    ^
          |                     /*unused*/
  • src/geode/model/mixin/core/vertex_identifier.cpp:558:13: warning: [hicpp-move-const-arg]

    passing result of std::move() as a const reference argument; no move will actually happen

      558 |             std::move( component_vertex_id ), unique_vertex_id );
          |             ^~~~~~~~~~                     ~
    /__w/OpenGeode/OpenGeode/include/geode/model/mixin/core/vertex_identifier.hpp:49:32: note: 'ComponentMeshVertex' is not move assignable/constructible
       49 |     struct opengeode_model_api ComponentMeshVertex
          |                                ^
  • src/geode/model/mixin/core/vertex_identifier.cpp:564:20: warning: [hicpp-named-parameter]

    all parameters should be named in a function

      564 |         BuilderKey )
          |                    ^
          |                     /*unused*/
  • src/geode/model/mixin/core/vertex_identifier.cpp:572:20: warning: [hicpp-named-parameter]

    all parameters should be named in a function

      572 |         BuilderKey )
          |                    ^
          |                     /*unused*/
  • src/geode/model/mixin/core/vertex_identifier.cpp:584:48: warning: [hicpp-named-parameter]

    all parameters should be named in a function

      584 |         std::string_view directory, BuilderKey )
          |                                                ^
          |                                                 /*unused*/
  • src/geode/model/mixin/core/vertex_identifier.cpp:586:9: warning: [readability-avoid-return-with-void-value]

    return statement within a void function should not have a specified return value

      586 |         return impl_->load( directory );
          |         ^~~~~~
  • src/geode/model/mixin/core/vertex_identifier.cpp:590:20: warning: [hicpp-named-parameter]

    all parameters should be named in a function

      590 |         BuilderKey )
          |                    ^
          |                     /*unused*/

Have any feedback or feature suggestions? Share it here.

@panquez panquez requested a review from francoisbonneau April 2, 2026 12:25
@BotellaA BotellaA merged commit 4a02d37 into next Apr 2, 2026
20 checks passed
@BotellaA BotellaA deleted the fix/explicit_variability branch April 2, 2026 13:48
@BotellaA
Copy link
Copy Markdown
Member

BotellaA commented Apr 2, 2026

🎉 This PR is included in version 16.3.5-rc.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

@BotellaA
Copy link
Copy Markdown
Member

BotellaA commented Apr 4, 2026

🎉 This PR is included in version 16.3.5 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants