From d81b534bb2c09b52e5b18b236a87d7a7830cceca Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Sat, 10 Oct 2026 01:21:22 +0200 Subject: [PATCH] Fix clang-tidy 22 findings in unit-json_view.cpp and unit-json_view_builder.cpp Signed-off-by: Niels Lohmann --- tests/src/unit-json_view.cpp | 25 +++++++++++++------------ tests/src/unit-json_view_builder.cpp | 4 ++-- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/tests/src/unit-json_view.cpp b/tests/src/unit-json_view.cpp index 19d432650..b0c4212e7 100644 --- a/tests/src/unit-json_view.cpp +++ b/tests/src/unit-json_view.cpp @@ -66,7 +66,7 @@ struct oversized_input using value_type = char; std::size_t claimed; - const char* data() const + const char* data() const // NOLINT(readability-convert-member-functions-to-static): mimics a container { return "[1]"; } @@ -363,13 +363,13 @@ TEST_CASE("json_view") CHECK(json_document::parse(std::vector(text.begin(), text.end())).owns_source()); // a const rvalue cannot be moved from, and is not borrowed (it may be a // temporary): it is copied, as is a const rvalue of any container - const std::string const_text = text; + const std::string const_text = text; // NOLINT(performance-unnecessary-copy-initialization): the copy is the const rvalue under test const json_document from_const_rvalue = json_document::parse(std::move(const_text)); // NOLINT(performance-move-const-arg,hicpp-move-const-arg) CHECK(from_const_rvalue.owns_source()); CHECK(from_const_rvalue.source().data() != const_text.data()); CHECK(from_const_rvalue.root().materialize() == expected); json_document read_const_rvalue; - read_const_rvalue.read(std::move(const_text)); // NOLINT(performance-move-const-arg,hicpp-move-const-arg) + read_const_rvalue.read(std::move(const_text)); // NOLINT(performance-move-const-arg,hicpp-move-const-arg,bugprone-use-after-move,hicpp-invalid-access-moved) CHECK(read_const_rvalue.owns_source()); CHECK(read_const_rvalue.root().materialize() == expected); const std::vector const_chars(text.begin(), text.end()); @@ -744,7 +744,7 @@ TEST_CASE("json_view element access and iteration") }) { const std::string key(n, 'k'); - const json_document dk = json_document::parse("{\"" + key + "\":1,\"" + key + "x\":2,\"" + key + "\":3,\"" + key + "\":4}"); + const json_document dk = json_document::parse("{\"" + key + "\":1,\"" + key + "x\":2,\"" + key + "\":3,\"" + key + "\":4}"); // NOLINT(performance-inefficient-string-concatenation) CAPTURE(n) CHECK(dk.root()[key].materialize() == 1); CHECK(dk.root().at(key).materialize() == 1); @@ -1177,19 +1177,19 @@ TEST_CASE("json_view values") switch (i % 5) // NOLINT(hicpp-multiway-paths-covered) { case 0: - std::snprintf(buf.data(), buf.size(), "%.17g", d); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + static_cast(std::snprintf(buf.data(), buf.size(), "%.17g", d)); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) break; case 1: - std::snprintf(buf.data(), buf.size(), "%.15g", d); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + static_cast(std::snprintf(buf.data(), buf.size(), "%.15g", d)); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) break; case 2: - std::snprintf(buf.data(), buf.size(), "%.3e", d); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + static_cast(std::snprintf(buf.data(), buf.size(), "%.3e", d)); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) break; case 3: - std::snprintf(buf.data(), buf.size(), "%.25g", d); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + static_cast(std::snprintf(buf.data(), buf.size(), "%.25g", d)); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) break; default: - std::snprintf(buf.data(), buf.size(), "%.0f", d); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + static_cast(std::snprintf(buf.data(), buf.size(), "%.0f", d)); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) break; } tokens.emplace_back(buf.data()); @@ -1500,10 +1500,10 @@ TEST_CASE("json_view dump") { chars += "\xC3\xA9"; } - const json_document d = json_document::parse("{\"a\":\"" + chars + R"(","k\n":1})"); + const json_document d = json_document::parse(R"({"a":")" + chars + R"(","k\n":1})"); const json expected = json::parse("\"" + chars + "\""); CHECK(d.root()["a"].dump(-1, ' ', true) == expected.dump(-1, ' ', true)); - CHECK(d.root()["a"].dump(-1, ' ', true).size() == 2 + 5000 * 6); + CHECK(d.root()["a"].dump(-1, ' ', true).size() == 2 + (5000 * 6)); } SECTION("streams and discarded views") @@ -1595,7 +1595,7 @@ TEST_CASE("json_view comparison") // discarded values compare as basic_json's do const json discarded(json::value_t::discarded); CHECK((json_view() == json_view()) == (discarded == discarded)); // NOLINT(readability-container-size-empty): operator== is tested - CHECK((json_view() == discarded) == (discarded == discarded)); + CHECK((json_view() == discarded) == (discarded == discarded)); // NOLINT(readability-container-size-empty) const json_document null_document = json_document::parse("null"); CHECK(!(json_view() == null_document.root())); // NOLINT(readability-container-size-empty) CHECK(!(null_document.root() == discarded)); @@ -1684,6 +1684,7 @@ TEST_CASE("json_view large objects") ordered.push_back(keys[i]); } std::vector result; + result.reserve(ordered.size()); for (std::size_t i = 0; i < ordered.size(); ++i) { result.push_back({ordered[i], i}); diff --git a/tests/src/unit-json_view_builder.cpp b/tests/src/unit-json_view_builder.cpp index 8b50a1599..320d4dde9 100644 --- a/tests/src/unit-json_view_builder.cpp +++ b/tests/src/unit-json_view_builder.cpp @@ -302,7 +302,7 @@ TEST_CASE("json_view builder") { "1e39", "-1e39", "3.4028235e38", "-3.4028235e38", "3.4028236e38", "-3.4028236e38", "3.4028234663852886e38", "1e38", "340282356779733661637539395458142568448", "340282356779733661637539395458142568447.99", "0.00034028236e42", - "[1.5e38, 3.5e38]", "{\"a\": 1e-50, \"b\": 1e39}" + "[1.5e38, 3.5e38]", R"({"a": 1e-50, "b": 1e39})" }) { CAPTURE(text) @@ -419,7 +419,7 @@ TEST_CASE("json_view builder") }) { CAPTURE(name) - std::ifstream f(std::string(TEST_DATA_DIRECTORY) + name, std::ios::binary); + const std::ifstream f(std::string(TEST_DATA_DIRECTORY) + name, std::ios::binary); std::stringstream ss; ss << f.rdbuf(); const std::string text = ss.str();