From cf761709ddb259b4a08e670f034f849754e04b56 Mon Sep 17 00:00:00 2001 From: gcch Date: Tue, 14 Apr 2026 11:30:27 +0200 Subject: [PATCH] =?UTF-8?q?corv=C3=A9e:=20met=20=C3=A0=20jour=20Mago?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mago-schema.json | 1689 +++++++++++++++++++++++++++++----------------- mago.toml | 8 +- 2 files changed, 1063 insertions(+), 634 deletions(-) diff --git a/mago-schema.json b/mago-schema.json index a4a12e52..6d8bf9d4 100644 --- a/mago-schema.json +++ b/mago-schema.json @@ -9,6 +9,11 @@ "description": "Allow accessing array keys that may not be defined without reporting an issue.", "type": "boolean" }, + "allow-side-effects-in-conditions": { + "default": true, + "description": "Whether to allow calls to impure functions inside conditions.\n\nWhen set to `false`, any call to a function not marked `@pure` or\n`@mutation-free` inside an `if`, `while`, `for`, ternary, or `match`\ncondition is reported. This helps catch surprising evaluation-order\nbugs where a side effect in one part of a condition silently alters\na variable used in another part.\n\nDefaults to `true` (impure calls in conditions are allowed).", + "type": "boolean" + }, "analyze-dead-code": { "default": false, "description": "Whether to analyze dead code.", @@ -98,6 +103,11 @@ }, "type": "array" }, + "find-overly-wide-return-types": { + "default": false, + "description": "Whether to warn when a function's declared return type contains a branch the body never\nactually returns (e.g. `: string|false` on a function that always returns a string).", + "type": "boolean" + }, "find-unused-definitions": { "default": true, "description": "Whether to find unused definitions.", @@ -147,11 +157,12 @@ "performance": { "$ref": "#/$defs/PerformanceConfiguration", "default": { - "array-combination-threshold": 128, + "array-combination-threshold": 32, "consensus-limit-threshold": 256, "disjunction-complexity-threshold": 4096, "formula-size-threshold": 512, "integer-combination-threshold": 128, + "loop-assignment-depth-threshold": 1, "negation-complexity-threshold": 4096, "saturation-complexity-threshold": 8192, "string-combination-threshold": 128 @@ -271,6 +282,33 @@ ], "description": "An entry that can be either a simple string or an object with name and optional help." }, + "DisallowedTypeEntry": { + "anyOf": [ + { + "description": "Simple string entry (just the name).", + "type": "string" + }, + { + "description": "Entry with name and optional help message.", + "properties": { + "help": { + "type": [ + "null", + "string" + ] + }, + "name": { + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + } + ], + "description": "An entry that can be either a simple string or an object with name and optional help." + }, "EndOfLine": { "description": "Specifies the style of line endings.", "enum": [ @@ -290,6 +328,16 @@ "description": "Whether to align consecutive assignment-like constructs in columns.\n\nWhen enabled, consecutive variable assignments, class properties, class constants,\nglobal constants, array key-value pairs, and backed enum cases are column-aligned.\n\nFor arrays, this applies to multiline or width-broken mappings. Compact inline arrays\nstay compact and are not padded into columns.\n\nExample with `true`:\n```php\n$foo = 1;\n$b = 2;\n$ccccccc = 3;\n\nclass X {\n public string $foo = 1;\n public readonly int $barrrr = 2;\n}\n```\n\nExample with `false`:\n```php\n$foo = 1;\n$b = 2;\n$ccccccc = 3;\n```\n\nNote: Blank lines and comments break alignment runs. In class bodies,\ndifferent member types (properties vs constants) are aligned separately.\n\nDefault: false", "type": "boolean" }, + "align-named-arguments": { + "default": false, + "description": "Whether to align named arguments in multiline argument lists.\n\nWhen enabled:\n```php\nsome_function(\n short: 1,\n longerName: 2,\n longestName: 3,\n);\n```\n\nSingle-line argument lists remain inline, and positional arguments are not aligned.\n\nDefault: false", + "type": "boolean" + }, + "align-parameters": { + "default": false, + "description": "Whether to align multiline function and method parameter lists by the variable column.\n\nThis is especially useful for promoted constructor properties with visibility modifiers.\n\nDefault: false", + "type": "boolean" + }, "always-break-attribute-named-argument-lists": { "default": false, "description": "Whether to always break named argument lists in attributes into multiple lines.\n\nWhen enabled:\n```php\n#[SomeAttribute(\n argument1: 'value1',\n argument2: 'value2',\n)]\nclass Foo {}\n```\n\nDefault: false", @@ -512,6 +560,16 @@ "default": "question", "description": "How to format null type hints.\n\nWith `Question`:\n```php\nfunction foo(\n ?string $a,\n null|int|string $b,\n int|null|string $c,\n) {}\n```\n\nWith `NullPipe`:\n```php\nfunction foo(\n null|string $a,\n null|int|string $b,\n int|null|string $c,\n) {}\n```\n\nWith `NullPipeLast`:\n```php\nfunction foo(\n string|null $a,\n int|string|null $b,\n int|string|null $c,\n) {}\n```\n\nDefault: `Question`" }, + "omit-redundant-arithmetic-binary-expression-parentheses": { + "default": false, + "description": "Whether to omit redundant parentheses around arithmetic binary expressions under comparison and null coalesce expressions.\n\nWhen enabled, parentheses are omitted where PHP precedence already preserves meaning:\n```php\nif ($i === $retries - 1) {\n}\n```\n\nWhen disabled, arithmetic binary expressions keep Mago's default grouping style:\n```php\nif ($i === ($retries - 1)) {\n}\n```\n\nDefault: false", + "type": "boolean" + }, + "omit-redundant-bitwise-binary-expression-parentheses": { + "default": false, + "description": "Whether to omit redundant parentheses around bitwise binary child expressions.\n\nWhen enabled, parentheses are omitted around bitwise binary child expressions where PHP precedence and\nassociativity already preserve meaning:\n```php\nif ($mask === $flags << 1) {\n}\n```\n\nWhen disabled, bitwise binary child expressions keep Mago's default grouping style:\n```php\nif ($mask === ($flags << 1)) {\n}\n```\n\nDefault: false", + "type": "boolean" + }, "opening-tag-on-own-line": { "default": true, "description": "Whether the opening `method1()\n ->method2()\n ->method3();\n```\n\nWhen disabled:\n```php\n$object\n ->method1()\n ->method2()\n ->method3();\n```\n\nDefault: false", + "type": "boolean" + }, "preserve-breaking-parameter-list": { "default": false, "description": "Whether to preserve line breaks in parameter lists, even if they could fit on a single line.\n\nDefault: false", @@ -833,7 +896,7 @@ "type": "string" }, { - "description": "Ignore a code in specific paths: `{ code = \"code2\", in = \"path/\" }`", + "description": "Ignore a code in specific paths or glob patterns:\n`{ code = \"code2\", in = [\"tests/\", \"src/**/*.php\"] }`", "properties": { "code": { "type": "string" @@ -852,7 +915,7 @@ "type": "object" } ], - "description": "Represents an entry in the analyzer's `ignore` configuration.\n\nCan be either a plain code string (ignored everywhere) or a scoped entry\nthat only ignores a code in specific paths." + "description": "Represents an entry in the analyzer's `ignore` configuration.\n\nCan be either a plain code string (ignored everywhere) or a scoped entry\nthat only ignores a code in specific paths. Scoped paths accept both\nplain directory/file prefixes (e.g. `\"tests/\"`, `\"src/Legacy.php\"`) and\nglob patterns (e.g. `\"src/**/*.php\"`); entries\ncontaining any of `*`, `?`, `[`, `{` are matched with [`ExclusionMatcher`]." }, "Level": { "description": "Represents the severity level of an issue.", @@ -990,6 +1053,11 @@ "functions": [], "level": "Warning" }, + "disallowed-type-instantiation": { + "enabled": false, + "level": "Warning", + "types": [] + }, "enum-name": { "enabled": true, "level": "Help" @@ -1241,6 +1309,10 @@ "enabled": false, "level": "Warning" }, + "no-literal-namespace-string": { + "enabled": false, + "level": "Warning" + }, "no-literal-password": { "enabled": true, "level": "Error" @@ -1257,6 +1329,10 @@ "enabled": true, "level": "Help" }, + "no-null-property-init": { + "enabled": false, + "level": "Help" + }, "no-only": { "enabled": true, "level": "Error" @@ -1357,6 +1433,25 @@ "enabled": true, "level": "Warning" }, + "no-service-state-mutation": { + "allowed-methods": [ + "__construct", + "reset" + ], + "enabled": false, + "exclude-namespaces": [ + "App\\DTO\\", + "App\\Entity\\", + "App\\ValueObject\\" + ], + "include-namespaces": [ + "App\\" + ], + "level": "Warning", + "reset-interfaces": [ + "Symfony\\Contracts\\Service\\ResetInterface" + ] + }, "no-shell-execute-string": { "enabled": true, "level": "Error" @@ -1373,6 +1468,13 @@ "enabled": true, "level": "Warning" }, + "no-side-effects-with-declarations": { + "allow-class-alias": true, + "allow-class-exists": true, + "allow-conditional-declarations": true, + "enabled": false, + "level": "Warning" + }, "no-sprintf-concat": { "enabled": true, "level": "Warning" @@ -1536,6 +1638,11 @@ "enabled": true, "level": "Warning" }, + "string-style": { + "enabled": false, + "level": "Note", + "style": "interpolation" + }, "switch-continue-to-break": { "enabled": false, "level": "Warning" @@ -1663,8 +1770,8 @@ "description": "Performance tuning settings for the analyzer.\n\nThese thresholds control the complexity limits for logical formula operations.\nAdjusting these values allows trading off between analysis precision and speed.", "properties": { "array-combination-threshold": { - "default": 128, - "description": "Maximum number of array elements to track individually.\n\nWhen building array types through repeated push operations (`$arr[] = ...`),\nthis limits how many individual elements are tracked before generalizing\nto a simpler array type. This prevents memory explosion on files with\nthousands of array pushes.\n\nDefaults to `128`.", + "default": 32, + "description": "Maximum number of array elements to track individually.\n\nWhen building array types through repeated push operations (`$arr[] = ...`),\nthis limits how many individual elements are tracked before generalizing\nto a simpler array type. This prevents memory explosion on files with\nthousands of array pushes.\n\nDefaults to `32`.", "format": "uint16", "maximum": 65535, "minimum": 0, @@ -1702,6 +1809,14 @@ "minimum": 0, "type": "integer" }, + "loop-assignment-depth-threshold": { + "default": 1, + "description": "Maximum depth of the loop assignment dependency graph that the\nfixed-point analyzer will explore when re-analysing loop bodies.\n\nThe analyzer uses fixed-point iteration to propagate widened types\nalong loop-carried dependency chains. A chain of length `N` can\nrequire up to `N` extra passes for the type at the end of the chain\nto fully stabilise, and each pass re-analyses the entire loop body.\nOn large, complex loops the per-pass cost dominates file analysis\ntime.\n\nThe default of `1` means each loop body is re-analysed at most once\nafter the initial pass; enough to stabilise virtually all real-world\ncode while keeping analysis cost bounded. Projects that require\nmaximally precise narrowing of long loop-carried chains can raise\nthis value (typically to `2` or `3`) at the cost of significantly\nslower analysis on complex files. Setting this to `0` disables\nfixed-point iteration entirely.\n\nDefaults to `1`.", + "format": "uint8", + "maximum": 255, + "minimum": 0, + "type": "integer" + }, "negation-complexity-threshold": { "default": 4096, "description": "Maximum cumulative complexity during formula negation.\n\nControls how complex the negation of a formula can become.\nIf exceeded, negation gives up to avoid exponential blowup.\n\nDefaults to `4096`.", @@ -1888,12 +2003,32 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" }, "RuleSettings102": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Help" + } + }, + "type": "object" + }, + "RuleSettings103": { "additionalProperties": false, "properties": { "enabled": { @@ -1919,7 +2054,7 @@ }, "type": "object" }, - "RuleSettings103": { + "RuleSettings104": { "additionalProperties": false, "properties": { "enabled": { @@ -1939,7 +2074,7 @@ }, "type": "object" }, - "RuleSettings104": { + "RuleSettings105": { "additionalProperties": false, "properties": { "enabled": { @@ -1959,7 +2094,7 @@ }, "type": "object" }, - "RuleSettings105": { + "RuleSettings106": { "additionalProperties": false, "properties": { "enabled": { @@ -1979,7 +2114,7 @@ }, "type": "object" }, - "RuleSettings106": { + "RuleSettings107": { "additionalProperties": false, "properties": { "enabled": { @@ -1999,26 +2134,6 @@ }, "type": "object" }, - "RuleSettings107": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Note" - } - }, - "type": "object" - }, "RuleSettings108": { "additionalProperties": false, "properties": { @@ -2034,7 +2149,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Note" } }, "type": "object" @@ -2138,7 +2253,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Warning" } }, "type": "object" @@ -2158,7 +2273,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Error" } }, "type": "object" @@ -2266,10 +2381,6 @@ "RuleSettings119": { "additionalProperties": false, "properties": { - "allow-loose-behavior": { - "default": false, - "type": "boolean" - }, "enabled": { "default": true, "type": "boolean" @@ -2310,7 +2421,7 @@ "RuleSettings120": { "additionalProperties": false, "properties": { - "allow-disabling": { + "allow-loose-behavior": { "default": false, "type": "boolean" }, @@ -2334,6 +2445,10 @@ "RuleSettings121": { "additionalProperties": false, "properties": { + "allow-disabling": { + "default": false, + "type": "boolean" + }, "enabled": { "default": true, "type": "boolean" @@ -2386,14 +2501,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" - }, - "threshold": { - "default": 20, - "format": "uint16", - "maximum": 65535, - "minimum": 0, - "type": "integer" + "default": "Warning" } }, "type": "object" @@ -2401,14 +2509,6 @@ "RuleSettings124": { "additionalProperties": false, "properties": { - "count-hooks": { - "default": false, - "type": "boolean" - }, - "count-setters-and-getters": { - "default": false, - "type": "boolean" - }, "enabled": { "default": true, "type": "boolean" @@ -2424,7 +2524,7 @@ "default": "Error" }, "threshold": { - "default": 10, + "default": 20, "format": "uint16", "maximum": 65535, "minimum": 0, @@ -2436,6 +2536,14 @@ "RuleSettings125": { "additionalProperties": false, "properties": { + "count-hooks": { + "default": false, + "type": "boolean" + }, + "count-setters-and-getters": { + "default": false, + "type": "boolean" + }, "enabled": { "default": true, "type": "boolean" @@ -2475,11 +2583,14 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Error" }, - "psr": { - "default": false, - "type": "boolean" + "threshold": { + "default": 10, + "format": "uint16", + "maximum": 65535, + "minimum": 0, + "type": "integer" } }, "type": "object" @@ -2499,12 +2610,36 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Note" + "default": "Help" + }, + "psr": { + "default": false, + "type": "boolean" } }, "type": "object" }, "RuleSettings128": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Note" + } + }, + "type": "object" + }, + "RuleSettings129": { "additionalProperties": false, "properties": { "camel": { @@ -2536,26 +2671,6 @@ }, "type": "object" }, - "RuleSettings129": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Help" - } - }, - "type": "object" - }, "RuleSettings13": { "additionalProperties": false, "properties": { @@ -2580,7 +2695,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": false, + "default": true, "type": "boolean" }, "exclude": { @@ -2591,7 +2706,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -2600,7 +2715,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -2620,7 +2735,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": false, + "default": true, "type": "boolean" }, "exclude": { @@ -2651,7 +2766,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Warning" } }, "type": "object" @@ -2660,7 +2775,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -2679,8 +2794,23 @@ "RuleSettings135": { "additionalProperties": false, "properties": { - "enabled": { + "allow-class-alias": { "default": true, + "description": "When true, top-level `class_alias(...)` calls are allowed alongside\ndeclarations.", + "type": "boolean" + }, + "allow-class-exists": { + "default": true, + "description": "When true, top-level `class_exists(...)` calls are allowed alongside\ndeclarations. This is commonly used to trigger autoloading/preloading.", + "type": "boolean" + }, + "allow-conditional-declarations": { + "default": true, + "description": "When true, conditional declarations (`if (...) { class Foo {} }`)\nare allowed alongside declarations. This covers the common pattern\nof polyfilling a class depending on an extension or PHP version.", + "type": "boolean" + }, + "enabled": { + "default": false, "type": "boolean" }, "exclude": { @@ -2691,7 +2821,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Warning" } }, "type": "object" @@ -2709,16 +2839,6 @@ }, "type": "array" }, - "known-sink-functions": { - "default": [ - "printf" - ], - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, "level": { "$ref": "#/$defs/Level", "default": "Error" @@ -2749,16 +2869,8 @@ "RuleSettings138": { "additionalProperties": false, "properties": { - "camel": { - "default": true, - "type": "boolean" - }, - "either": { - "default": false, - "type": "boolean" - }, "enabled": { - "default": false, + "default": true, "type": "boolean" }, "exclude": { @@ -2767,9 +2879,19 @@ }, "type": "array" }, + "known-sink-functions": { + "default": [ + "printf" + ], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Error" } }, "type": "object" @@ -2833,10 +2955,18 @@ "RuleSettings140": { "additionalProperties": false, "properties": { - "enabled": { + "camel": { "default": true, "type": "boolean" }, + "either": { + "default": false, + "type": "boolean" + }, + "enabled": { + "default": false, + "type": "boolean" + }, "exclude": { "items": { "type": "string" @@ -2845,7 +2975,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -2865,7 +2995,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Error" } }, "type": "object" @@ -2925,12 +3055,71 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" }, "RuleSettings145": { + "additionalProperties": false, + "properties": { + "allowed-methods": { + "default": [ + "__construct", + "reset" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "enabled": { + "default": false, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "exclude-namespaces": { + "default": [ + "App\\DTO\\", + "App\\Entity\\", + "App\\ValueObject\\" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "include-namespaces": { + "default": [ + "App\\" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + }, + "reset-interfaces": { + "default": [ + "Symfony\\Contracts\\Service\\ResetInterface" + ], + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "RuleSettings146": { "additionalProperties": false, "properties": { "enabled": { @@ -2950,31 +3139,11 @@ }, "type": "object" }, - "RuleSettings146": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": false, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Warning" - } - }, - "type": "object" - }, "RuleSettings147": { "additionalProperties": false, "properties": { "enabled": { - "default": false, + "default": true, "type": "boolean" }, "exclude": { @@ -3014,7 +3183,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -3026,13 +3195,6 @@ "level": { "$ref": "#/$defs/Level", "default": "Warning" - }, - "min-digits": { - "default": 5, - "description": "Minimum number of digits before suggesting separators.", - "format": "uint", - "minimum": 0, - "type": "integer" } }, "type": "object" @@ -3106,7 +3268,11 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Note" + }, + "style": { + "$ref": "#/$defs/StringStyleOption", + "default": "interpolation" } }, "type": "object" @@ -3115,7 +3281,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": false, + "default": true, "type": "boolean" }, "exclude": { @@ -3135,7 +3301,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": false, + "default": true, "type": "boolean" }, "exclude": { @@ -3146,7 +3312,14 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" + }, + "min-digits": { + "default": 5, + "description": "Minimum number of digits before suggesting separators.", + "format": "uint", + "minimum": 0, + "type": "integer" } }, "type": "object" @@ -3166,7 +3339,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -3175,7 +3348,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -3186,7 +3359,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -3195,7 +3368,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -3215,7 +3388,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -3226,7 +3399,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Help" } }, "type": "object" @@ -3235,7 +3408,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -3246,12 +3419,59 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Warning" } }, "type": "object" }, "RuleSettings159": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": false, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Help" + } + }, + "type": "object" + }, + "RuleSettings16": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": false, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + }, + "types": { + "default": [], + "items": { + "$ref": "#/$defs/DisallowedTypeEntry" + }, + "type": "array" + } + }, + "type": "object" + }, + "RuleSettings160": { "additionalProperties": false, "properties": { "enabled": { @@ -3271,7 +3491,7 @@ }, "type": "object" }, - "RuleSettings16": { + "RuleSettings161": { "additionalProperties": false, "properties": { "enabled": { @@ -3286,12 +3506,72 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" }, - "RuleSettings160": { + "RuleSettings162": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Error" + } + }, + "type": "object" + }, + "RuleSettings163": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Error" + } + }, + "type": "object" + }, + "RuleSettings164": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings165": { "additionalProperties": false, "properties": { "classes": { @@ -3351,7 +3631,47 @@ }, "type": "object" }, + "RuleSettings166": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": false, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, "RuleSettings17": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Help" + } + }, + "type": "object" + }, + "RuleSettings18": { "additionalProperties": false, "properties": { "enabled": { @@ -3387,7 +3707,7 @@ }, "type": "object" }, - "RuleSettings18": { + "RuleSettings19": { "additionalProperties": false, "properties": { "constructor-threshold": { @@ -3424,26 +3744,6 @@ }, "type": "object" }, - "RuleSettings19": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Error" - } - }, - "type": "object" - }, "RuleSettings2": { "additionalProperties": false, "properties": { @@ -3465,6 +3765,26 @@ "type": "object" }, "RuleSettings20": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Error" + } + }, + "type": "object" + }, + "RuleSettings21": { "additionalProperties": false, "properties": { "difficulty-threshold": { @@ -3499,7 +3819,7 @@ }, "type": "object" }, - "RuleSettings21": { + "RuleSettings22": { "additionalProperties": false, "properties": { "enabled": { @@ -3524,7 +3844,7 @@ }, "type": "object" }, - "RuleSettings22": { + "RuleSettings23": { "additionalProperties": false, "properties": { "check-first-argument": { @@ -3555,7 +3875,7 @@ }, "type": "object" }, - "RuleSettings23": { + "RuleSettings24": { "additionalProperties": false, "properties": { "enabled": { @@ -3575,7 +3895,7 @@ }, "type": "object" }, - "RuleSettings24": { + "RuleSettings25": { "additionalProperties": false, "properties": { "enabled": { @@ -3595,7 +3915,7 @@ }, "type": "object" }, - "RuleSettings25": { + "RuleSettings26": { "additionalProperties": false, "properties": { "camel": { @@ -3630,26 +3950,6 @@ }, "type": "object" }, - "RuleSettings26": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Note" - } - }, - "type": "object" - }, "RuleSettings27": { "additionalProperties": false, "properties": { @@ -3665,7 +3965,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Note" } }, "type": "object" @@ -3705,7 +4005,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Error" } }, "type": "object" @@ -3805,7 +4105,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Warning" } }, "type": "object" @@ -3865,7 +4165,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Error" } }, "type": "object" @@ -3873,10 +4173,6 @@ "RuleSettings37": { "additionalProperties": false, "properties": { - "check-functions": { - "default": false, - "type": "boolean" - }, "enabled": { "default": true, "type": "boolean" @@ -3897,6 +4193,10 @@ "RuleSettings38": { "additionalProperties": false, "properties": { + "check-functions": { + "default": false, + "type": "boolean" + }, "enabled": { "default": true, "type": "boolean" @@ -3969,7 +4269,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Note" + "default": "Warning" } }, "type": "object" @@ -3989,7 +4289,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Note" } }, "type": "object" @@ -4189,7 +4489,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -4209,7 +4509,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" @@ -4309,7 +4609,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -4329,7 +4629,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" @@ -4349,7 +4649,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -4369,7 +4669,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" @@ -4413,7 +4713,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Note" + "default": "Help" } }, "type": "object" @@ -4433,7 +4733,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Note" } }, "type": "object" @@ -4453,7 +4753,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Help" } }, "type": "object" @@ -4473,7 +4773,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Error" } }, "type": "object" @@ -4573,7 +4873,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Note" + "default": "Warning" } }, "type": "object" @@ -4593,7 +4893,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Error" + "default": "Note" } }, "type": "object" @@ -4702,7 +5002,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": false, + "default": true, "type": "boolean" }, "exclude": { @@ -4713,7 +5013,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Note" + "default": "Error" } }, "type": "object" @@ -4733,12 +5033,32 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Note" } }, "type": "object" }, "RuleSettings76": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": false, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Warning" + } + }, + "type": "object" + }, + "RuleSettings77": { "additionalProperties": false, "properties": { "allow-array-checks": { @@ -4762,26 +5082,6 @@ }, "type": "object" }, - "RuleSettings77": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Note" - } - }, - "type": "object" - }, "RuleSettings78": { "additionalProperties": false, "properties": { @@ -4798,10 +5098,6 @@ "level": { "$ref": "#/$defs/Level", "default": "Note" - }, - "preserve-single-line-comments": { - "default": false, - "type": "boolean" } }, "type": "object" @@ -4821,7 +5117,11 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Note" + }, + "preserve-single-line-comments": { + "default": false, + "type": "boolean" } }, "type": "object" @@ -4865,7 +5165,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" @@ -4891,6 +5191,26 @@ "type": "object" }, "RuleSettings82": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Help" + } + }, + "type": "object" + }, + "RuleSettings83": { "additionalProperties": false, "properties": { "enabled": { @@ -4920,31 +5240,11 @@ }, "type": "object" }, - "RuleSettings83": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": false, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Warning" - } - }, - "type": "object" - }, "RuleSettings84": { "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -4964,7 +5264,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": false, + "default": true, "type": "boolean" }, "exclude": { @@ -4975,7 +5275,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Warning" } }, "type": "object" @@ -5024,7 +5324,7 @@ "additionalProperties": false, "properties": { "enabled": { - "default": true, + "default": false, "type": "boolean" }, "exclude": { @@ -5035,7 +5335,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Note" + "default": "Help" } }, "type": "object" @@ -5055,7 +5355,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" + "default": "Note" } }, "type": "object" @@ -5095,7 +5395,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Warning" + "default": "Help" } }, "type": "object" @@ -5195,11 +5495,7 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Help" - }, - "psr": { - "default": false, - "type": "boolean" + "default": "Warning" } }, "type": "object" @@ -5219,12 +5515,36 @@ }, "level": { "$ref": "#/$defs/Level", - "default": "Note" + "default": "Help" + }, + "psr": { + "default": false, + "type": "boolean" } }, "type": "object" }, "RuleSettings97": { + "additionalProperties": false, + "properties": { + "enabled": { + "default": true, + "type": "boolean" + }, + "exclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "level": { + "$ref": "#/$defs/Level", + "default": "Note" + } + }, + "type": "object" + }, + "RuleSettings98": { "additionalProperties": false, "properties": { "check-functions": { @@ -5248,7 +5568,7 @@ }, "type": "object" }, - "RuleSettings98": { + "RuleSettings99": { "additionalProperties": false, "properties": { "camel": { @@ -5276,26 +5596,6 @@ }, "type": "object" }, - "RuleSettings99": { - "additionalProperties": false, - "properties": { - "enabled": { - "default": true, - "type": "boolean" - }, - "exclude": { - "items": { - "type": "string" - }, - "type": "array" - }, - "level": { - "$ref": "#/$defs/Level", - "default": "Warning" - } - }, - "type": "object" - }, "RulesSettings": { "additionalProperties": false, "properties": { @@ -5366,7 +5666,7 @@ } }, "constant-condition": { - "$ref": "#/$defs/RuleSettings129", + "$ref": "#/$defs/RuleSettings130", "default": { "enabled": true, "level": "Help" @@ -5389,26 +5689,26 @@ } }, "deprecated-cast": { - "$ref": "#/$defs/RuleSettings33", - "default": { - "enabled": true, - "level": "Error" - } - }, - "deprecated-shell-execute-string": { "$ref": "#/$defs/RuleSettings34", "default": { "enabled": true, "level": "Error" } }, - "deprecated-switch-semicolon": { + "deprecated-shell-execute-string": { "$ref": "#/$defs/RuleSettings35", "default": { "enabled": true, "level": "Error" } }, + "deprecated-switch-semicolon": { + "$ref": "#/$defs/RuleSettings36", + "default": { + "enabled": true, + "level": "Error" + } + }, "disallowed-functions": { "$ref": "#/$defs/RuleSettings15", "default": { @@ -5418,15 +5718,23 @@ "level": "Warning" } }, - "enum-name": { + "disallowed-type-instantiation": { "$ref": "#/$defs/RuleSettings16", + "default": { + "enabled": false, + "level": "Warning", + "types": [] + } + }, + "enum-name": { + "$ref": "#/$defs/RuleSettings17", "default": { "enabled": true, "level": "Help" } }, "excessive-nesting": { - "$ref": "#/$defs/RuleSettings17", + "$ref": "#/$defs/RuleSettings18", "default": { "enabled": true, "function-like-threshold": null, @@ -5435,7 +5743,7 @@ } }, "excessive-parameter-list": { - "$ref": "#/$defs/RuleSettings18", + "$ref": "#/$defs/RuleSettings19", "default": { "constructor-threshold": null, "enabled": true, @@ -5444,21 +5752,21 @@ } }, "explicit-nullable-param": { - "$ref": "#/$defs/RuleSettings99", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "explicit-octal": { "$ref": "#/$defs/RuleSettings100", "default": { "enabled": true, "level": "Warning" } }, + "explicit-octal": { + "$ref": "#/$defs/RuleSettings101", + "default": { + "enabled": true, + "level": "Warning" + } + }, "file-name": { - "$ref": "#/$defs/RuleSettings97", + "$ref": "#/$defs/RuleSettings98", "default": { "check-functions": false, "enabled": true, @@ -5466,14 +5774,14 @@ } }, "final-controller": { - "$ref": "#/$defs/RuleSettings19", + "$ref": "#/$defs/RuleSettings20", "default": { "enabled": true, "level": "Error" } }, "function-name": { - "$ref": "#/$defs/RuleSettings98", + "$ref": "#/$defs/RuleSettings99", "default": { "camel": false, "either": false, @@ -5482,7 +5790,7 @@ } }, "halstead": { - "$ref": "#/$defs/RuleSettings20", + "$ref": "#/$defs/RuleSettings21", "default": { "difficulty-threshold": 12, "effort-threshold": 5000, @@ -5492,42 +5800,42 @@ } }, "identity-comparison": { - "$ref": "#/$defs/RuleSettings90", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "ineffective-format-ignore-next": { "$ref": "#/$defs/RuleSettings91", "default": { "enabled": true, "level": "Warning" } }, - "ineffective-format-ignore-region": { + "ineffective-format-ignore-next": { "$ref": "#/$defs/RuleSettings92", "default": { "enabled": true, "level": "Warning" } }, - "inline-variable-return": { + "ineffective-format-ignore-region": { "$ref": "#/$defs/RuleSettings93", "default": { "enabled": true, "level": "Warning" } }, - "instanceof-stringable": { + "inline-variable-return": { "$ref": "#/$defs/RuleSettings94", "default": { "enabled": true, "level": "Warning" } }, - "interface-name": { + "instanceof-stringable": { "$ref": "#/$defs/RuleSettings95", + "default": { + "enabled": true, + "level": "Warning" + } + }, + "interface-name": { + "$ref": "#/$defs/RuleSettings96", "default": { "enabled": true, "level": "Help", @@ -5535,14 +5843,14 @@ } }, "invalid-open-tag": { - "$ref": "#/$defs/RuleSettings96", + "$ref": "#/$defs/RuleSettings97", "default": { "enabled": true, "level": "Note" } }, "kan-defect": { - "$ref": "#/$defs/RuleSettings21", + "$ref": "#/$defs/RuleSettings22", "default": { "enabled": true, "level": "Error", @@ -5550,7 +5858,7 @@ } }, "literal-named-argument": { - "$ref": "#/$defs/RuleSettings22", + "$ref": "#/$defs/RuleSettings23", "default": { "check-first-argument": false, "enabled": true, @@ -5559,28 +5867,28 @@ } }, "loop-does-not-iterate": { - "$ref": "#/$defs/RuleSettings23", + "$ref": "#/$defs/RuleSettings24", "default": { "enabled": true, "level": "Warning" } }, "lowercase-keyword": { - "$ref": "#/$defs/RuleSettings24", + "$ref": "#/$defs/RuleSettings25", "default": { "enabled": true, "level": "Help" } }, "lowercase-type-hint": { - "$ref": "#/$defs/RuleSettings89", + "$ref": "#/$defs/RuleSettings90", "default": { "enabled": true, "level": "Help" } }, "method-name": { - "$ref": "#/$defs/RuleSettings25", + "$ref": "#/$defs/RuleSettings26", "default": { "camel": true, "either": false, @@ -5590,14 +5898,14 @@ } }, "middleware-in-routes": { - "$ref": "#/$defs/RuleSettings143", + "$ref": "#/$defs/RuleSettings146", "default": { "enabled": true, "level": "Warning" } }, "missing-docs": { - "$ref": "#/$defs/RuleSettings160", + "$ref": "#/$defs/RuleSettings165", "default": { "classes": false, "constants": true, @@ -5614,42 +5922,42 @@ } }, "no-alias-function": { - "$ref": "#/$defs/RuleSettings88", + "$ref": "#/$defs/RuleSettings89", "default": { "enabled": true, "level": "Note" } }, "no-alternative-syntax": { - "$ref": "#/$defs/RuleSettings152", + "$ref": "#/$defs/RuleSettings156", "default": { "enabled": false, "level": "Warning" } }, "no-array-accumulation-in-loop": { - "$ref": "#/$defs/RuleSettings130", + "$ref": "#/$defs/RuleSettings131", "default": { "enabled": false, "level": "Warning" } }, "no-assign-in-argument": { - "$ref": "#/$defs/RuleSettings83", + "$ref": "#/$defs/RuleSettings84", "default": { "enabled": false, "level": "Warning" } }, "no-assign-in-condition": { - "$ref": "#/$defs/RuleSettings84", + "$ref": "#/$defs/RuleSettings85", "default": { "enabled": true, "level": "Warning" } }, "no-boolean-flag-parameter": { - "$ref": "#/$defs/RuleSettings82", + "$ref": "#/$defs/RuleSettings83", "default": { "enabled": true, "exclude-constructors": true, @@ -5658,56 +5966,56 @@ } }, "no-closing-tag": { - "$ref": "#/$defs/RuleSettings81", + "$ref": "#/$defs/RuleSettings82", "default": { "enabled": true, "level": "Help" } }, "no-db-schema-change": { - "$ref": "#/$defs/RuleSettings157", + "$ref": "#/$defs/RuleSettings162", "default": { "enabled": true, "level": "Error" } }, "no-debug-symbols": { - "$ref": "#/$defs/RuleSettings26", + "$ref": "#/$defs/RuleSettings27", "default": { "enabled": true, "level": "Note" } }, "no-direct-db-query": { - "$ref": "#/$defs/RuleSettings156", + "$ref": "#/$defs/RuleSettings161", "default": { "enabled": true, "level": "Warning" } }, "no-else-clause": { - "$ref": "#/$defs/RuleSettings80", + "$ref": "#/$defs/RuleSettings81", "default": { "enabled": true, "level": "Help" } }, "no-empty": { - "$ref": "#/$defs/RuleSettings73", + "$ref": "#/$defs/RuleSettings74", "default": { "enabled": true, "level": "Error" } }, "no-empty-catch-clause": { - "$ref": "#/$defs/RuleSettings79", + "$ref": "#/$defs/RuleSettings80", "default": { "enabled": true, "level": "Warning" } }, "no-empty-comment": { - "$ref": "#/$defs/RuleSettings78", + "$ref": "#/$defs/RuleSettings79", "default": { "enabled": true, "level": "Note", @@ -5715,112 +6023,112 @@ } }, "no-empty-loop": { - "$ref": "#/$defs/RuleSettings77", + "$ref": "#/$defs/RuleSettings78", "default": { "enabled": true, "level": "Note" } }, "no-error-control-operator": { - "$ref": "#/$defs/RuleSettings72", + "$ref": "#/$defs/RuleSettings73", "default": { "enabled": true, "level": "Error" } }, "no-eval": { - "$ref": "#/$defs/RuleSettings71", + "$ref": "#/$defs/RuleSettings72", "default": { "enabled": true, "level": "Error" } }, "no-ffi": { - "$ref": "#/$defs/RuleSettings70", + "$ref": "#/$defs/RuleSettings71", "default": { "enabled": true, "level": "Error" } }, "no-fully-qualified-global-class-like": { - "$ref": "#/$defs/RuleSettings85", - "default": { - "enabled": false, - "level": "Help" - } - }, - "no-fully-qualified-global-constant": { "$ref": "#/$defs/RuleSettings86", "default": { "enabled": false, "level": "Help" } }, - "no-fully-qualified-global-function": { + "no-fully-qualified-global-constant": { "$ref": "#/$defs/RuleSettings87", "default": { "enabled": false, "level": "Help" } }, + "no-fully-qualified-global-function": { + "$ref": "#/$defs/RuleSettings88", + "default": { + "enabled": false, + "level": "Help" + } + }, "no-global": { - "$ref": "#/$defs/RuleSettings69", + "$ref": "#/$defs/RuleSettings70", "default": { "enabled": true, "level": "Error" } }, "no-goto": { - "$ref": "#/$defs/RuleSettings68", + "$ref": "#/$defs/RuleSettings69", "default": { "enabled": true, "level": "Note" } }, "no-hash-comment": { - "$ref": "#/$defs/RuleSettings66", + "$ref": "#/$defs/RuleSettings67", "default": { "enabled": true, "level": "Warning" } }, "no-hash-emoji": { - "$ref": "#/$defs/RuleSettings65", + "$ref": "#/$defs/RuleSettings66", "default": { "enabled": true, "level": "Warning" } }, "no-ini-set": { - "$ref": "#/$defs/RuleSettings131", + "$ref": "#/$defs/RuleSettings132", "default": { "enabled": true, "level": "Warning" } }, "no-inline": { - "$ref": "#/$defs/RuleSettings133", + "$ref": "#/$defs/RuleSettings134", "default": { "enabled": false, "level": "Error" } }, "no-insecure-comparison": { - "$ref": "#/$defs/RuleSettings134", + "$ref": "#/$defs/RuleSettings136", "default": { "enabled": true, "level": "Error" } }, "no-is-null": { - "$ref": "#/$defs/RuleSettings74", + "$ref": "#/$defs/RuleSettings75", "default": { "enabled": false, "level": "Note" } }, "no-isset": { - "$ref": "#/$defs/RuleSettings76", + "$ref": "#/$defs/RuleSettings77", "default": { "allow-array-checks": false, "enabled": true, @@ -5828,315 +6136,361 @@ } }, "no-iterator-to-array-in-foreach": { - "$ref": "#/$defs/RuleSettings75", + "$ref": "#/$defs/RuleSettings76", + "default": { + "enabled": false, + "level": "Warning" + } + }, + "no-literal-namespace-string": { + "$ref": "#/$defs/RuleSettings166", "default": { "enabled": false, "level": "Warning" } }, "no-literal-password": { - "$ref": "#/$defs/RuleSettings135", + "$ref": "#/$defs/RuleSettings137", "default": { "enabled": true, "level": "Error" } }, "no-multi-assignments": { - "$ref": "#/$defs/RuleSettings63", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "no-nested-ternary": { "$ref": "#/$defs/RuleSettings64", "default": { "enabled": true, "level": "Warning" } }, + "no-nested-ternary": { + "$ref": "#/$defs/RuleSettings65", + "default": { + "enabled": true, + "level": "Warning" + } + }, "no-noop": { - "$ref": "#/$defs/RuleSettings61", + "$ref": "#/$defs/RuleSettings62", "default": { "enabled": true, "level": "Help" } }, + "no-null-property-init": { + "$ref": "#/$defs/RuleSettings159", + "default": { + "enabled": false, + "level": "Help" + } + }, "no-only": { - "$ref": "#/$defs/RuleSettings62", + "$ref": "#/$defs/RuleSettings63", "default": { "enabled": true, "level": "Error" } }, "no-parameter-shadowing": { - "$ref": "#/$defs/RuleSettings132", + "$ref": "#/$defs/RuleSettings133", "default": { "enabled": false, "level": "Warning" } }, "no-php-tag-terminator": { - "$ref": "#/$defs/RuleSettings60", + "$ref": "#/$defs/RuleSettings61", "default": { "enabled": true, "level": "Note" } }, "no-protected-in-final": { - "$ref": "#/$defs/RuleSettings59", + "$ref": "#/$defs/RuleSettings60", "default": { "enabled": true, "level": "Help" } }, "no-redundant-binary-string-prefix": { - "$ref": "#/$defs/RuleSettings43", - "default": { - "enabled": true, - "level": "Help" - } - }, - "no-redundant-block": { - "$ref": "#/$defs/RuleSettings55", - "default": { - "enabled": true, - "level": "Help" - } - }, - "no-redundant-continue": { - "$ref": "#/$defs/RuleSettings54", - "default": { - "enabled": true, - "level": "Help" - } - }, - "no-redundant-file": { - "$ref": "#/$defs/RuleSettings53", - "default": { - "enabled": true, - "level": "Help" - } - }, - "no-redundant-final": { - "$ref": "#/$defs/RuleSettings51", - "default": { - "enabled": true, - "level": "Help" - } - }, - "no-redundant-isset": { - "$ref": "#/$defs/RuleSettings46", - "default": { - "enabled": true, - "level": "Help" - } - }, - "no-redundant-label": { - "$ref": "#/$defs/RuleSettings49", - "default": { - "enabled": true, - "level": "Help" - } - }, - "no-redundant-literal-return": { - "$ref": "#/$defs/RuleSettings50", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "no-redundant-math": { - "$ref": "#/$defs/RuleSettings48", - "default": { - "enabled": true, - "level": "Help" - } - }, - "no-redundant-method-override": { - "$ref": "#/$defs/RuleSettings45", - "default": { - "enabled": true, - "level": "Help" - } - }, - "no-redundant-nullsafe": { - "$ref": "#/$defs/RuleSettings47", - "default": { - "enabled": true, - "level": "Help" - } - }, - "no-redundant-parentheses": { "$ref": "#/$defs/RuleSettings44", "default": { "enabled": true, "level": "Help" } }, - "no-redundant-readonly": { + "no-redundant-block": { + "$ref": "#/$defs/RuleSettings56", + "default": { + "enabled": true, + "level": "Help" + } + }, + "no-redundant-continue": { + "$ref": "#/$defs/RuleSettings55", + "default": { + "enabled": true, + "level": "Help" + } + }, + "no-redundant-file": { + "$ref": "#/$defs/RuleSettings54", + "default": { + "enabled": true, + "level": "Help" + } + }, + "no-redundant-final": { "$ref": "#/$defs/RuleSettings52", "default": { "enabled": true, "level": "Help" } }, + "no-redundant-isset": { + "$ref": "#/$defs/RuleSettings47", + "default": { + "enabled": true, + "level": "Help" + } + }, + "no-redundant-label": { + "$ref": "#/$defs/RuleSettings50", + "default": { + "enabled": true, + "level": "Help" + } + }, + "no-redundant-literal-return": { + "$ref": "#/$defs/RuleSettings51", + "default": { + "enabled": true, + "level": "Warning" + } + }, + "no-redundant-math": { + "$ref": "#/$defs/RuleSettings49", + "default": { + "enabled": true, + "level": "Help" + } + }, + "no-redundant-method-override": { + "$ref": "#/$defs/RuleSettings46", + "default": { + "enabled": true, + "level": "Help" + } + }, + "no-redundant-nullsafe": { + "$ref": "#/$defs/RuleSettings48", + "default": { + "enabled": true, + "level": "Help" + } + }, + "no-redundant-parentheses": { + "$ref": "#/$defs/RuleSettings45", + "default": { + "enabled": true, + "level": "Help" + } + }, + "no-redundant-readonly": { + "$ref": "#/$defs/RuleSettings53", + "default": { + "enabled": true, + "level": "Help" + } + }, "no-redundant-string-concat": { - "$ref": "#/$defs/RuleSettings42", + "$ref": "#/$defs/RuleSettings43", "default": { "enabled": true, "level": "Help" } }, "no-redundant-use": { - "$ref": "#/$defs/RuleSettings56", + "$ref": "#/$defs/RuleSettings57", "default": { "enabled": true, "level": "Warning" } }, "no-redundant-write-visibility": { - "$ref": "#/$defs/RuleSettings41", + "$ref": "#/$defs/RuleSettings42", "default": { "enabled": true, "level": "Help" } }, "no-redundant-yield-from": { - "$ref": "#/$defs/RuleSettings57", + "$ref": "#/$defs/RuleSettings58", "default": { "enabled": true, "level": "Help" } }, "no-request-all": { - "$ref": "#/$defs/RuleSettings142", + "$ref": "#/$defs/RuleSettings144", "default": { "enabled": true, "level": "Warning" } }, "no-request-variable": { - "$ref": "#/$defs/RuleSettings27", - "default": { - "enabled": true, - "level": "Error" - } - }, - "no-roles-as-capabilities": { - "$ref": "#/$defs/RuleSettings159", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "no-self-assignment": { - "$ref": "#/$defs/RuleSettings58", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "no-shell-execute-string": { "$ref": "#/$defs/RuleSettings28", "default": { "enabled": true, "level": "Error" } }, + "no-roles-as-capabilities": { + "$ref": "#/$defs/RuleSettings164", + "default": { + "enabled": true, + "level": "Warning" + } + }, + "no-self-assignment": { + "$ref": "#/$defs/RuleSettings59", + "default": { + "enabled": true, + "level": "Warning" + } + }, + "no-service-state-mutation": { + "$ref": "#/$defs/RuleSettings145", + "default": { + "allowed-methods": [ + "__construct", + "reset" + ], + "enabled": false, + "exclude-namespaces": [ + "App\\DTO\\", + "App\\Entity\\", + "App\\ValueObject\\" + ], + "include-namespaces": [ + "App\\" + ], + "level": "Warning", + "reset-interfaces": [ + "Symfony\\Contracts\\Service\\ResetInterface" + ] + } + }, + "no-shell-execute-string": { + "$ref": "#/$defs/RuleSettings29", + "default": { + "enabled": true, + "level": "Error" + } + }, "no-short-bool-cast": { - "$ref": "#/$defs/RuleSettings151", + "$ref": "#/$defs/RuleSettings155", "default": { "enabled": false, "level": "Help" } }, "no-short-opening-tag": { - "$ref": "#/$defs/RuleSettings29", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "no-shorthand-ternary": { "$ref": "#/$defs/RuleSettings30", "default": { "enabled": true, "level": "Warning" } }, - "no-sprintf-concat": { + "no-shorthand-ternary": { "$ref": "#/$defs/RuleSettings31", "default": { "enabled": true, "level": "Warning" } }, - "no-trailing-space": { - "$ref": "#/$defs/RuleSettings40", + "no-side-effects-with-declarations": { + "$ref": "#/$defs/RuleSettings135", "default": { - "enabled": true, - "level": "Note" - } - }, - "no-underscore-class": { - "$ref": "#/$defs/RuleSettings39", - "default": { - "enabled": true, + "allow-class-alias": true, + "allow-class-exists": true, + "allow-conditional-declarations": true, + "enabled": false, "level": "Warning" } }, - "no-unescaped-output": { - "$ref": "#/$defs/RuleSettings158", - "default": { - "enabled": true, - "level": "Error" - } - }, - "no-unsafe-finally": { - "$ref": "#/$defs/RuleSettings139", - "default": { - "enabled": true, - "level": "Error" - } - }, - "no-variable-variable": { - "$ref": "#/$defs/RuleSettings67", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "no-void-reference-return": { - "$ref": "#/$defs/RuleSettings38", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "optional-param-order": { + "no-sprintf-concat": { "$ref": "#/$defs/RuleSettings32", "default": { "enabled": true, "level": "Warning" } }, + "no-trailing-space": { + "$ref": "#/$defs/RuleSettings41", + "default": { + "enabled": true, + "level": "Note" + } + }, + "no-underscore-class": { + "$ref": "#/$defs/RuleSettings40", + "default": { + "enabled": true, + "level": "Warning" + } + }, + "no-unescaped-output": { + "$ref": "#/$defs/RuleSettings163", + "default": { + "enabled": true, + "level": "Error" + } + }, + "no-unsafe-finally": { + "$ref": "#/$defs/RuleSettings141", + "default": { + "enabled": true, + "level": "Error" + } + }, + "no-variable-variable": { + "$ref": "#/$defs/RuleSettings68", + "default": { + "enabled": true, + "level": "Warning" + } + }, + "no-void-reference-return": { + "$ref": "#/$defs/RuleSettings39", + "default": { + "enabled": true, + "level": "Warning" + } + }, + "optional-param-order": { + "$ref": "#/$defs/RuleSettings33", + "default": { + "enabled": true, + "level": "Warning" + } + }, "prefer-anonymous-migration": { - "$ref": "#/$defs/RuleSettings36", + "$ref": "#/$defs/RuleSettings37", "default": { "enabled": true, "level": "Warning" } }, "prefer-arrow-function": { - "$ref": "#/$defs/RuleSettings101", + "$ref": "#/$defs/RuleSettings102", "default": { "enabled": true, "level": "Help" } }, "prefer-early-continue": { - "$ref": "#/$defs/RuleSettings102", + "$ref": "#/$defs/RuleSettings103", "default": { "enabled": true, "level": "Help", @@ -6144,7 +6498,7 @@ } }, "prefer-first-class-callable": { - "$ref": "#/$defs/RuleSettings37", + "$ref": "#/$defs/RuleSettings38", "default": { "check-functions": false, "enabled": true, @@ -6152,49 +6506,49 @@ } }, "prefer-interface": { - "$ref": "#/$defs/RuleSettings103", + "$ref": "#/$defs/RuleSettings104", "default": { "enabled": true, "level": "Note" } }, "prefer-pre-increment": { - "$ref": "#/$defs/RuleSettings153", + "$ref": "#/$defs/RuleSettings157", "default": { "enabled": false, "level": "Help" } }, "prefer-static-closure": { - "$ref": "#/$defs/RuleSettings104", + "$ref": "#/$defs/RuleSettings105", "default": { "enabled": true, "level": "Help" } }, "prefer-test-attribute": { - "$ref": "#/$defs/RuleSettings105", + "$ref": "#/$defs/RuleSettings106", "default": { "enabled": false, "level": "Warning" } }, "prefer-view-array": { - "$ref": "#/$defs/RuleSettings106", + "$ref": "#/$defs/RuleSettings107", "default": { "enabled": true, "level": "Help" } }, "prefer-while-loop": { - "$ref": "#/$defs/RuleSettings107", + "$ref": "#/$defs/RuleSettings108", "default": { "enabled": true, "level": "Note" } }, "property-name": { - "$ref": "#/$defs/RuleSettings138", + "$ref": "#/$defs/RuleSettings140", "default": { "camel": true, "either": false, @@ -6203,70 +6557,70 @@ } }, "psl-array-functions": { - "$ref": "#/$defs/RuleSettings108", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "psl-data-structures": { "$ref": "#/$defs/RuleSettings109", "default": { "enabled": true, "level": "Warning" } }, - "psl-datetime": { + "psl-data-structures": { "$ref": "#/$defs/RuleSettings110", "default": { "enabled": true, "level": "Warning" } }, - "psl-math-functions": { + "psl-datetime": { "$ref": "#/$defs/RuleSettings111", "default": { "enabled": true, "level": "Warning" } }, - "psl-output": { + "psl-math-functions": { "$ref": "#/$defs/RuleSettings112", + "default": { + "enabled": true, + "level": "Warning" + } + }, + "psl-output": { + "$ref": "#/$defs/RuleSettings113", "default": { "enabled": true, "level": "Error" } }, "psl-randomness-functions": { - "$ref": "#/$defs/RuleSettings113", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "psl-regex-functions": { "$ref": "#/$defs/RuleSettings114", "default": { "enabled": true, "level": "Warning" } }, - "psl-sleep-functions": { + "psl-regex-functions": { "$ref": "#/$defs/RuleSettings115", "default": { "enabled": true, "level": "Warning" } }, - "psl-string-functions": { + "psl-sleep-functions": { "$ref": "#/$defs/RuleSettings116", "default": { "enabled": true, "level": "Warning" } }, + "psl-string-functions": { + "$ref": "#/$defs/RuleSettings117", + "default": { + "enabled": true, + "level": "Warning" + } + }, "readable-literal": { - "$ref": "#/$defs/RuleSettings149", + "$ref": "#/$defs/RuleSettings153", "default": { "enabled": true, "level": "Warning", @@ -6274,63 +6628,63 @@ } }, "require-namespace": { - "$ref": "#/$defs/RuleSettings146", + "$ref": "#/$defs/RuleSettings149", "default": { "enabled": false, "level": "Warning" } }, "require-preg-quote-delimiter": { - "$ref": "#/$defs/RuleSettings145", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "sensitive-parameter": { - "$ref": "#/$defs/RuleSettings137", - "default": { - "enabled": true, - "level": "Error" - } - }, - "single-class-per-file": { "$ref": "#/$defs/RuleSettings148", "default": { "enabled": true, "level": "Warning" } }, + "sensitive-parameter": { + "$ref": "#/$defs/RuleSettings139", + "default": { + "enabled": true, + "level": "Error" + } + }, + "single-class-per-file": { + "$ref": "#/$defs/RuleSettings152", + "default": { + "enabled": true, + "level": "Warning" + } + }, "sorted-integer-keys": { - "$ref": "#/$defs/RuleSettings147", + "$ref": "#/$defs/RuleSettings150", "default": { "enabled": false, "level": "Help" } }, "str-contains": { - "$ref": "#/$defs/RuleSettings117", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "str-starts-with": { "$ref": "#/$defs/RuleSettings118", "default": { "enabled": true, "level": "Warning" } }, + "str-starts-with": { + "$ref": "#/$defs/RuleSettings119", + "default": { + "enabled": true, + "level": "Warning" + } + }, "strict-assertions": { - "$ref": "#/$defs/RuleSettings140", + "$ref": "#/$defs/RuleSettings142", "default": { "enabled": true, "level": "Warning" } }, "strict-behavior": { - "$ref": "#/$defs/RuleSettings119", + "$ref": "#/$defs/RuleSettings120", "default": { "allow-loose-behavior": false, "enabled": true, @@ -6338,36 +6692,44 @@ } }, "strict-types": { - "$ref": "#/$defs/RuleSettings120", + "$ref": "#/$defs/RuleSettings121", "default": { "allow-disabling": false, "enabled": true, "level": "Warning" } }, + "string-style": { + "$ref": "#/$defs/RuleSettings151", + "default": { + "enabled": false, + "level": "Note", + "style": "interpolation" + } + }, "switch-continue-to-break": { - "$ref": "#/$defs/RuleSettings154", + "$ref": "#/$defs/RuleSettings158", "default": { "enabled": false, "level": "Warning" } }, "tagged-fixme": { - "$ref": "#/$defs/RuleSettings121", - "default": { - "enabled": true, - "level": "Warning" - } - }, - "tagged-todo": { "$ref": "#/$defs/RuleSettings122", "default": { "enabled": true, "level": "Warning" } }, + "tagged-todo": { + "$ref": "#/$defs/RuleSettings123", + "default": { + "enabled": true, + "level": "Warning" + } + }, "tainted-data-to-sink": { - "$ref": "#/$defs/RuleSettings136", + "$ref": "#/$defs/RuleSettings138", "default": { "enabled": true, "known-sink-functions": [ @@ -6377,7 +6739,7 @@ } }, "too-many-enum-cases": { - "$ref": "#/$defs/RuleSettings123", + "$ref": "#/$defs/RuleSettings124", "default": { "enabled": true, "level": "Error", @@ -6385,7 +6747,7 @@ } }, "too-many-methods": { - "$ref": "#/$defs/RuleSettings124", + "$ref": "#/$defs/RuleSettings125", "default": { "count-hooks": false, "count-setters-and-getters": false, @@ -6395,7 +6757,7 @@ } }, "too-many-properties": { - "$ref": "#/$defs/RuleSettings125", + "$ref": "#/$defs/RuleSettings126", "default": { "enabled": true, "level": "Error", @@ -6403,7 +6765,7 @@ } }, "trait-name": { - "$ref": "#/$defs/RuleSettings126", + "$ref": "#/$defs/RuleSettings127", "default": { "enabled": true, "level": "Help", @@ -6411,7 +6773,7 @@ } }, "use-compound-assignment": { - "$ref": "#/$defs/RuleSettings144", + "$ref": "#/$defs/RuleSettings147", "default": { "enabled": true, "level": "Help" @@ -6432,7 +6794,7 @@ } }, "use-specific-assertions": { - "$ref": "#/$defs/RuleSettings141", + "$ref": "#/$defs/RuleSettings143", "default": { "enabled": true, "level": "Warning" @@ -6446,21 +6808,21 @@ } }, "use-wp-functions": { - "$ref": "#/$defs/RuleSettings155", + "$ref": "#/$defs/RuleSettings160", "default": { "enabled": true, "level": "Warning" } }, "valid-docblock": { - "$ref": "#/$defs/RuleSettings127", + "$ref": "#/$defs/RuleSettings128", "default": { "enabled": true, "level": "Note" } }, "variable-name": { - "$ref": "#/$defs/RuleSettings128", + "$ref": "#/$defs/RuleSettings129", "default": { "camel": false, "check-parameters": true, @@ -6470,7 +6832,7 @@ } }, "yoda-conditions": { - "$ref": "#/$defs/RuleSettings150", + "$ref": "#/$defs/RuleSettings154", "default": { "enabled": false, "level": "Help" @@ -6528,15 +6890,20 @@ "type": "array" }, "workspace": { + "default": "/home/gcch/Répertoires/git.gcch.fr/haiku-atelier-2024", "description": "The workspace directory from which to start scanning.\n\nDefaults to the current working directory.", "type": "string" } }, - "required": [ - "workspace" - ], "type": "object" }, + "StringStyleOption": { + "enum": [ + "concatenation", + "interpolation" + ], + "type": "string" + }, "StructuralInheritanceConstraint": { "anyOf": [ { @@ -6738,6 +7105,7 @@ "$ref": "#/$defs/AnalyzerConfiguration", "default": { "allow-possibly-undefined-array-keys": true, + "allow-side-effects-in-conditions": true, "analyze-dead-code": false, "baseline": null, "baseline-variant": "loose", @@ -6754,6 +7122,7 @@ "disable-default-plugins": false, "enforce-class-finality": false, "excludes": [], + "find-overly-wide-return-types": false, "find-unused-definitions": true, "find-unused-expressions": true, "find-unused-parameters": false, @@ -6762,11 +7131,12 @@ "minimum-fail-level": "Error", "no-boolean-literal-comparison": false, "performance": { - "array-combination-threshold": 128, + "array-combination-threshold": 32, "consensus-limit-threshold": 256, "disjunction-complexity-threshold": 4096, "formula-size-threshold": 512, "integer-combination-threshold": 128, + "loop-assignment-depth-threshold": 1, "negation-complexity-threshold": 4096, "saturation-complexity-threshold": 8192, "string-combination-threshold": 128 @@ -6895,6 +7265,11 @@ "functions": [], "level": "Warning" }, + "disallowed-type-instantiation": { + "enabled": false, + "level": "Warning", + "types": [] + }, "enum-name": { "enabled": true, "level": "Help" @@ -7146,6 +7521,10 @@ "enabled": false, "level": "Warning" }, + "no-literal-namespace-string": { + "enabled": false, + "level": "Warning" + }, "no-literal-password": { "enabled": true, "level": "Error" @@ -7162,6 +7541,10 @@ "enabled": true, "level": "Help" }, + "no-null-property-init": { + "enabled": false, + "level": "Help" + }, "no-only": { "enabled": true, "level": "Error" @@ -7262,6 +7645,25 @@ "enabled": true, "level": "Warning" }, + "no-service-state-mutation": { + "allowed-methods": [ + "__construct", + "reset" + ], + "enabled": false, + "exclude-namespaces": [ + "App\\DTO\\", + "App\\Entity\\", + "App\\ValueObject\\" + ], + "include-namespaces": [ + "App\\" + ], + "level": "Warning", + "reset-interfaces": [ + "Symfony\\Contracts\\Service\\ResetInterface" + ] + }, "no-shell-execute-string": { "enabled": true, "level": "Error" @@ -7278,6 +7680,13 @@ "enabled": true, "level": "Warning" }, + "no-side-effects-with-declarations": { + "allow-class-alias": true, + "allow-class-exists": true, + "allow-conditional-declarations": true, + "enabled": false, + "level": "Warning" + }, "no-sprintf-concat": { "enabled": true, "level": "Warning" @@ -7441,6 +7850,11 @@ "enabled": true, "level": "Warning" }, + "string-style": { + "enabled": false, + "level": "Note", + "style": "interpolation" + }, "switch-continue-to-break": { "enabled": false, "level": "Warning" @@ -7525,6 +7939,11 @@ }, "description": "Linter service configuration.\n\nControls linting behavior, including enabled/disabled rules, rule-specific\nsettings, and reporting preferences. Defaults to an empty configuration\nif not specified in the config file." }, + "no-version-check": { + "default": false, + "description": "Whether to silence the project version drift warning.\n\nAffects only the minor / patch drift warning emitted when the installed\nmago binary does not match the `version` pinned in `mago.toml`. A major\ndrift is always fatal and is *not* affected by this flag; the whole\npoint of a major pin is to stop runs across incompatible config schemas.\n\nCan be enabled via `MAGO_NO_VERSION_CHECK` environment variable or\n`--no-version-check` CLI flag.", + "type": "boolean" + }, "parser": { "$ref": "#/$defs/ParserConfiguration", "default": { @@ -7569,6 +7988,14 @@ "format": "uint", "minimum": 0, "type": "integer" + }, + "version": { + "default": null, + "description": "The mago version this project is pinned to.\n\nAccepts three pin levels:\n\n- `\"1\"`: major pin; any `1.x.y` satisfies it. `mago init` emits this\n by default. Minor/patch drift within major 1 is a warning; a bump to\n `2.x` is a hard error.\n- `\"1.19\"`: minor pin; any `1.19.y` satisfies it.\n- `\"1.19.3\"`: exact pin; any drift is a warning, and this is the only\n form that `mago self-update --to-project-version` can target without\n ambiguity.\n\nEmpty / missing is currently a no-op; a future mago release is likely\nto start warning when the pin is absent, to prepare projects for 2.0.\n\n# Compatibility invariant (**do not break**)\n\nThis field's location (top-level) and type (string) are a load-bearing\ncontract for cross-major config compatibility: a future mago 2.x must\nbe able to read a mago 1.x `mago.toml` via a permissive top-level TOML\npass, find this field, and refuse to run with\n\"this config is pinned to mago 1\" *before* it ever hits its own strict\nschema. That means:\n\n- never move this field into a `[metadata]` section,\n- never rename it,\n- never change it from a string,\n- never change the pin grammar from `major[.minor[.patch]]`.", + "type": [ + "null", + "string" + ] } }, "title": "Configuration", diff --git a/mago.toml b/mago.toml index bdcdd94f..453893a5 100644 --- a/mago.toml +++ b/mago.toml @@ -37,27 +37,29 @@ threads = 0 [analyzer] allow-possibly-undefined-array-keys = false + allow-side-effects-in-conditions = true analyze-dead-code = true check-arrow-function-missing-type-hints = true check-closure-missing-type-hints = true + check-experimental = true check-missing-override = true check-missing-type-hints = true + check-name-casing = true check-property-initialization = true check-throws = true check-use-statements = true enforce-class-finality = true + find-overly-wide-return-types = true find-unused-definitions = true find-unused-expressions = true find-unused-parameters = true + memoize-properties = true no-boolean-literal-comparison = false perform-heuristic-checks = true plugins = ["psl"] require-api-or-internal = true strict-list-index-checks = true trust-existence-checks = false - check-experimental = true - check-name-casing = true - memoize-properties = true [analyzer.performance] array-combination-threshold = 256