mirror of
https://github.com/nlohmann/json.git
synced 2026-10-05 06:00:29 +00:00
* Fix CI configuration broken by recent merges and tool updates - gcc_flags.cmake: drop -Wexperimental-fmv-target, which GCC 16 accepts only on aarch64; amd64 rejects it, so every GCC job failed while checking the compiler. - ci_get_cmake: add VERBATIM so the checksum pipeline is passed to the shell intact (the unescaped `$'` broke the generated Makefile and build.ninja, failing ci_cmake_flags and ci_module_cpp20); match the SHA-256 entry case-insensitively, as CMake 3.5.0 lists the archive as "Linux-x86_64"; and unpack with --strip-components, as that archive's top-level directory is spelled "Linux" too. - ci_single_binaries: compile json.hpp's TU without IWYU's --error, as the comment above the gate already intends. - tests: restore -Wno-deprecated-declarations for all non-MSVC compilers (#5737 kept it for GCC only), as several tests call deprecated functions on purpose; include thirdparty/fifo_map as SYSTEM. - .clang-tidy: set misc-use-internal-linkage.AnalyzeTypes to false; clang-tidy 22.1 extended the check to classes and enums and flagged 100 test helper types. Signed-off-by: Niels Lohmann <mail@nlohmann.me> * Fix library warnings and a JSON_DIAGNOSTICS parent bug - binary_reader: pass integers to sax->number_integer() through conditional_static_cast<number_integer_t>, making the existing narrowing for a narrow number_integer_t explicit (MSVC C4244 and GCC -Wconversion/-Warith-conversion with the int16_t test from #5694); mark two Infer DEAD_STORE false positives with @infer-ignore. - to_json: set the parents of an array built from a C++20 range view after all elements are in place; a reallocating push_back moved the earlier elements and left their parent pointers stale, failing the JSON_DIAGNOSTICS invariant assertion. - json.hpp: suppress MSVC C4127 for the new is_ordered_map check in diff(), like the three existing ones; spell out std::formatter::parse's return and iterator types for clang-tidy 22.1. - number_parse: make the Eisel-Lemire digit counter unsigned (GCC -Wstrict-overflow). - string_utils: take encode_utf8's callable by const reference (cppcoreguidelines-missing-std-forward) and drop a \u from its doc comment (-Wdocumentation-unknown-command). - ordered_map: include <memory> for std::allocator (cpplint). Ran make amalgamate. Signed-off-by: Niels Lohmann <mail@nlohmann.me> * Fix tests failing in CI on develop - unit-allocator: skip the #5640 test under MSVC STL iterator debugging, where containers allocate a debug proxy in noexcept move constructors and a failing allocation terminates; move a decrement out of an if condition (bugprone-inc-dec-in-conditions). - unit-conversions: expect the "(/0)" path with JSON_DIAGNOSTICS; compare strict enums via get<>() rather than through the noexcept operator==(ScalarType, json), which bugprone-exception-escape flags. - unit-alt-string: suppress -Wexit-time-destructors for the strict enum macro and misc-use-internal-linkage for its enum. - unit-bjdata: call the static lookup functions through the type and pass unsigned char (-Wsign-conversion on amd64). - Mark Infer false positives with @infer-ignore in unit-diagnostics, unit-pointer_access, unit-udt, and unit-conversions. - Smaller clang-tidy 22.1 findings in unit-class_parser, unit-constructor2, unit-custom-base-class, unit-locale-cpp, and unit-noexcept. Signed-off-by: Niels Lohmann <mail@nlohmann.me> --------- Signed-off-by: Niels Lohmann <mail@nlohmann.me>
95 lines
3.9 KiB
YAML
95 lines
3.9 KiB
YAML
# bugprone-use-after-move (hicpp-invalid-access-moved is its alias) still flags
|
|
# the basic_json move constructor, which forwards the whole object to its base
|
|
# class (#5724), and two forwards in the error-message construction of
|
|
# at(KeyType&&) (json.hpp, both overloads: find(std::forward<KeyType>(key))
|
|
# followed by string_t(std::forward<KeyType>(key)) in the throw), which #5689
|
|
# rewrites. Re-enable both checks once those changes have landed.
|
|
# portability-avoid-pragma-once: kept disabled on purpose. #pragma once is accepted
|
|
# by every supported compiler, and tools/amalgamate/amalgamate.py strips it from
|
|
# single_include, so there is nothing left to fix here.
|
|
|
|
Checks: '*,
|
|
|
|
-bugprone-use-after-move,
|
|
-hicpp-invalid-access-moved,
|
|
|
|
-altera-id-dependent-backward-branch,
|
|
-altera-struct-pack-align,
|
|
-altera-unroll-loops,
|
|
-android-cloexec-fopen,
|
|
-boost-use-ranges,
|
|
-bugprone-easily-swappable-parameters,
|
|
-cert-err58-cpp,
|
|
-clang-analyzer-webkit.NoUncountedMemberChecker,
|
|
-concurrency-mt-unsafe,
|
|
-cppcoreguidelines-avoid-const-or-ref-data-members,
|
|
-cppcoreguidelines-avoid-do-while,
|
|
-cppcoreguidelines-avoid-goto,
|
|
-cppcoreguidelines-avoid-magic-numbers,
|
|
-cppcoreguidelines-avoid-non-const-global-variables,
|
|
-cppcoreguidelines-macro-usage,
|
|
-cppcoreguidelines-pro-bounds-avoid-unchecked-container-access,
|
|
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
|
|
-cppcoreguidelines-pro-bounds-constant-array-index,
|
|
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
|
|
-cppcoreguidelines-pro-type-reinterpret-cast,
|
|
-cppcoreguidelines-pro-type-union-access,
|
|
-cppcoreguidelines-rvalue-reference-param-not-moved,
|
|
-cppcoreguidelines-virtual-class-destructor,
|
|
-fuchsia-default-arguments-calls,
|
|
-fuchsia-default-arguments-declarations,
|
|
-fuchsia-overloaded-operator,
|
|
-google-explicit-constructor,
|
|
-google-readability-function-size,
|
|
-google-runtime-float,
|
|
-google-runtime-int,
|
|
-hicpp-avoid-goto,
|
|
-hicpp-explicit-conversions,
|
|
-hicpp-function-size,
|
|
-hicpp-no-array-decay,
|
|
-hicpp-no-assembler,
|
|
-hicpp-signed-bitwise,
|
|
-hicpp-uppercase-literal-suffix,
|
|
-llvm-header-guard,
|
|
-llvm-include-order,
|
|
-llvm-prefer-static-over-anonymous-namespace,
|
|
-llvm-use-ranges,
|
|
-llvmlibc-*,
|
|
-misc-use-anonymous-namespace,
|
|
-misc-confusable-identifiers,
|
|
-misc-include-cleaner,
|
|
-misc-no-recursion,
|
|
-misc-non-private-member-variables-in-classes,
|
|
-modernize-concat-nested-namespaces,
|
|
-modernize-type-traits,
|
|
-modernize-use-constraints,
|
|
-modernize-use-designated-initializers,
|
|
-modernize-use-nodiscard,
|
|
-modernize-use-ranges,
|
|
-modernize-use-std-numbers,
|
|
-modernize-use-trailing-return-type,
|
|
-performance-enum-size,
|
|
-portability-avoid-pragma-once,
|
|
-readability-function-cognitive-complexity,
|
|
-readability-function-size,
|
|
-readability-identifier-length,
|
|
-readability-magic-numbers,
|
|
-readability-redundant-access-specifiers,
|
|
-readability-redundant-parentheses,
|
|
-readability-redundant-typename,
|
|
-readability-simplify-boolean-expr,
|
|
-readability-uppercase-literal-suffix,
|
|
-readability-use-concise-preprocessor-directives'
|
|
|
|
CheckOptions:
|
|
- key: hicpp-special-member-functions.AllowSoleDefaultDtor
|
|
value: 1
|
|
# clang-tidy 22.1 extended this check to classes and enums; the test files
|
|
# define many such helper types at namespace scope, which is harmless
|
|
- key: misc-use-internal-linkage.AnalyzeTypes
|
|
value: false
|
|
|
|
WarningsAsErrors: '*'
|
|
|
|
HeaderFilterRegex: '.*hpp$'
|