Skip to content

V18 - #199

Draft
BenPinet wants to merge 14 commits into
nextfrom
v18
Draft

V18#199
BenPinet wants to merge 14 commits into
nextfrom
v18

Conversation

@BenPinet

@BenPinet BenPinet commented Aug 4, 2026

Copy link
Copy Markdown
Member

No description provided.

@BenPinet
BenPinet requested a review from BotellaA August 4, 2026 09:36
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

Cpp-Linter Report ⚠️

Some files did not pass the configured checks!

clang-tidy (v20.1.8) reports: 143 concern(s)
  • include/geode/io/image/detail/vtk_output.hpp:34:1: warning: [modernize-concat-nested-namespaces]

    nested namespaces can be concatenated

       34 | namespace geode
          | ^~~~~~~~~~~~~~~
       35 | {
          | ~
       36 |     namespace detail
          |     ~~~~~~~~~~~~~~~~
          |     namespace geode::detail
  • include/geode/io/image/detail/vtk_output.hpp:39:15: warning: [cppcoreguidelines-special-member-functions]

    class 'VTKOutputImpl' defines a non-default destructor but does not define a copy constructor, a copy assignment operator, a move constructor or a move assignment operator

       39 |         class VTKOutputImpl
          |               ^
  • include/geode/io/image/detail/vtk_output.hpp:62:21: warning: [hicpp-use-equals-default]

    use '= default' to define a trivial destructor

       62 |             virtual ~VTKOutputImpl() {}
          |                     ^                ~~
          |                                      = default;
  • include/geode/io/image/detail/vtk_output.hpp:82:18: warning: [readability-function-cognitive-complexity]

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

       82 |             void write_attributes( pugi::xml_node& attribute_node,
          |                  ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/image/detail/vtk_output.hpp:86:17: note: +1, including nesting penalty of 0, nesting level increased to 1
       86 |                 for( const auto& id : manager.attribute_ids() )
          |                 ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/image/detail/vtk_output.hpp:89:21: note: +2, including nesting penalty of 1, nesting level increased to 2
       89 |                     if( !attribute || !attribute->is_genericable() )
          |                     ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/image/detail/vtk_output.hpp:89:36: note: +1
       89 |                     if( !attribute || !attribute->is_genericable() )
          |                                    ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/image/detail/vtk_output.hpp:98:21: note: +2, including nesting penalty of 1, nesting level increased to 2
       98 |                     for( const auto e : elements )
          |                     ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/image/detail/vtk_output.hpp:100:25: note: +3, including nesting penalty of 2, nesting level increased to 3
      100 |                         for( const auto i : LRange{ attribute->nb_items() } )
          |                         ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/image/detail/vtk_output.hpp:102:29: note: +4, including nesting penalty of 3, nesting level increased to 4
      102 |                             if( !attribute->has_value( e ) )
          |                             ^
  • include/geode/io/image/detail/vtk_output.hpp:86:34: warning: [readability-identifier-length]

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

       86 |                 for( const auto& id : manager.attribute_ids() )
          |                                  ^
  • include/geode/io/mesh/detail/vtk_input.hpp:42:1: warning: [modernize-concat-nested-namespaces]

    nested namespaces can be concatenated

       42 | namespace geode
          | ^~~~~~~~~~~~~~~
       43 | {
          | ~
       44 |     namespace detail
          |     ~~~~~~~~~~~~~~~~
          |     namespace geode::detail
  • include/geode/io/mesh/detail/vtk_input.hpp:47:15: warning: [cppcoreguidelines-special-member-functions]

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

       47 |         class VTKInputImpl
          |               ^
  • include/geode/io/mesh/detail/vtk_input.hpp:62:13: error: [clang-diagnostic-error]

    unknown type name 'Percentage'

       62 |             Percentage is_loadable()
          |             ^
  • include/geode/io/mesh/detail/vtk_input.hpp:65:30: error: [clang-diagnostic-error]

    use of undeclared identifier 'Percentage'

       65 |                 std::vector< Percentage > percentages;
          |                              ^
  • include/geode/io/mesh/detail/vtk_input.hpp:72:28: error: [clang-diagnostic-error]

    use of undeclared identifier 'Percentage'

       72 |                     return Percentage{ 0 };
          |                            ^
  • include/geode/io/mesh/detail/vtk_input.hpp:72:38: error: [clang-diagnostic-error]

    expected ';' after return statement

       72 |                     return Percentage{ 0 };
          |                                      ^
          |                                      ;
  • include/geode/io/mesh/detail/vtk_input.hpp:80:24: error: [clang-diagnostic-error]

    use of undeclared identifier 'Percentage'

       80 |                 return Percentage{ value / nb_percentages };
          |                        ^
  • include/geode/io/mesh/detail/vtk_input.hpp:80:34: error: [clang-diagnostic-error]

    expected ';' after return statement

       80 |                 return Percentage{ value / nb_percentages };
          |                                  ^
          |                                  ;
  • include/geode/io/mesh/detail/vtk_input.hpp:100:30: error: [clang-diagnostic-error]

    use of undeclared identifier 'Percentage'

      100 |                 std::vector< Percentage >& percentages ) const = 0;
          |                              ^
  • include/geode/io/mesh/detail/vtk_input.hpp:127:24: error: [clang-diagnostic-error]

    use of undeclared identifier 'string_to_index'

      127 |                 return string_to_index(
          |                        ^
  • include/geode/io/mesh/detail/vtk_input.hpp:128:48: warning: [bugprone-suspicious-stringview-data-usage]

    result of a data() call may not be null terminated, provide size information to the callee to prevent potential issues

      128 |                     piece.attribute( attribute.data() ).value() );
          |                                      ~~~~~~~~~~^~~~
  • include/geode/io/mesh/detail/vtk_input.hpp:135:17: warning: [llvm-qualified-auto]

    'const auto format' can be declared as 'const auto *const format'

      135 |                 const auto format = data.attribute( "format" ).value();
          |                 ^~~~~~~~~~
          |                 const auto *const 
  • include/geode/io/mesh/detail/vtk_input.hpp:140:17: warning: [llvm-else-after-return]

    do not use 'else' after 'return'

      140 |                 else
          |                 ^~~~
      141 |                 {
          |                 ~
      142 |                     const auto data_string =
          |                     ~~~~~~~~~~~~~~~~~~~~~~~~
      143 |                         absl::StripAsciiWhitespace( data.child_value() );
          |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      144 |                     if( match( format, "ascii" ) )
          |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      145 |                     {
          |                     ~
      146 |                         auto string = to_string( data_string );
          |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      147 |                         absl::RemoveExtraAsciiWhitespace( &string );
          |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      148 |                         return read_ascii_integer_data_array< T >( string );
          |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      149 |                     }
          |                     ~
      150 |                     return decode< T >( data_string );
          |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      151 |                 }
          |                 ~
  • include/geode/io/mesh/detail/vtk_input.hpp:158:17: warning: [llvm-qualified-auto]

    'const auto format' can be declared as 'const auto *const format'

      158 |                 const auto format = data.attribute( "format" ).value();
          |                 ^~~~~~~~~~
          |                 const auto *const 
  • include/geode/io/mesh/detail/vtk_input.hpp:163:17: warning: [llvm-else-after-return]

    do not use 'else' after 'return'

      163 |                 else
          |                 ^~~~
      164 |                 {
          |                 ~
      165 |                     const auto data_string =
          |                     ~~~~~~~~~~~~~~~~~~~~~~~~
      166 |                         absl::StripAsciiWhitespace( data.child_value() );
          |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      167 |                     if( match( format, "ascii" ) )
          |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      168 |                     {
          |                     ~
      169 |                         auto string = to_string( data_string );
          |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      170 |                         absl::RemoveExtraAsciiWhitespace( &string );
          |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      171 |                         return read_ascii_uint8_data_array< T >( string );
          |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      172 |                     }
          |                     ~
      173 |                     return decode< T >( data_string );
          |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      174 |                 }
          |                 ~
  • include/geode/io/mesh/detail/vtk_input.hpp:181:17: warning: [llvm-qualified-auto]

    'const auto format' can be declared as 'const auto *const format'

      181 |                 const auto format = data.attribute( "format" ).value();
          |                 ^~~~~~~~~~
          |                 const auto *const 
  • include/geode/io/mesh/detail/vtk_input.hpp:186:17: warning: [llvm-else-after-return]

    do not use 'else' after 'return'

      186 |                 else
          |                 ^~~~
      187 |                 {
          |                 ~
      188 |                     const auto data_string =
          |                     ~~~~~~~~~~~~~~~~~~~~~~~~
      189 |                         absl::StripAsciiWhitespace( data.child_value() );
          |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      190 |                     if( match( format, "ascii" ) )
          |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      191 |                     {
          |                     ~
      192 |                         auto string = to_string( data_string );
          |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      193 |                         absl::RemoveExtraAsciiWhitespace( &string );
          |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      194 |                         return read_ascii_float_data_array< T >( string );
          |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      195 |                     }
          |                     ~
      196 |                     return decode< T >( data_string );
          |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      197 |                 }
          |                 ~
  • include/geode/io/mesh/detail/vtk_input.hpp:212:18: warning: [readability-function-size]

    function 'build_attribute' exceeds recommended size/complexity thresholds

      212 |             void build_attribute( AttributeManager& manager,
          |                  ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/mesh/detail/vtk_input.hpp:212:18: note: 5 parameters (threshold 4)
  • include/geode/io/mesh/detail/vtk_input.hpp:261:18: warning: [readability-function-cognitive-complexity]

    function 'read_attribute_data' has cognitive complexity of 12 (threshold 10)

      261 |             void read_attribute_data( const pugi::xml_node& data,
          |                  ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/mesh/detail/vtk_input.hpp:268:17: note: +1, including nesting penalty of 0, nesting level increased to 1
      268 |                 if( const auto data_nb_components =
          |                 ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/mesh/detail/vtk_input.hpp:274:17: note: +1, including nesting penalty of 0, nesting level increased to 1
      274 |                 if( match( data_array_type, "Float64" )
          |                 ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/mesh/detail/vtk_input.hpp:275:21: note: +1
      275 |                     || match( data_array_type, "Float32" ) )
          |                     ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/mesh/detail/vtk_input.hpp:283:22: note: +1, nesting level increased to 1
      283 |                 else if( match( data_array_type, "Int64" )
          |                      ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/mesh/detail/vtk_input.hpp:286:26: note: +1
      286 |                          || match( data_array_type, "UInt64" ) )
          |                          ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/mesh/detail/vtk_input.hpp:290:21: note: +2, including nesting penalty of 1, nesting level increased to 2
      290 |                     if( min_value >= 0
          |                     ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/mesh/detail/vtk_input.hpp:291:25: note: +1
      291 |                         && max_value < std::numeric_limits< index_t >::max() )
          |                         ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/mesh/detail/vtk_input.hpp:299:21: note: +1, nesting level increased to 2
      299 |                     else
          |                     ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/mesh/detail/vtk_input.hpp:308:22: note: +1, nesting level increased to 1
      308 |                 else if( match( data_array_type, "Int8" ) )
          |                      ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/mesh/detail/vtk_input.hpp:317:22: note: +1, nesting level increased to 1
      317 |                 else if( match( data_array_type, "UInt8" ) )
          |                      ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/mesh/detail/vtk_input.hpp:327:17: note: +1, nesting level increased to 1
      327 |                 else
          |                 ^
  • include/geode/io/mesh/detail/vtk_input.hpp:265:17: warning: [llvm-qualified-auto]

    'const auto data_array_name' can be declared as 'const auto *const data_array_name'

      265 |                 const auto data_array_name = data.attribute( "Name" ).value();
          |                 ^~~~~~~~~~
          |                 const auto *const 
  • include/geode/io/mesh/detail/vtk_input.hpp:266:17: warning: [llvm-qualified-auto]

    'const auto data_array_type' can be declared as 'const auto *const data_array_type'

      266 |                 const auto data_array_type = data.attribute( "type" ).value();
          |                 ^~~~~~~~~~
          |                 const auto *const 
  • include/geode/io/mesh/detail/vtk_input.hpp:302:54: warning: [google-runtime-int]

    consider replacing 'long' with 'int64'

      302 |                             read_integer_data_array< long int >( data );
          |                                                      ^
  • include/geode/io/mesh/detail/vtk_input.hpp:303:42: warning: [google-runtime-int]

    consider replacing 'long' with 'int64'

      303 |                         build_attribute< long int >( attribute_manager,
          |                                          ^
  • include/geode/io/mesh/detail/vtk_input.hpp:375:18: warning: [readability-function-size]

    function 'create_attribute' exceeds recommended size/complexity thresholds

      375 |             void create_attribute( AttributeManager& manager,
          |                  ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/mesh/detail/vtk_input.hpp:375:18: note: 6 parameters (threshold 4)
  • include/geode/io/mesh/detail/vtk_input.hpp:397:37: warning: [readability-identifier-length]

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

      397 |                     for( const auto c : Range{ nb_components } )
          |                                     ^
  • include/geode/io/mesh/detail/vtk_input.hpp:399:56: warning: [readability-math-missing-parentheses]

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

      399 |                         const auto& new_value = values[nb_components * i + c];
          |                                                        ^~~~~~~~~~~~~~~~~
          |                                                        (                )
  • include/geode/io/mesh/detail/vtk_input.hpp:421:17: warning: [llvm-qualified-auto]

    'const auto compressor' can be declared as 'const auto *const compressor'

      421 |                 const auto compressor = root_.attribute( "compressor" ).value();
          |                 ^~~~~~~~~~
          |                 const auto *const 
  • include/geode/io/mesh/detail/vtk_input.hpp:473:39: warning: [cppcoreguidelines-pro-type-reinterpret-cast]

    do not use reinterpret_cast

      473 |                 const auto nb_data = *reinterpret_cast< const UInt* >(
          |                                       ^
  • include/geode/io/mesh/detail/vtk_input.hpp:480:37: warning: [cppcoreguidelines-pro-type-reinterpret-cast]

    do not use reinterpret_cast

      480 |                 const auto values = reinterpret_cast< const T* >(
          |                                     ^
  • include/geode/io/mesh/detail/vtk_input.hpp:501:37: warning: [cppcoreguidelines-avoid-magic-numbers]

    1. is a magic number; consider replacing it with a named constant
      501 |                         nb_values * 8. * sizeof( UInt ) / ( 6. * 4. ) ) );
          |                                     ^
  • include/geode/io/mesh/detail/vtk_input.hpp:501:61: warning: [cppcoreguidelines-avoid-magic-numbers]

    1. is a magic number; consider replacing it with a named constant
      501 |                         nb_values * 8. * sizeof( UInt ) / ( 6. * 4. ) ) );
          |                                                             ^
  • include/geode/io/mesh/detail/vtk_input.hpp:501:66: warning: [cppcoreguidelines-avoid-magic-numbers]

    1. is a magic number; consider replacing it with a named constant
      501 |                         nb_values * 8. * sizeof( UInt ) / ( 6. * 4. ) ) );
          |                                                                  ^
  • include/geode/io/mesh/detail/vtk_input.hpp:511:21: warning: [cppcoreguidelines-pro-type-reinterpret-cast]

    do not use reinterpret_cast

      511 |                     reinterpret_cast< const UInt* >(
          |                     ^
  • include/geode/io/mesh/detail/vtk_input.hpp:534:21: warning: [cppcoreguidelines-pro-type-reinterpret-cast]

    do not use reinterpret_cast

      534 |                     reinterpret_cast< const UInt* >(
          |                     ^
  • include/geode/io/mesh/detail/vtk_input.hpp:539:33: warning: [readability-identifier-length]

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

      539 |                 for( const auto b : Range{ nb_data_blocks } )
          |                                 ^
  • include/geode/io/mesh/detail/vtk_input.hpp:551:17: warning: [llvm-qualified-auto]

    'const auto compressed_data_bytes' can be declared as 'const auto *const compressed_data_bytes'

      551 |                 const auto compressed_data_bytes =
          |                 ^~~~~~~~~~
          |                 const auto *const 
  • include/geode/io/mesh/detail/vtk_input.hpp:552:21: warning: [cppcoreguidelines-pro-type-reinterpret-cast]

    do not use reinterpret_cast

      552 |                     reinterpret_cast< const unsigned char* >(
          |                     ^
  • include/geode/io/mesh/detail/vtk_input.hpp:560:33: warning: [readability-identifier-length]

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

      560 |                 for( const auto b : Range{ nb_data_blocks } )
          |                                 ^
  • include/geode/io/mesh/detail/vtk_input.hpp:564:21: warning: [google-runtime-int]

    consider replacing 'unsigned long' with 'uint64'

      564 |                     unsigned long decompressed_data_length =
          |                     ^
  • include/geode/io/mesh/detail/vtk_input.hpp:577:41: warning: [cppcoreguidelines-pro-type-reinterpret-cast]

    do not use reinterpret_cast

      577 |                     const auto values = reinterpret_cast< const T* >(
          |                                         ^
  • include/geode/io/mesh/detail/vtk_input.hpp:608:32: warning: [readability-identifier-length]

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

      608 |                     const auto ok = ( *string_convert )( string, &value );
          |                                ^
  • include/geode/io/mesh/detail/vtk_input.hpp:633:25: warning: [cert-err34-c]

    'atoi' used to convert a string to an integer value, but function will not report conversion errors; consider using 'strtol' instead

      633 |                         std::atoi( to_string( string ).c_str() ) );
          |                         ^
  • include/geode/io/model/detail/vtm_output.hpp:57:1: warning: [modernize-concat-nested-namespaces]

    nested namespaces can be concatenated

       57 | namespace geode
          | ^~~~~~~~~~~~~~~
       58 | {
          | ~
       59 |     namespace detail
          |     ~~~~~~~~~~~~~~~~
          |     namespace geode::detail
  • include/geode/io/model/detail/vtm_output.hpp:112:13: warning: [modernize-use-nodiscard]

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

      112 |             std::string_view prefix() const
          |             ^
          |             [[nodiscard]] 
  • include/geode/io/model/detail/vtm_output.hpp:117:13: warning: [modernize-use-nodiscard]

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

      117 |             std::string_view files_directory() const
          |             ^
          |             [[nodiscard]] 
  • include/geode/io/model/detail/vtm_output.hpp:144:34: warning: [readability-identifier-length]

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

      144 |                 for( const auto& id : corner_ids )
          |                                  ^
  • include/geode/io/model/detail/vtm_output.hpp:201:34: warning: [readability-identifier-length]

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

      201 |                 for( const auto& id : line_ids )
          |                                  ^
  • include/geode/io/model/detail/vtm_output.hpp:242:18: warning: [readability-function-cognitive-complexity]

    function 'write_surfaces' has cognitive complexity of 12 (threshold 10)

      242 |             void write_surfaces( pugi::xml_node& surface_block )
          |                  ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/model/detail/vtm_output.hpp:252:17: note: +1, including nesting penalty of 0, nesting level increased to 1
      252 |                 for( const auto& surface : this->mesh().surfaces() )
          |                 ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/model/detail/vtm_output.hpp:258:17: note: +1, including nesting penalty of 0, nesting level increased to 1
      258 |                 for( const auto& id : surface_ids )
          |                 ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/model/detail/vtm_output.hpp:267:21: note: +2, including nesting penalty of 1, nesting level increased to 2
      267 |                     if( is_new )
          |                     ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/model/detail/vtm_output.hpp:272:21: note: +1, nesting level increased to 2
      272 |                     else
          |                     ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/model/detail/vtm_output.hpp:284:54: note: nesting level increased to 2
      284 |                     tasks[counter++] = async::spawn( [&surface, this] {
          |                                                      ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/model/detail/vtm_output.hpp:288:25: note: +3, including nesting penalty of 2, nesting level increased to 3
      288 |                         if( const auto* triangulated = dynamic_cast<
          |                         ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/model/detail/vtm_output.hpp:294:30: note: +1, nesting level increased to 3
      294 |                         else if( const auto* polygonal = dynamic_cast<
          |                              ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/model/detail/vtm_output.hpp:300:30: note: +1, nesting level increased to 3
      300 |                         else if( const auto* grid =
          |                              ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/model/detail/vtm_output.hpp:306:25: note: +1, nesting level increased to 3
      306 |                         else
          |                         ^
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/model/detail/vtm_output.hpp:318:17: note: +1, including nesting penalty of 0, nesting level increased to 1
      318 |                 for( auto& task : all_tasks.get() )
          |                 ^
  • include/geode/io/model/detail/vtm_output.hpp:258:34: warning: [readability-identifier-length]

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

      258 |                 for( const auto& id : surface_ids )
          |                                  ^
  • include/geode/io/model/internal/msh_common.hpp:60:1: warning: [modernize-concat-nested-namespaces]

    nested namespaces can be concatenated

       60 | namespace geode
          | ^~~~~~~~~~~~~~~
       61 | {
          | ~
       62 |     namespace internal
          |     ~~~~~~~~~~~~~~~~~~
          |     namespace geode::internal
  • include/geode/io/model/internal/msh_common.hpp:64:16: warning: [cppcoreguidelines-pro-type-member-init]

    constructor does not initialize these fields: id

       64 |         struct GmshElementID
          |                ^
       65 |         {
       66 |             GmshElementID() = default;
       67 |             GmshElementID(
       68 |                 geode::ComponentType gmsh_type, geode::index_t gmsh_id )
       69 |                 : type( std::move( gmsh_type ) ), id( gmsh_id )
       70 |             {
       71 |             }
       72 | 
       73 |             bool operator==( const GmshElementID& other ) const
       74 |             {
       75 |                 return type == other.type && id == other.id;
       76 |             }
       77 |             geode::ComponentType type;
       78 |             geode::index_t id;
          |                              
          |                              {}
  • include/geode/io/model/internal/msh_common.hpp:97:1: warning: [modernize-concat-nested-namespaces]

    nested namespaces can be concatenated

       97 | namespace geode
          | ^~~~~~~~~~~~~~~
       98 | {
          | ~
       99 |     namespace internal
          |     ~~~~~~~~~~~~~~~~~~
          |     namespace geode::internal
  • include/geode/io/model/internal/msh_common.hpp:107:13: warning: [modernize-use-nodiscard]

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

      107 |             bool contains_elementary_id(
          |             ^
          |             [[nodiscard]] 
  • include/geode/io/model/internal/msh_common.hpp:114:13: warning: [modernize-use-nodiscard]

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

      114 |             bool contains_physical_id( const GmshElementID& physical_id ) const
          |             ^
          |             [[nodiscard]] 
  • include/geode/io/model/internal/msh_common.hpp:122:15: warning: [cppcoreguidelines-special-member-functions]

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

      122 |         class GMSHElement
          |               ^
  • include/geode/io/model/internal/msh_common.hpp:126:17: warning: [bugprone-easily-swappable-parameters]

    2 adjacent parameters of 'GMSHElement' of similar type ('geode::index_t') are easily swapped by mistake

      126 |                 geode::index_t elementary_entity_id,
          |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      127 |                 geode::index_t nb_vertices,
          |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/model/internal/msh_common.hpp:126:32: note: the first parameter in the range is 'elementary_entity_id'
      126 |                 geode::index_t elementary_entity_id,
          |                                ^~~~~~~~~~~~~~~~~~~~
    /__w/OpenGeode-IO/OpenGeode-IO/include/geode/io/model/internal/msh_common.hpp:127:32: note: the last parameter in the range is 'nb_vertices'
      127 |                 geode::index_t nb_vertices,
          |                                ^~~~~~~~~~~
  • include/geode/io/model/internal/msh_common.hpp:129:40: warning: [hicpp-move-const-arg]

    std::move of the variable 'physical_entity_id' of the trivially-copyable type 'geode::index_t' (aka 'unsigned int') has no effect; remove std::move()

      129 |                 : physical_entity_id_( std::move( physical_entity_id ) ),
          |                                        ^~~~~~~~~~                    ~
  • include/geode/io/model/internal/msh_common.hpp:130:42: warning: [hicpp-move-const-arg]

    std::move of the variable 'elementary_entity_id' of the trivially-copyable type 'geode::index_t' (aka 'unsigned int') has no effect; remove std::move()

      130 |                   elementary_entity_id_( std::move( elementary_entity_id ) ),
          |                                          ^~~~~~~~~~                      ~
  • include/geode/io/model/internal/msh_common.hpp:134:17: error: [clang-diagnostic-error]

    use of undeclared identifier 'OpenGeodeIOModelException'; did you mean 'OpenGeodeModelException'?

      134 |                 OpenGeodeIOModelException::check_exception(
          |                 ^~~~~~~~~~~~~~~~~~~~~~~~~
          |                 OpenGeodeModelException
    /__w/OpenGeode-IO/OpenGeode-IO/OpenGeode-0.0.0-ubuntu/include/geode/model/common.hpp:33:5: note: 'OpenGeodeModelException' declared here
       33 |     OPENGEODE_LIBRARY( opengeode_model_api, OpenGeode, Model );
          |     ^
    /__w/OpenGeode-IO/OpenGeode-IO/OpenGeode-0.0.0-ubuntu/include/geode/basic/library.hpp:75:22: note: expanded from macro 'OPENGEODE_LIBRARY'
       75 |     class export_api project_name##library_name##Exception                     \
          |                      ^
    note: expanded from here
  • include/geode/io/model/internal/msh_common.hpp:155:28: warning: [readability-make-member-function-const]

    method 'physical_entity_id' can be made const

      155 |             geode::index_t physical_entity_id()
          |                            ^                   
          |                                                 const
  • include/geode/io/model/internal/msh_common.hpp:160:28: warning: [readability-make-member-function-const]

    method 'elementary_entity_id' can be made const

      160 |             geode::index_t elementary_entity_id()
          |                            ^                     
          |                                                   const
  • include/geode/io/model/internal/msh_common.hpp:179:33: warning: [readability-identifier-length]

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

      179 |                 for( const auto n : geode::Range{ nb_vertices() } )
          |                                 ^
  • include/geode/io/model/internal/msh_common.hpp:429:28: warning: [cppcoreguidelines-explicit-virtual-functions]

    'override' is redundant since the function is already declared 'final'

      429 |             geode::index_t create_gmsh_polyhedron( geode::BRepBuilder& builder,
          |                            ^
      430 |                 const uuid& block_uuid,
      431 |                 const std::vector< geode::index_t >& v_ids ) override final
          |                                                              ~~~~~~~~
  • include/geode/io/model/internal/msh_common.hpp:449:23: warning: [cppcoreguidelines-avoid-magic-numbers]

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

      449 |                       8, vertex_ids }
          |                       ^
  • include/geode/io/model/internal/msh_common.hpp:453:28: warning: [cppcoreguidelines-explicit-virtual-functions]

    'override' is redundant since the function is already declared 'final'

      453 |             geode::index_t create_gmsh_polyhedron( geode::BRepBuilder& builder,
          |                            ^
      454 |                 const uuid& block_uuid,
      455 |                 const std::vector< geode::index_t >& v_ids ) override final
          |                                                              ~~~~~~~~
  • include/geode/io/model/internal/msh_common.hpp:474:23: warning: [cppcoreguidelines-avoid-magic-numbers]

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

      474 |                       6, vertex_ids }
          |                       ^
  • include/geode/io/model/internal/msh_common.hpp:478:28: warning: [cppcoreguidelines-explicit-virtual-functions]

    'override' is redundant since the function is already declared 'final'

      478 |             geode::index_t create_gmsh_polyhedron( geode::BRepBuilder& builder,
          |                            ^
      479 |                 const uuid& block_uuid,
      480 |                 const std::vector< geode::index_t >& v_ids ) override final
          |                                                              ~~~~~~~~
  • include/geode/io/model/internal/msh_common.hpp:498:23: warning: [cppcoreguidelines-avoid-magic-numbers]

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

      498 |                       5, vertex_ids }
          |                       ^
  • include/geode/io/model/internal/msh_common.hpp:502:28: warning: [cppcoreguidelines-explicit-virtual-functions]

    'override' is redundant since the function is already declared 'final'

      502 |             geode::index_t create_gmsh_polyhedron( geode::BRepBuilder& builder,
          |                            ^
      503 |                 const uuid& block_uuid,
      504 |                 const std::vector< geode::index_t >& v_ids ) override final
          |                                                              ~~~~~~~~
  • include/geode/io/model/internal/msh_common.hpp:517:64: warning: [cppcoreguidelines-avoid-magic-numbers]

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

      517 |             GMSHElementFactory::register_creator< GMSHPoint >( 15 );
          |                                                                ^
  • include/geode/io/model/internal/msh_common.hpp:522:69: warning: [cppcoreguidelines-avoid-magic-numbers]

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

      522 |             GMSHElementFactory::register_creator< GMSHHexahedron >( 5 );
          |                                                                     ^
  • include/geode/io/model/internal/msh_common.hpp:523:64: warning: [cppcoreguidelines-avoid-magic-numbers]

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

      523 |             GMSHElementFactory::register_creator< GMSHPrism >( 6 );
          |                                                                ^
  • include/geode/io/model/internal/msh_common.hpp:524:66: warning: [cppcoreguidelines-avoid-magic-numbers]

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

      524 |             GMSHElementFactory::register_creator< GMSHPyramid >( 7 );
          |                                                                  ^
  • src/geode/io/mesh/assimp_input.cpp:58:54: warning: [readability-identifier-length]

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

       58 |             [&assimp_mesh, &builder]( geode::index_t v ) {
          |                                                      ^
  • src/geode/io/mesh/assimp_input.cpp:59:38: warning: [cppcoreguidelines-pro-bounds-pointer-arithmetic]

    do not use pointer arithmetic

       59 |                 const auto& vertex = assimp_mesh.mVertices[v];
          |                                      ^
  • src/geode/io/mesh/assimp_input.cpp:65:32: warning: [cppcoreguidelines-pro-bounds-pointer-arithmetic]

    do not use pointer arithmetic

       65 |             const auto& face = assimp_mesh.mFaces[p];
          |                                ^
  • src/geode/io/mesh/assimp_input.cpp:70:39: warning: [cppcoreguidelines-pro-bounds-pointer-arithmetic]

    do not use pointer arithmetic

       70 |                 polygon_vertices[i] = face.mIndices[i];
          |                                       ^
  • src/geode/io/mesh/assimp_input.cpp:79:1: warning: [modernize-concat-nested-namespaces]

    nested namespaces can be concatenated

       79 | namespace geode
          | ^~~~~~~~~~~~~~~
       80 | {
          | ~
       81 |     namespace internal
          |     ~~~~~~~~~~~~~~~~~~
          |     namespace geode::internal
  • src/geode/io/mesh/assimp_input.cpp:89:32: warning: [readability-implicit-bool-conversion]

    implicit conversion 'const aiScene *' -> 'bool'

       89 |             return Percentage{ assimp_scene ? 1. : 0. };
          |                                ^
          |                                (            != nullptr)
  • src/geode/io/mesh/assimp_input.cpp:108:39: warning: [readability-function-cognitive-complexity]

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

      108 |         void AssimpMeshInput< Mesh >::read_textures(
          |                                       ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/assimp_input.cpp:111:13: note: +1, including nesting penalty of 0, nesting level increased to 1
      111 |             for( const auto i : Range{ assimp_scene->mNumMeshes } )
          |             ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/assimp_input.cpp:114:17: note: +2, including nesting penalty of 1, nesting level increased to 2
      114 |                 if( !assimp_mesh.HasTextureCoords( 0 ) )
          |                 ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/assimp_input.cpp:122:17: note: +2, including nesting penalty of 1, nesting level increased to 2
      122 |                 for( const auto p : Range{ assimp_mesh.mNumFaces } )
          |                 ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/assimp_input.cpp:125:21: note: +3, including nesting penalty of 2, nesting level increased to 3
      125 |                     for( const auto v : LRange{ face.mNumIndices } )
          |                     ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/assimp_input.cpp:134:17: note: +2, including nesting penalty of 1, nesting level increased to 2
      134 |                 if( !material.second.empty() )
          |                 ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/assimp_input.cpp:141:21: note: +3, including nesting penalty of 2, nesting level increased to 3
      141 |                     catch( const OpenGeodeException& e )
          |                     ^
  • src/geode/io/mesh/assimp_input.cpp:113:44: warning: [cppcoreguidelines-pro-bounds-pointer-arithmetic]

    do not use pointer arithmetic

      113 |                 const auto& assimp_mesh = *assimp_scene->mMeshes[i];
          |                                            ^
  • src/geode/io/mesh/assimp_input.cpp:124:40: warning: [cppcoreguidelines-pro-bounds-pointer-arithmetic]

    do not use pointer arithmetic

      124 |                     const auto& face = assimp_mesh.mFaces[p];
          |                                        ^
  • src/geode/io/mesh/assimp_input.cpp:127:50: warning: [cppcoreguidelines-pro-bounds-pointer-arithmetic]

    do not use pointer arithmetic

      127 |                         const auto mesh_vertex = face.mIndices[v];
          |                                                  ^
  • src/geode/io/mesh/assimp_input.cpp:129:29: warning: [cppcoreguidelines-pro-bounds-pointer-arithmetic]

    do not use pointer arithmetic

      129 |                             assimp_mesh.mTextureCoords[0][mesh_vertex];
          |                             ^
  • src/geode/io/mesh/assimp_input.cpp:159:46: warning: [cppcoreguidelines-pro-bounds-pointer-arithmetic]

    do not use pointer arithmetic

      159 |                         build_mesh< Mesh >( *assimp_scene->mMeshes[i] );
          |                                              ^
  • src/geode/io/mesh/assimp_input.cpp:170:58: warning: [readability-function-cognitive-complexity]

    function 'merge_meshes' has cognitive complexity of 15 (threshold 10)

      170 |         std::unique_ptr< Mesh > AssimpMeshInput< Mesh >::merge_meshes()
          |                                                          ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/assimp_input.cpp:175:13: note: +1, including nesting penalty of 0, nesting level increased to 1
      175 |             for( const auto& surface : surfaces_ )
          |             ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/assimp_input.cpp:186:13: note: +1, including nesting penalty of 0, nesting level increased to 1
      186 |             for( const auto s : Indices{ surfaces_ } )
          |             ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/assimp_input.cpp:190:17: note: +2, including nesting penalty of 1, nesting level increased to 2
      190 |                 for( const auto name : manager.texture_names() )
          |                 ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/assimp_input.cpp:196:21: note: +3, including nesting penalty of 2, nesting level increased to 3
      196 |                     for( const auto p : Range{ mesh->nb_polygons() } )
          |                     ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/assimp_input.cpp:200:25: note: +4, including nesting penalty of 3, nesting level increased to 4
      200 |                         if( merged_polygon == NO_ID )
          |                         ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/assimp_input.cpp:204:25: note: +4, including nesting penalty of 3, nesting level increased to 4
      204 |                         for( const auto v :
          |                         ^
  • src/geode/io/mesh/assimp_input.cpp:186:29: warning: [readability-identifier-length]

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

      186 |             for( const auto s : Indices{ surfaces_ } )
          |                             ^
  • src/geode/io/mesh/assimp_input.cpp:224:17: warning: [llvm-qualified-auto]

    'const auto material' can be declared as 'auto *const material'

      224 |                 const auto material = assimp_scene->mMaterials[i];
          |                 ^~~~~~~~~~
          |                 auto *const 
  • src/geode/io/mesh/assimp_input.cpp:224:39: warning: [cppcoreguidelines-pro-bounds-pointer-arithmetic]

    do not use pointer arithmetic

      224 |                 const auto material = assimp_scene->mMaterials[i];
          |                                       ^
  • src/geode/io/mesh/assimp_input.cpp:234:26: warning: [readability-identifier-naming]

    invalid case style for variable 'Path'

      234 |                 aiString Path;
          |                          ^~~~
          |                          path
      235 |                 if( material->GetTexture( aiTextureType_DIFFUSE, 0, &Path,
          |                                                                      ~~~~
          |                                                                      path
      236 |                         nullptr, nullptr, nullptr, nullptr, nullptr )
      237 |                     == AI_SUCCESS )
      238 |                 {
      239 |                     materials_[i].second = absl::StrCat(
      240 |                         filepath_without_filename( file_ ).string(),
      241 |                         Path.C_Str() );
          |                         ~~~~
          |                         path
  • src/geode/io/mesh/csv_input_helpers.cpp:55:9: warning: [google-explicit-constructor]

    single-argument constructors must be marked explicit to avoid unintentional implicit conversions

       55 |         Impl( std::string_view filename )
          |         ^
          |         explicit 
  • src/geode/io/mesh/csv_input_helpers.cpp:129:36: warning: [readability-make-member-function-const]

    method 'split_line' can be made const

      129 |         std::vector< std::string > split_line( const std::string& line )
          |                                    ^                                    
          |                                                                          const
  • src/geode/io/mesh/csv_input_helpers.cpp:135:14: warning: [readability-function-cognitive-complexity]

    function 'set_attribute_on_vertex' has cognitive complexity of 16 (threshold 10)

      135 |         void set_attribute_on_vertex( const geode::index_t vertex_id,
          |              ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/csv_input_helpers.cpp:142:13: note: +1, including nesting penalty of 0, nesting level increased to 1
      142 |             if( vertex_id == 0 )
          |             ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/csv_input_helpers.cpp:144:17: note: +2, including nesting penalty of 1, nesting level increased to 2
      144 |                 for( const auto col : geode::Range{ line_values.size() } )
          |                 ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/csv_input_helpers.cpp:146:21: note: +3, including nesting penalty of 2, nesting level increased to 3
      146 |                     if( col == x_column_ || col == y_column_
          |                     ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/csv_input_helpers.cpp:147:25: note: +1
      147 |                         || col == z_column_ )
          |                         ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/csv_input_helpers.cpp:153:21: note: +3, including nesting penalty of 2, nesting level increased to 3
      153 |                     if( !absl::SimpleAtod( line_values[col], &value ) )
          |                     ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/csv_input_helpers.cpp:174:13: note: +1, including nesting penalty of 0, nesting level increased to 1
      174 |             for( const auto col : geode::Range{ line_values.size() } )
          |             ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/csv_input_helpers.cpp:176:17: note: +2, including nesting penalty of 1, nesting level increased to 2
      176 |                 if( col == x_column_ || col == y_column_ || col == z_column_ )
          |                 ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/csv_input_helpers.cpp:176:58: note: +1
      176 |                 if( col == x_column_ || col == y_column_ || col == z_column_ )
          |                                                          ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/csv_input_helpers.cpp:180:17: note: +2, including nesting penalty of 1, nesting level increased to 2
      180 |                 if( double_attrs.contains( col ) )
          |                 ^
  • src/geode/io/mesh/csv_input_helpers.cpp:135:14: warning: [readability-function-size]

    function 'set_attribute_on_vertex' exceeds recommended size/complexity thresholds

      135 |         void set_attribute_on_vertex( const geode::index_t vertex_id,
          |              ^
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/csv_input_helpers.cpp:135:14: note: 5 parameters (threshold 4)
  • src/geode/io/mesh/csv_input_helpers.cpp:135:14: warning: [readability-make-member-function-const]

    method 'set_attribute_on_vertex' can be made const

      135 |         void set_attribute_on_vertex( const geode::index_t vertex_id,
          |              ^
      136 |             const std::vector< std::string >& line_values,
      137 |             const std::vector< std::string >& headers,
      138 |             absl::flat_hash_map< index_t,
      139 |                 std::shared_ptr< VariableAttribute< double > > >& double_attrs,
      140 |             AttributeManager& attribute_manager )
          |                                                  
          |                                                   const
  • src/geode/io/mesh/csv_input_helpers.cpp:136:13: warning: [bugprone-easily-swappable-parameters]

    2 adjacent parameters of 'set_attribute_on_vertex' of similar type ('const std::vectorstd::string &') are easily swapped by mistake

      136 |             const std::vector< std::string >& line_values,
          |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      137 |             const std::vector< std::string >& headers,
          |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/csv_input_helpers.cpp:136:47: note: the first parameter in the range is 'line_values'
      136 |             const std::vector< std::string >& line_values,
          |                                               ^~~~~~~~~~~
    /__w/OpenGeode-IO/OpenGeode-IO/src/geode/io/mesh/csv_input_helpers.cpp:137:47: note: the last parameter in the range is 'headers'
      137 |             const std::vector< std::string >& headers,
          |                                               ^~~~~~~
  • src/geode/io/mesh/csv_input_helpers.cpp:151:32: warning: [performance-unnecessary-copy-initialization]

    the const qualified variable 'attribute_name' is copy-constructed from a const reference; consider making it a const reference

      151 |                     const auto attribute_name = headers.at( col );
          |                                ^
          |                               &
  • src/geode/io/mesh/csv_input_helpers.cpp:157:21: warning: [cppcoreguidelines-pro-type-member-init]

    uninitialized record type: 'default_values'

      157 |                     AttributeValues< double > default_values;
          |                     ^                                       
          |                                                             {}
  • src/geode/io/model/gid_output.cpp:64:34: warning: [bugprone-unchecked-optional-access]

    unchecked access to optional value

       64 |                                  attribute_ids.value().at( 0 ) );
          |                                  ^
  • src/geode/io/model/gid_output.cpp:81:34: warning: [bugprone-unchecked-optional-access]

    unchecked access to optional value

       81 |                                  attribute_ids.value().at( 0 ) );
          |                                  ^
  • src/geode/io/model/vtm_brep_output.cpp:86:30: warning: [readability-identifier-length]

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

       86 |             for( const auto& id : block_ids )
          |                              ^
  • src/geode/io/model/vtm_brep_output.cpp:160:1: warning: [modernize-concat-nested-namespaces]

    nested namespaces can be concatenated

      160 | namespace geode
          | ^~~~~~~~~~~~~~~
      161 | {
          | ~
      162 |     namespace detail
          |     ~~~~~~~~~~~~~~~~
          |     namespace geode::detail
      163 |     {
      164 |         std::vector< std::string > VTMBRepOutput::write(
      165 |             const BRep& brep ) const
      166 |         {
      167 |             VTMBRepOutputImpl impl{ filename(), brep };
      168 |             impl.write_file();
      169 |             return impl.files();
      170 |         }
      171 |     } // namespace detail
          |     ~~~~~~~~~~~~~~~~~~~~~
          |     } // namespace geode::detail
      172 | } // namespace geode
          | ~~~~~~~~~~~~~~~~~~~~
  • tests/image/test-raster-image.cpp:42:6: warning: [misc-use-internal-linkage]

    function 'test_jpg_from_gimp_input' can be made static or moved into an anonymous namespace to enforce internal linkage

       42 | void test_jpg_from_gimp_input()
          |      ^
          | static 
  • tests/image/test-raster-image.cpp:57:17: warning: [bugprone-unchecked-optional-access]

    unchecked access to optional value

       57 |                 attribute_ids.value().at( 0 ) );
          |                 ^
  • tests/image/test-raster-image.cpp:69:6: warning: [misc-use-internal-linkage]

    function 'test_jpg_from_paraview_input' can be made static or moved into an anonymous namespace to enforce internal linkage

       69 | void test_jpg_from_paraview_input()
          |      ^
          | static 
  • tests/image/test-raster-image.cpp:84:17: warning: [bugprone-unchecked-optional-access]

    unchecked access to optional value

       84 |                 attribute_ids.value().at( 0 ) );
          |                 ^

Have any feedback or feature suggestions? Share it here.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants