diff --git a/cmake/common/clang-tidy.config b/cmake/common/clang-tidy.config index 9be7d5830..c69b9009c 100644 --- a/cmake/common/clang-tidy.config +++ b/cmake/common/clang-tidy.config @@ -1,5 +1,5 @@ { - "Checks": "-*, concurrency-*, modernize-*, portability-*", + "Checks": "-*, concurrency-*, modernize-*, performance-*, portability-*", "WarningsAsErrors": "*", "FormatStyle": "none", "UseColor": true diff --git a/src/core/json/include/sourcemeta/core/json_value.h b/src/core/json/include/sourcemeta/core/json_value.h index 6169a004a..10c8ee6a1 100644 --- a/src/core/json/include/sourcemeta/core/json_value.h +++ b/src/core/json/include/sourcemeta/core/json_value.h @@ -45,7 +45,7 @@ class SOURCEMETA_CORE_JSON_EXPORT JSON { /// The object type used by the JSON document. using Object = JSONObject>; /// The parsing phase of a JSON document. - enum class ParsePhase { Pre, Post }; + enum class ParsePhase : std::uint8_t { Pre, Post }; // The enumeration indexes must stay in sync with the internal variant /// The different types of a JSON instance. enum class Type : std::uint8_t { diff --git a/src/core/jsonpointer/include/sourcemeta/core/jsonpointer_template.h b/src/core/jsonpointer/include/sourcemeta/core/jsonpointer_template.h index 0a6eb600f..80be97a02 100644 --- a/src/core/jsonpointer/include/sourcemeta/core/jsonpointer_template.h +++ b/src/core/jsonpointer/include/sourcemeta/core/jsonpointer_template.h @@ -5,6 +5,7 @@ #include // std::copy, std::all_of #include // assert +#include // std::uint8_t #include // std::initializer_list #include // std::back_inserter #include // std::optional, std::nullopt @@ -16,7 +17,7 @@ namespace sourcemeta::core { /// @ingroup jsonpointer template class GenericPointerTemplate { public: - enum class Wildcard { Property, Item, Key }; + enum class Wildcard : std::uint8_t { Property, Item, Key }; struct Condition { auto operator==(const Condition &) const noexcept -> bool = default; auto operator<(const Condition &) const noexcept -> bool { return false; } diff --git a/src/core/jsonschema/include/sourcemeta/core/jsonschema_frame.h b/src/core/jsonschema/include/sourcemeta/core/jsonschema_frame.h index 6cce06386..543f92802 100644 --- a/src/core/jsonschema/include/sourcemeta/core/jsonschema_frame.h +++ b/src/core/jsonschema/include/sourcemeta/core/jsonschema_frame.h @@ -105,7 +105,7 @@ class SOURCEMETA_CORE_JSONSCHEMA_EXPORT SchemaFrame { public: /// The mode of framing. More extensive analysis can be compute and memory /// intensive - enum class Mode { Locations, References, Instances }; + enum class Mode : std::uint8_t { Locations, References, Instances }; SchemaFrame(const Mode mode) : mode_{mode} {} diff --git a/src/core/uri/include/sourcemeta/core/uri_escape.h b/src/core/uri/include/sourcemeta/core/uri_escape.h index 657dc48cb..b35f9eb27 100644 --- a/src/core/uri/include/sourcemeta/core/uri_escape.h +++ b/src/core/uri/include/sourcemeta/core/uri_escape.h @@ -5,13 +5,14 @@ #include #endif +#include // std::uint8_t #include // std::istream #include // std::ostream namespace sourcemeta::core { /// @ingroup uri -enum class URIEscapeMode { +enum class URIEscapeMode : std::uint8_t { // Escape every characted that is not in the URI "unreserved" ABNF category // See https://www.rfc-editor.org/rfc/rfc3986#appendix-A SkipUnreserved, diff --git a/src/extension/alterschema/include/sourcemeta/core/alterschema.h b/src/extension/alterschema/include/sourcemeta/core/alterschema.h index b172f76a8..07fb2a706 100644 --- a/src/extension/alterschema/include/sourcemeta/core/alterschema.h +++ b/src/extension/alterschema/include/sourcemeta/core/alterschema.h @@ -16,11 +16,13 @@ #include +#include // std::uint8_t + namespace sourcemeta::core { /// @ingroup alterschema /// The category of a built-in transformation rule -enum class AlterSchemaMode { +enum class AlterSchemaMode : std::uint8_t { /// Rules that simplify the given schema for both human readability and /// performance Readability, diff --git a/src/extension/alterschema/linter/draft_official_dialect_without_empty_fragment.h b/src/extension/alterschema/linter/draft_official_dialect_without_empty_fragment.h index 8bf46af7a..9df6ad563 100644 --- a/src/extension/alterschema/linter/draft_official_dialect_without_empty_fragment.h +++ b/src/extension/alterschema/linter/draft_official_dialect_without_empty_fragment.h @@ -39,6 +39,6 @@ class DraftOfficialDialectWithoutEmptyFragment final auto transform(sourcemeta::core::JSON &schema) const -> void override { auto schema_value = schema.at("$schema").to_string(); schema_value += "#"; - schema.at("$schema").into(sourcemeta::core::JSON{std::move(schema_value)}); + schema.at("$schema").into(sourcemeta::core::JSON{schema_value}); } }; diff --git a/src/extension/alterschema/linter/modern_official_dialect_with_empty_fragment.h b/src/extension/alterschema/linter/modern_official_dialect_with_empty_fragment.h index 8188f4985..d4439ffb6 100644 --- a/src/extension/alterschema/linter/modern_official_dialect_with_empty_fragment.h +++ b/src/extension/alterschema/linter/modern_official_dialect_with_empty_fragment.h @@ -31,6 +31,6 @@ class ModernOfficialDialectWithEmptyFragment final auto transform(sourcemeta::core::JSON &schema) const -> void override { auto schema_value = schema.at("$schema").to_string(); schema_value.pop_back(); - schema.at("$schema").into(sourcemeta::core::JSON{std::move(schema_value)}); + schema.at("$schema").into(sourcemeta::core::JSON{schema_value}); } };