diff --git a/cmake/common/clang-tidy.json b/cmake/common/clang-tidy.json index afa90899d..ac5bb2b37 100644 --- a/cmake/common/clang-tidy.json +++ b/cmake/common/clang-tidy.json @@ -1,5 +1,5 @@ { - "Checks": "-*, bugprone-*, -bugprone-easily-swappable-parameters,-bugprone-unchecked-optional-access, concurrency-*, cppcoreguidelines-avoid-const-or-ref-data-members, modernize-*, performance-*, portability-*", + "Checks": "-*, bugprone-*, -bugprone-easily-swappable-parameters,-bugprone-unchecked-optional-access, concurrency-*,cppcoreguidelines-pro-bounds-pointer-arithmetic, cppcoreguidelines-avoid-const-or-ref-data-members, modernize-*, performance-*, portability-*", "WarningsAsErrors": "*", "FormatStyle": "none", "UseColor": true diff --git a/src/core/json/include/sourcemeta/core/json_hash.h b/src/core/json/include/sourcemeta/core/json_hash.h index 5818b8423..b0613263a 100644 --- a/src/core/json/include/sourcemeta/core/json_hash.h +++ b/src/core/json/include/sourcemeta/core/json_hash.h @@ -52,6 +52,7 @@ template struct PropertyHashJSON { hash_type result; assert(!value.empty()); // Copy starting a byte 2 + // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-pointer-arithmetic) std::memcpy(reinterpret_cast(&result) + 1, value.data(), size); return result; } diff --git a/src/core/yaml/yaml.cc b/src/core/yaml/yaml.cc index a307a68b7..60d7e8044 100644 --- a/src/core/yaml/yaml.cc +++ b/src/core/yaml/yaml.cc @@ -5,6 +5,7 @@ #include #include +#include // std::span #include // std::ostringstream, std::istringstream #include // std::string_view @@ -52,9 +53,10 @@ auto yaml_node_to_json(yaml_node_t *const node, yaml_document_t *const document) case YAML_SEQUENCE_NODE: { auto result{sourcemeta::core::JSON::make_array()}; - for (yaml_node_item_t *item = node->data.sequence.items.start; - item < node->data.sequence.items.top; ++item) { - yaml_node_t *const child = yaml_document_get_node(document, *item); + auto item_span = std::span( + node->data.sequence.items.start, node->data.sequence.items.top); + for (auto item : item_span) { + const auto child = yaml_document_get_node(document, item); result.push_back(yaml_node_to_json(child, document)); } @@ -63,12 +65,11 @@ auto yaml_node_to_json(yaml_node_t *const node, yaml_document_t *const document) case YAML_MAPPING_NODE: { auto result{sourcemeta::core::JSON::make_object()}; - for (yaml_node_pair_t *pair = node->data.mapping.pairs.start; - pair < node->data.mapping.pairs.top; ++pair) { - yaml_node_t *const key_node = - yaml_document_get_node(document, pair->key); - yaml_node_t *const value_node = - yaml_document_get_node(document, pair->value); + auto pair_span = std::span( + node->data.mapping.pairs.start, node->data.mapping.pairs.top); + for (auto pair : pair_span) { + const auto key_node = yaml_document_get_node(document, pair.key); + const auto value_node = yaml_document_get_node(document, pair.value); if (key_node && key_node->type == YAML_SCALAR_NODE) { result.assign(reinterpret_cast(key_node->data.scalar.value), yaml_node_to_json(value_node, document));