Skip to content

Commit b62517f

Browse files
authored
Improvement (#375)
1 parent 04a8c59 commit b62517f

33 files changed

+847
-607
lines changed

.github/workflows/phplint.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
on: [push]
22

3-
name: "CI PHP"
3+
name: "CI PHP lint"
44

55
jobs:
66
test:
@@ -24,7 +24,7 @@ jobs:
2424
coverage: pcov
2525
extensions: intl, gd, zip, pdo, sqlite, pdo_sqlite, dom, curl, libxml, mbstring, fileinfo, exif, iconv
2626
ini-values: memory_limit=-1,disable_functions="",pcov.exclude="~(vendor|tests|node_modules)~",pcov.directory="./"
27-
php-version: 8.3
27+
php-version: 7.4
2828
tools: composer:v2
2929

3030
- name: Composer Install

.github/workflows/phptest.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
on:
22
- push
33

4-
name: CI PHP
4+
name: "CI PHP test"
55

66
jobs:
77
test:

composer.json

+6-2
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,11 @@
2626
"barryvdh/laravel-ide-helper": "^2.12|dev-master",
2727
"brianium/paratest": "^6.2|^7.4",
2828
"friendsofphp/php-cs-fixer": "^3.5",
29+
"larastan/larastan": "^1.0|^2.0",
2930
"nunomaduro/collision": "^5.3|^6.0|^8.0",
30-
"nunomaduro/larastan": "^1.0|^2.4",
3131
"orchestra/testbench": "^6.15|^7.0|^8.0|^9.0",
3232
"phpunit/phpunit": "^9.3|^10.5",
33+
"slevomat/coding-standard": "^8.15",
3334
"spatie/laravel-ray": "^1.23",
3435
"squizlabs/php_codesniffer": "^3.6",
3536
"vimeo/psalm": "^4.8|^5.6"
@@ -51,7 +52,10 @@
5152
"test-coverage": "phpunit --coverage-html coverage"
5253
},
5354
"config": {
54-
"sort-packages": true
55+
"sort-packages": true,
56+
"allow-plugins": {
57+
"dealerdirect/phpcodesniffer-composer-installer": true
58+
}
5559
},
5660
"extra": {
5761
"laravel": {

phpcs.xml

+194-7
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
<?xml version="1.0"?>
2-
<ruleset name="PSR2">
2+
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="laravel-migrations-generator" xsi:noNamespaceSchemaLocation="vendor/squizlabs/php_codesniffer/phpcs.xsd">
33
<description>Standard Based on PSR2</description>
4+
45
<file>src</file>
56
<file>tests</file>
67

7-
<rule ref="PSR2"/>
8-
<rule ref="Generic.Files.LineLength">
9-
<properties>
10-
<property name="lineLimit" value="210"/>
11-
<property name="absoluteLineLimit" value="0"/>
12-
</properties>
8+
<exclude-pattern>tests/resources/database/migrations/*.php</exclude-pattern>
9+
10+
<rule ref="PSR12">
11+
<exclude name="Generic.Files.LineLength"/>
1312
</rule>
1413

1514
<!-- Align corresponding assignment statement tokens -->
@@ -18,4 +17,192 @@
1817
<property name="error" value="true"/>
1918
</properties>
2019
</rule>
20+
21+
<rule ref="Squiz.Arrays.ArrayDeclaration.DoubleArrowNotAligned"/>
22+
23+
<!--<rule ref="SlevomatCodingStandard.Arrays.AlphabeticallySortedByKeys"/>-->
24+
<rule ref="SlevomatCodingStandard.Arrays.ArrayAccess"/>
25+
<rule ref="SlevomatCodingStandard.Arrays.DisallowImplicitArrayCreation"/>
26+
<rule ref="SlevomatCodingStandard.Arrays.DisallowPartiallyKeyed"/>
27+
<rule ref="SlevomatCodingStandard.Arrays.MultiLineArrayEndBracketPlacement"/>
28+
<rule ref="SlevomatCodingStandard.Arrays.SingleLineArrayWhitespace"/>
29+
<rule ref="SlevomatCodingStandard.Arrays.TrailingArrayComma"/>
30+
<rule ref="SlevomatCodingStandard.Attributes.AttributeAndTargetSpacing"/>
31+
<rule ref="SlevomatCodingStandard.Attributes.AttributesOrder"/>
32+
<rule ref="SlevomatCodingStandard.Attributes.DisallowAttributesJoining"/>
33+
<rule ref="SlevomatCodingStandard.Attributes.DisallowMultipleAttributesPerLine"/>
34+
<rule ref="SlevomatCodingStandard.Attributes.RequireAttributeAfterDocComment"/>
35+
<rule ref="SlevomatCodingStandard.Classes.BackedEnumTypeSpacing"/>
36+
<rule ref="SlevomatCodingStandard.Classes.ClassConstantVisibility"/>
37+
<!--<rule ref="SlevomatCodingStandard.Classes.ClassLength"/>-->
38+
<rule ref="SlevomatCodingStandard.Classes.ClassMemberSpacing"/>
39+
<rule ref="SlevomatCodingStandard.Classes.ClassStructure"/>
40+
<rule ref="SlevomatCodingStandard.Classes.ConstantSpacing"/>
41+
<!-- <rule ref="SlevomatCodingStandard.Classes.DisallowConstructorPropertyPromotion"/>-->
42+
<!--<rule ref="SlevomatCodingStandard.Classes.DisallowLateStaticBindingForConstants"/>-->
43+
<!--<rule ref="SlevomatCodingStandard.Classes.DisallowMultiConstantDefinition"/>-->
44+
<!--<rule ref="SlevomatCodingStandard.Classes.DisallowMultiPropertyDefinition"/>-->
45+
<rule ref="SlevomatCodingStandard.Classes.DisallowStringExpressionPropertyFetch"/>
46+
<!--<rule ref="SlevomatCodingStandard.Classes.EmptyLinesAroundClassBraces"/>-->
47+
<rule ref="SlevomatCodingStandard.Classes.EnumCaseSpacing"/>
48+
<!--<rule ref="SlevomatCodingStandard.Classes.ForbiddenPublicProperty"/>-->
49+
<rule ref="SlevomatCodingStandard.Classes.MethodSpacing"/>
50+
<rule ref="SlevomatCodingStandard.Classes.ModernClassNameReference"/>
51+
<rule ref="SlevomatCodingStandard.Classes.ParentCallSpacing"/>
52+
<rule ref="SlevomatCodingStandard.Classes.PropertyDeclaration"/>
53+
<rule ref="SlevomatCodingStandard.Classes.PropertySpacing"/>
54+
<!--<rule ref="SlevomatCodingStandard.Classes.RequireAbstractOrFinal"/>-->
55+
<rule ref="SlevomatCodingStandard.Classes.RequireConstructorPropertyPromotion"/>
56+
<!--<rule ref="SlevomatCodingStandard.Classes.RequireMultiLineMethodSignature"/>-->
57+
<rule ref="SlevomatCodingStandard.Classes.RequireSelfReference"/>
58+
<rule ref="SlevomatCodingStandard.Classes.RequireSingleLineMethodSignature"/>
59+
<rule ref="SlevomatCodingStandard.Classes.SuperfluousAbstractClassNaming"/>
60+
<rule ref="SlevomatCodingStandard.Classes.SuperfluousErrorNaming"/>
61+
<rule ref="SlevomatCodingStandard.Classes.SuperfluousExceptionNaming"/>
62+
<rule ref="SlevomatCodingStandard.Classes.SuperfluousInterfaceNaming"/>
63+
<rule ref="SlevomatCodingStandard.Classes.SuperfluousTraitNaming"/>
64+
<rule ref="SlevomatCodingStandard.Classes.TraitUseDeclaration"/>
65+
<!--<rule ref="SlevomatCodingStandard.Classes.TraitUseSpacing"/>-->
66+
<rule ref="SlevomatCodingStandard.Classes.UselessLateStaticBinding"/>
67+
<rule ref="SlevomatCodingStandard.Commenting.AnnotationName"/>
68+
<rule ref="SlevomatCodingStandard.Commenting.DeprecatedAnnotationDeclaration"/>
69+
<!--<rule ref="SlevomatCodingStandard.Commenting.DisallowCommentAfterCode"/>-->
70+
<rule ref="SlevomatCodingStandard.Commenting.DisallowOneLinePropertyDocComment"/>
71+
<rule ref="SlevomatCodingStandard.Commenting.DocCommentSpacing"/>
72+
<rule ref="SlevomatCodingStandard.Commenting.EmptyComment"/>
73+
<rule ref="SlevomatCodingStandard.Commenting.ForbiddenAnnotations"/>
74+
<rule ref="SlevomatCodingStandard.Commenting.ForbiddenComments"/>
75+
<rule ref="SlevomatCodingStandard.Commenting.InlineDocCommentDeclaration"/>
76+
<!--<rule ref="SlevomatCodingStandard.Commenting.RequireOneLineDocComment"/>-->
77+
<!--<rule ref="SlevomatCodingStandard.Commenting.RequireOneLinePropertyDocComment"/>-->
78+
<rule ref="SlevomatCodingStandard.Commenting.UselessFunctionDocComment"/>
79+
<!--<rule ref="SlevomatCodingStandard.Commenting.UselessInheritDocComment"/>-->
80+
<rule ref="SlevomatCodingStandard.Complexity.Cognitive">
81+
<properties>
82+
<property name="warningThreshold" value="15"/>
83+
<property name="errorThreshold" value="15"/>
84+
</properties>
85+
</rule>
86+
<rule ref="SlevomatCodingStandard.ControlStructures.AssignmentInCondition"/>
87+
<rule ref="SlevomatCodingStandard.ControlStructures.BlockControlStructureSpacing"/>
88+
<rule ref="SlevomatCodingStandard.ControlStructures.DisallowContinueWithoutIntegerOperandInSwitch"/>
89+
<rule ref="SlevomatCodingStandard.ControlStructures.DisallowEmpty"/>
90+
<!--<rule ref="SlevomatCodingStandard.ControlStructures.DisallowNullSafeObjectOperator"/>-->
91+
<!--<rule ref="SlevomatCodingStandard.ControlStructures.DisallowShortTernaryOperator"/>-->
92+
<!--<rule ref="SlevomatCodingStandard.ControlStructures.DisallowTrailingMultiLineTernaryOperator"/>-->
93+
<rule ref="SlevomatCodingStandard.ControlStructures.DisallowYodaComparison"/>
94+
<rule ref="SlevomatCodingStandard.ControlStructures.EarlyExit"/>
95+
<!--<rule ref="SlevomatCodingStandard.ControlStructures.JumpStatementsSpacing"/>-->
96+
<rule ref="SlevomatCodingStandard.ControlStructures.LanguageConstructWithParentheses"/>
97+
<rule ref="SlevomatCodingStandard.ControlStructures.NewWithParentheses"/>
98+
<!--<rule ref="SlevomatCodingStandard.ControlStructures.NewWithoutParentheses"/>-->
99+
<rule ref="SlevomatCodingStandard.ControlStructures.RequireMultiLineCondition"/>
100+
<!--<rule ref="SlevomatCodingStandard.ControlStructures.RequireMultiLineTernaryOperator"/>-->
101+
<rule ref="SlevomatCodingStandard.ControlStructures.RequireNullCoalesceEqualOperator"/>
102+
<rule ref="SlevomatCodingStandard.ControlStructures.RequireNullCoalesceOperator"/>
103+
<rule ref="SlevomatCodingStandard.ControlStructures.RequireNullSafeObjectOperator"/>
104+
<rule ref="SlevomatCodingStandard.ControlStructures.RequireShortTernaryOperator"/>
105+
<!--<rule ref="SlevomatCodingStandard.ControlStructures.RequireSingleLineCondition"/>-->
106+
<rule ref="SlevomatCodingStandard.ControlStructures.RequireTernaryOperator"/>
107+
<!--<rule ref="SlevomatCodingStandard.ControlStructures.RequireYodaComparison"/>-->
108+
<rule ref="SlevomatCodingStandard.ControlStructures.UselessIfConditionWithReturn"/>
109+
<rule ref="SlevomatCodingStandard.ControlStructures.UselessTernaryOperator"/>
110+
<rule ref="SlevomatCodingStandard.Exceptions.DeadCatch"/>
111+
<!--<rule ref="SlevomatCodingStandard.Exceptions.DisallowNonCapturingCatch"/>-->
112+
<rule ref="SlevomatCodingStandard.Exceptions.ReferenceThrowableOnly"/>
113+
<rule ref="SlevomatCodingStandard.Exceptions.RequireNonCapturingCatch"/>
114+
<!--<rule ref="SlevomatCodingStandard.Files.FileLength"/>-->
115+
<!--<rule ref="SlevomatCodingStandard.Files.LineLength"/>-->
116+
<!-- <rule ref="SlevomatCodingStandard.Files.TypeNameMatchesFileName"/>-->
117+
<rule ref="SlevomatCodingStandard.Functions.ArrowFunctionDeclaration"/>
118+
<!--<rule ref="SlevomatCodingStandard.Functions.DisallowArrowFunction"/>-->
119+
<!--<rule ref="SlevomatCodingStandard.Functions.DisallowEmptyFunction"/>-->
120+
<!--<rule ref="SlevomatCodingStandard.Functions.DisallowNamedArguments"/>-->
121+
<!--<rule ref="SlevomatCodingStandard.Functions.DisallowTrailingCommaInCall"/>-->
122+
<!--<rule ref="SlevomatCodingStandard.Functions.DisallowTrailingCommaInClosureUse"/>-->
123+
<!--<rule ref="SlevomatCodingStandard.Functions.DisallowTrailingCommaInDeclaration"/>-->
124+
<!--<rule ref="SlevomatCodingStandard.Functions.FunctionLength"/>-->
125+
<rule ref="SlevomatCodingStandard.Functions.NamedArgumentSpacing"/>
126+
<rule ref="SlevomatCodingStandard.Functions.RequireArrowFunction"/>
127+
<!--<rule ref="SlevomatCodingStandard.Functions.RequireMultiLineCall"/>-->
128+
<!--<rule ref="SlevomatCodingStandard.Functions.RequireSingleLineCall"/>-->
129+
<rule ref="SlevomatCodingStandard.Functions.RequireTrailingCommaInCall"/>
130+
<rule ref="SlevomatCodingStandard.Functions.RequireTrailingCommaInClosureUse"/>
131+
<rule ref="SlevomatCodingStandard.Functions.RequireTrailingCommaInDeclaration"/>
132+
<rule ref="SlevomatCodingStandard.Functions.StaticClosure"/>
133+
<!--<rule ref="SlevomatCodingStandard.Functions.StrictCall"/>-->
134+
<rule ref="SlevomatCodingStandard.Functions.UnusedInheritedVariablePassedToClosure"/>
135+
<!--<rule ref="SlevomatCodingStandard.Functions.UnusedParameter"/>-->
136+
<rule ref="SlevomatCodingStandard.Functions.UselessParameterDefaultValue"/>
137+
<rule ref="SlevomatCodingStandard.Namespaces.AlphabeticallySortedUses"/>
138+
<!--<rule ref="SlevomatCodingStandard.Namespaces.DisallowGroupUse"/>-->
139+
<rule ref="SlevomatCodingStandard.Namespaces.FullyQualifiedClassNameInAnnotation">
140+
<properties>
141+
<property name="ignoredAnnotationNames" type="array">
142+
<element value="@phpstan-type"/>
143+
</property>
144+
</properties>
145+
</rule>
146+
<!--<rule ref="SlevomatCodingStandard.Namespaces.FullyQualifiedExceptions"/>-->
147+
<!--<rule ref="SlevomatCodingStandard.Namespaces.FullyQualifiedGlobalConstants"/>-->
148+
<!--<rule ref="SlevomatCodingStandard.Namespaces.FullyQualifiedGlobalFunctions"/>-->
149+
<rule ref="SlevomatCodingStandard.Namespaces.MultipleUsesPerLine"/>
150+
<rule ref="SlevomatCodingStandard.Namespaces.NamespaceDeclaration"/>
151+
<rule ref="SlevomatCodingStandard.Namespaces.NamespaceSpacing"/>
152+
<rule ref="SlevomatCodingStandard.Namespaces.ReferenceUsedNamesOnly"/>
153+
<rule ref="SlevomatCodingStandard.Namespaces.RequireOneNamespaceInFile"/>
154+
<rule ref="SlevomatCodingStandard.Namespaces.UnusedUses"/>
155+
<rule ref="SlevomatCodingStandard.Namespaces.UseDoesNotStartWithBackslash"/>
156+
<rule ref="SlevomatCodingStandard.Namespaces.UseFromSameNamespace"/>
157+
<!--<rule ref="SlevomatCodingStandard.Namespaces.UseOnlyWhitelistedNamespaces"/>-->
158+
<rule ref="SlevomatCodingStandard.Namespaces.UseSpacing"/>
159+
<rule ref="SlevomatCodingStandard.Namespaces.UselessAlias"/>
160+
<!--<rule ref="SlevomatCodingStandard.Numbers.DisallowNumericLiteralSeparator"/>-->
161+
<!--<rule ref="SlevomatCodingStandard.Numbers.RequireNumericLiteralSeparator"/>-->
162+
<rule ref="SlevomatCodingStandard.Operators.DisallowEqualOperators"/>
163+
<!--<rule ref="SlevomatCodingStandard.Operators.DisallowIncrementAndDecrementOperators"/>-->
164+
<rule ref="SlevomatCodingStandard.Operators.NegationOperatorSpacing"/>
165+
<rule ref="SlevomatCodingStandard.Operators.RequireCombinedAssignmentOperator"/>
166+
<rule ref="SlevomatCodingStandard.Operators.RequireOnlyStandaloneIncrementAndDecrementOperators"/>
167+
<rule ref="SlevomatCodingStandard.Operators.SpreadOperatorSpacing"/>
168+
<!--<rule ref="SlevomatCodingStandard.PHP.DisallowDirectMagicInvokeCall"/>-->
169+
<!--<rule ref="SlevomatCodingStandard.PHP.DisallowReference"/>-->
170+
<rule ref="SlevomatCodingStandard.PHP.ForbiddenClasses"/>
171+
<rule ref="SlevomatCodingStandard.PHP.OptimizedFunctionsWithoutUnpacking"/>
172+
<rule ref="SlevomatCodingStandard.PHP.ReferenceSpacing"/>
173+
<!--<rule ref="SlevomatCodingStandard.PHP.RequireExplicitAssertion"/>-->
174+
<rule ref="SlevomatCodingStandard.PHP.RequireNowdoc"/>
175+
<rule ref="SlevomatCodingStandard.PHP.ShortList"/>
176+
<rule ref="SlevomatCodingStandard.PHP.TypeCast"/>
177+
<rule ref="SlevomatCodingStandard.PHP.UselessParentheses"/>
178+
<rule ref="SlevomatCodingStandard.PHP.UselessSemicolon"/>
179+
<rule ref="SlevomatCodingStandard.Strings.DisallowVariableParsing"/>
180+
<!--<rule ref="SlevomatCodingStandard.TypeHints.DeclareStrictTypes"/>-->
181+
<!--<rule ref="SlevomatCodingStandard.TypeHints.DisallowArrayTypeHintSyntax"/>-->
182+
<!--<rule ref="SlevomatCodingStandard.TypeHints.DisallowMixedTypeHint"/>-->
183+
<rule ref="SlevomatCodingStandard.TypeHints.LongTypeHints"/>
184+
<rule ref="SlevomatCodingStandard.TypeHints.NullTypeHintOnLastPosition"/>
185+
<rule ref="SlevomatCodingStandard.TypeHints.NullableTypeForNullDefaultValue"/>
186+
<rule ref="SlevomatCodingStandard.TypeHints.ParameterTypeHint"/>
187+
<rule ref="SlevomatCodingStandard.TypeHints.ParameterTypeHintSpacing"/>
188+
<rule ref="SlevomatCodingStandard.TypeHints.PropertyTypeHint"/>
189+
<rule ref="SlevomatCodingStandard.TypeHints.ReturnTypeHint"/>
190+
<rule ref="SlevomatCodingStandard.TypeHints.ReturnTypeHintSpacing"/>
191+
<rule ref="SlevomatCodingStandard.TypeHints.UnionTypeHintFormat"/>
192+
<rule ref="SlevomatCodingStandard.TypeHints.UselessConstantTypeHint"/>
193+
<rule ref="SlevomatCodingStandard.Variables.DisallowVariableVariable"/>
194+
<!--<rule ref="SlevomatCodingStandard.Variables.DisallowSuperGlobalVariable"/>-->
195+
<rule ref="SlevomatCodingStandard.Variables.DuplicateAssignmentToVariable"/>
196+
<rule ref="SlevomatCodingStandard.Variables.UnusedVariable">
197+
<properties>
198+
<property name="ignoreUnusedValuesWhenOnlyKeysAreUsedInForeach" value="true"/>
199+
</properties>
200+
</rule>
201+
<rule ref="SlevomatCodingStandard.Variables.UselessVariable"/>
202+
<rule ref="SlevomatCodingStandard.Whitespaces.DuplicateSpaces">
203+
<properties>
204+
<property name="ignoreSpacesBeforeAssignment" value="true"/>
205+
<property name="ignoreSpacesInAnnotation" value="true"/>
206+
</properties>
207+
</rule>
21208
</ruleset>

phpstan.neon

+5-10
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
11
includes:
2-
- ./vendor/nunomaduro/larastan/extension.neon
2+
- ./vendor/larastan/larastan/extension.neon
33

44
parameters:
55

66
paths:
77
- src
88
- tests
99

10-
# The level 8 is the highest level
11-
level: 5
10+
# The level 9 is the highest level
11+
level: 8
1212

13-
# ignoreErrors:
14-
# - '#PHPDoc tag @var#'
15-
#
16-
# excludePaths:
17-
# - ./*/*/FileToBeExcluded.php
18-
19-
checkMissingIterableValueType: false
13+
excludePaths:
14+
- ./tests/Stubs/**

0 commit comments

Comments
 (0)