Skip to content

Commit ded868a

Browse files
authored
Ease enabling rules one-by-one (#260)
1 parent 39cd7c4 commit ded868a

File tree

4 files changed

+53
-135
lines changed

4 files changed

+53
-135
lines changed

README.md

Lines changed: 12 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -17,95 +17,23 @@ includes:
1717
- vendor/shipmonk/phpstan-rules/rules.neon
1818
```
1919

20-
You can easily disable or reconfigure any rule. Here is a default setup used in `rules.neon` you can change:
20+
You can easily disable or reconfigure any rule, for example:
2121
```neon
2222
parameters:
2323
shipmonkRules:
24-
allowComparingOnlyComparableTypes:
25-
enabled: true
26-
backedEnumGenerics:
27-
enabled: true
28-
classSuffixNaming:
29-
enabled: true
30-
superclassToSuffixMapping: []
31-
enforceClosureParamNativeTypehint:
32-
enabled: true
33-
allowMissingTypeWhenInferred: false
34-
enforceEnumMatch:
35-
enabled: true
36-
enforceIteratorToArrayPreserveKeys:
37-
enabled: true
38-
enforceListReturn:
39-
enabled: true
40-
enforceNativeReturnTypehint:
41-
enabled: true
4224
enforceReadonlyPublicProperty:
43-
enabled: true
44-
forbidArithmeticOperationOnNonNumber:
45-
enabled: true
46-
allowNumericString: false
47-
forbidCast:
48-
enabled: true
49-
blacklist: ['(array)', '(object)', '(unset)']
50-
forbidCheckedExceptionInCallable:
51-
enabled: true
52-
allowedCheckedExceptionCallables: []
53-
forbidCheckedExceptionInYieldingMethod:
54-
enabled: true
55-
forbidCustomFunctions:
56-
enabled: true
57-
list: []
58-
forbidEnumInFunctionArguments:
59-
enabled: true
60-
forbidFetchOnMixed:
61-
enabled: true
62-
forbidIdenticalClassComparison:
63-
enabled: true
64-
blacklist: ['DateTimeInterface']
65-
forbidIncrementDecrementOnNonInteger:
66-
enabled: true
67-
forbidMatchDefaultArmForEnums:
68-
enabled: true
69-
forbidMethodCallOnMixed:
70-
enabled: true
71-
forbidNotNormalizedType:
72-
enabled: true
73-
checkDisjunctiveNormalForm: true
74-
forbidNullInAssignOperations:
75-
enabled: true
76-
blacklist: ['??=']
77-
forbidNullInBinaryOperations:
78-
enabled: true
79-
blacklist: ['===', '!==', '??']
80-
forbidNullInInterpolatedString:
81-
enabled: true
82-
forbidPhpDocNullabilityMismatchWithNativeTypehint:
83-
enabled: true
84-
forbidProtectedEnumMethod:
85-
enabled: true
86-
forbidReturnValueInYieldingMethod:
87-
enabled: true
88-
reportRegardlessOfReturnType: true
25+
enabled: false
8926
forbidUnsafeArrayKey:
90-
enabled: true
91-
reportMixed: true
92-
reportInsideIsset: true
93-
forbidVariableTypeOverwriting:
94-
enabled: true
95-
forbidUnsetClassField:
96-
enabled: true
97-
forbidUselessNullableReturn:
98-
enabled: true
99-
forbidUnusedException:
100-
enabled: true
101-
forbidUnusedMatchResult:
102-
enabled: true
103-
requirePreviousExceptionPass:
104-
enabled: true
105-
reportEvenIfExceptionIsNotAcceptableByRethrownOne: true
106-
uselessPrivatePropertyDefaultValue:
107-
enabled: true
108-
uselessPrivatePropertyNullability:
27+
reportMixed: false
28+
```
29+
30+
Or you can disable all rules and enable only those you want:
31+
```neon
32+
parameters:
33+
shipmonkRules:
34+
enableAllRules: false
35+
36+
allowComparingOnlyComparableTypes:
10937
enabled: true
11038
```
11139

bin/verify-readme-default-config.php

Lines changed: 0 additions & 12 deletions
This file was deleted.

composer.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,14 @@
6060
"@check:tests",
6161
"@check:dependencies",
6262
"@check:collisions",
63-
"@check:ignores",
64-
"@check:readme"
63+
"@check:ignores"
6564
],
6665
"check:collisions": "detect-collisions src tests",
6766
"check:composer": "composer normalize --dry-run --no-check-lock --no-update-lock",
6867
"check:cs": "phpcs",
6968
"check:dependencies": "composer-dependency-analyser",
7069
"check:ec": "ec src tests",
7170
"check:ignores": "php bin/verify-inline-ignore.php",
72-
"check:readme": "php bin/verify-readme-default-config.php",
7371
"check:tests": "phpunit -vvv tests",
7472
"check:types": "phpstan analyse -vvv --ansi",
7573
"fix:cs": "phpcbf"

rules.neon

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,94 +1,98 @@
11
parameters:
22
shipmonkRules:
3+
enableAllRules: true
4+
35
allowComparingOnlyComparableTypes:
4-
enabled: true
6+
enabled: %shipmonkRules.enableAllRules%
57
backedEnumGenerics:
6-
enabled: true
8+
enabled: %shipmonkRules.enableAllRules%
79
classSuffixNaming:
8-
enabled: true
10+
enabled: %shipmonkRules.enableAllRules%
911
superclassToSuffixMapping: []
1012
enforceClosureParamNativeTypehint:
11-
enabled: true
13+
enabled: %shipmonkRules.enableAllRules%
1214
allowMissingTypeWhenInferred: false
1315
enforceEnumMatch:
14-
enabled: true
16+
enabled: %shipmonkRules.enableAllRules%
1517
enforceIteratorToArrayPreserveKeys:
16-
enabled: true
18+
enabled: %shipmonkRules.enableAllRules%
1719
enforceListReturn:
18-
enabled: true
20+
enabled: %shipmonkRules.enableAllRules%
1921
enforceNativeReturnTypehint:
20-
enabled: true
22+
enabled: %shipmonkRules.enableAllRules%
2123
enforceReadonlyPublicProperty:
22-
enabled: true
24+
enabled: %shipmonkRules.enableAllRules%
2325
forbidArithmeticOperationOnNonNumber:
24-
enabled: true
26+
enabled: %shipmonkRules.enableAllRules%
2527
allowNumericString: false
2628
forbidCast:
27-
enabled: true
29+
enabled: %shipmonkRules.enableAllRules%
2830
blacklist: ['(array)', '(object)', '(unset)']
2931
forbidCheckedExceptionInCallable:
30-
enabled: true
32+
enabled: %shipmonkRules.enableAllRules%
3133
allowedCheckedExceptionCallables: []
3234
forbidCheckedExceptionInYieldingMethod:
33-
enabled: true
35+
enabled: %shipmonkRules.enableAllRules%
3436
forbidCustomFunctions:
35-
enabled: true
37+
enabled: %shipmonkRules.enableAllRules%
3638
list: []
3739
forbidEnumInFunctionArguments:
38-
enabled: true
40+
enabled: %shipmonkRules.enableAllRules%
3941
forbidFetchOnMixed:
40-
enabled: true
42+
enabled: %shipmonkRules.enableAllRules%
4143
forbidIdenticalClassComparison:
42-
enabled: true
44+
enabled: %shipmonkRules.enableAllRules%
4345
blacklist: ['DateTimeInterface']
4446
forbidIncrementDecrementOnNonInteger:
45-
enabled: true
47+
enabled: %shipmonkRules.enableAllRules%
4648
forbidMatchDefaultArmForEnums:
47-
enabled: true
49+
enabled: %shipmonkRules.enableAllRules%
4850
forbidMethodCallOnMixed:
49-
enabled: true
51+
enabled: %shipmonkRules.enableAllRules%
5052
forbidNotNormalizedType:
51-
enabled: true
53+
enabled: %shipmonkRules.enableAllRules%
5254
checkDisjunctiveNormalForm: true
5355
forbidNullInAssignOperations:
54-
enabled: true
56+
enabled: %shipmonkRules.enableAllRules%
5557
blacklist: ['??=']
5658
forbidNullInBinaryOperations:
57-
enabled: true
59+
enabled: %shipmonkRules.enableAllRules%
5860
blacklist: ['===', '!==', '??']
5961
forbidNullInInterpolatedString:
60-
enabled: true
62+
enabled: %shipmonkRules.enableAllRules%
6163
forbidPhpDocNullabilityMismatchWithNativeTypehint:
62-
enabled: true
64+
enabled: %shipmonkRules.enableAllRules%
6365
forbidProtectedEnumMethod:
64-
enabled: true
66+
enabled: %shipmonkRules.enableAllRules%
6567
forbidReturnValueInYieldingMethod:
66-
enabled: true
68+
enabled: %shipmonkRules.enableAllRules%
6769
reportRegardlessOfReturnType: true
6870
forbidUnsafeArrayKey:
69-
enabled: true
71+
enabled: %shipmonkRules.enableAllRules%
7072
reportMixed: true
7173
reportInsideIsset: true
7274
forbidVariableTypeOverwriting:
73-
enabled: true
75+
enabled: %shipmonkRules.enableAllRules%
7476
forbidUnsetClassField:
75-
enabled: true
77+
enabled: %shipmonkRules.enableAllRules%
7678
forbidUselessNullableReturn:
77-
enabled: true
79+
enabled: %shipmonkRules.enableAllRules%
7880
forbidUnusedException:
79-
enabled: true
81+
enabled: %shipmonkRules.enableAllRules%
8082
forbidUnusedMatchResult:
81-
enabled: true
83+
enabled: %shipmonkRules.enableAllRules%
8284
requirePreviousExceptionPass:
83-
enabled: true
85+
enabled: %shipmonkRules.enableAllRules%
8486
reportEvenIfExceptionIsNotAcceptableByRethrownOne: true
8587
uselessPrivatePropertyDefaultValue:
86-
enabled: true
88+
enabled: %shipmonkRules.enableAllRules%
8789
uselessPrivatePropertyNullability:
88-
enabled: true
90+
enabled: %shipmonkRules.enableAllRules%
8991

9092
parametersSchema:
9193
shipmonkRules: structure([
94+
enableAllRules: bool()
95+
9296
allowComparingOnlyComparableTypes: structure([
9397
enabled: bool()
9498
])

0 commit comments

Comments
 (0)