diff --git a/README.md b/README.md index 7c28e0b..374585c 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,40 @@ PHPStan interprets `$title` as `string`. For best results, ensure the first `@param` tag in these docblocks is accurate. +## Disabling Rules + +You can disable rules using configuration parameters: + +```neon +parameters: + phpstanWP: + checkHookCallback: false + checkHookDocBlock: false +``` + +## Enabling Rules One-by-one + +If you want to use a selective set of rules, you can! + +You can disable all rules with: + +```neon +parameters: + phpstanWP: + allRules: false +``` + +Then you can re-enable individual rules: + +```neon +parameters: + phpstanWP: + allRules: false + checkHookCallback: true +``` + +Even with `phpstanWP.allRules` set to `false`, part of this package is still in effect. That's because phpstan-wordpress also provides [dynamic return types](https://phpstan.org/developing-extensions/dynamic-return-type-extensions) and [type specifiers](https://phpstan.org/developing-extensions/type-specifying-extensions). + ## Make Your Code Testable - Write clean OOP code: 1 class per file, and no additional code outside `class Name { ... }`. diff --git a/extension.neon b/extension.neon index e66b056..54f8587 100644 --- a/extension.neon +++ b/extension.neon @@ -1,6 +1,56 @@ +parameters: + bootstrapFiles: + - ../../php-stubs/wordpress-stubs/wordpress-stubs.php + - bootstrap.php + dynamicConstantNames: + - WP_DEBUG + - WP_DEBUG_LOG + - WP_DEBUG_DISPLAY + - EMPTY_TRASH_DAYS + - WP_CLI + - COOKIE_DOMAIN + - SAVEQUERIES + - SCRIPT_DEBUG + earlyTerminatingFunctionCalls: + - wp_send_json + - wp_nonce_ays + earlyTerminatingMethodCalls: + IXR_Server: + - output + WP_Ajax_Response: + - send + WP_CLI: + - error + - halt + phpstanWP: + allRules: true + checkHookCallback: %phpstanWP.allRules% + checkHookDocBlock: %phpstanWP.allRules% + +parametersSchema: + phpstanWP: structure([ + allRules: bool() + checkHookDocBlock: bool() + checkHookCallback: bool() + ]) + +conditionalTags: + SzepeViktor\PHPStan\WordPress\HookCallbackRule: + phpstan.rules.rule: %phpstanWP.checkHookCallback% + SzepeViktor\PHPStan\WordPress\HookDocsRule: + phpstan.rules.rule: %phpstanWP.checkHookDocBlock% + services: - class: SzepeViktor\PHPStan\WordPress\HookDocBlock + - + class: SzepeViktor\PHPStan\WordPress\HookCallbackRule + - + class: SzepeViktor\PHPStan\WordPress\HookDocsRule + - + class: SzepeViktor\PHPStan\WordPress\HookDocsVisitor + tags: + - phpstan.parser.richParserNodeVisitor - class: SzepeViktor\PHPStan\WordPress\EscSqlDynamicFunctionReturnTypeExtension tags: @@ -17,10 +67,6 @@ services: class: SzepeViktor\PHPStan\WordPress\WpParseUrlFunctionDynamicReturnTypeExtension tags: - phpstan.broker.dynamicFunctionReturnTypeExtension - - - class: SzepeViktor\PHPStan\WordPress\HookDocsVisitor - tags: - - phpstan.parser.richParserNodeVisitor - class: SzepeViktor\PHPStan\WordPress\AssertWpErrorTypeSpecifyingExtension tags: @@ -29,30 +75,3 @@ services: class: SzepeViktor\PHPStan\WordPress\AssertNotWpErrorTypeSpecifyingExtension tags: - phpstan.typeSpecifier.methodTypeSpecifyingExtension -rules: - - SzepeViktor\PHPStan\WordPress\HookCallbackRule - - SzepeViktor\PHPStan\WordPress\HookDocsRule -parameters: - bootstrapFiles: - - ../../php-stubs/wordpress-stubs/wordpress-stubs.php - - bootstrap.php - dynamicConstantNames: - - WP_DEBUG - - WP_DEBUG_LOG - - WP_DEBUG_DISPLAY - - EMPTY_TRASH_DAYS - - WP_CLI - - COOKIE_DOMAIN - - SAVEQUERIES - - SCRIPT_DEBUG - earlyTerminatingFunctionCalls: - - wp_send_json - - wp_nonce_ays - earlyTerminatingMethodCalls: - IXR_Server: - - output - WP_Ajax_Response: - - send - WP_CLI: - - error - - halt