RexStan-Überprüfung: lib/Cronjob/Sync.php #109
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
RexStan-Überprüfung (Level 6, REDAXO SuperGlobals|Strict-Mode|Deprecation Warnings|phpstan-dba|report mixed|dead code)
'Property FriendsOfRedaxo\Neues\Cronjob\Sync::$counter has no type specified.'
/** @var ... */
hinzugefügt'PHPDoc tag @var for variable $response contains unknown class .....\Cronjob\rex_socket_response.'
'Call to method xyz() on an unknown class .....\Cronjob\rex_socket_response.'
An zwei Stellen steht
Faktisch funtioniert der Code, denn
rex_socket
ist per Use korrekt eingeordnet und$socket->doGet()
liefert ein\rex_socket_response
-Objekt. Somit ist der PHPDoc-Tag überflüssig. Rexstan und die IDE werten die Rückgabe auch so korrekt aus.Damit erledigen sich zugleich die Fehlermeldungen zu 'Call to method xyz() on an unknown class ...\rex_socket_response'.
'Method FriendsOfRedaxo\Neues\Cronjob\Sync::createEntry() has no return type specified.'
'Method FriendsOfRedaxo\Neues\Cronjob\Sync::createEntry() has parameter $current with no value type specified in iterable type array.'
'Method FriendsOfRedaxo\Neues\Cronjob\Sync::createEntry() has parameter $current with no value type specified in iterable type array.'
'Method FriendsOfRedaxo\Neues\Cronjob\Sync::createCategory() has parameter $current with no type specified.'
'Method FriendsOfRedaxo\Neues\Cronjob\Sync::createAuthor() has no return type specified.'
'Method FriendsOfRedaxo\Neues\Cronjob\Sync::createAuthor() has parameter $current with no value type specified in iterable type array.'
Der Paramter ist ersteinmal mangels besserer Erkenntnis auf
@param array<string,mixed> $current
gesetzt. Der Return-Typ ist passend gesetzt zu dem, was die jeweilige Methode macht (void
,Category
,Author
).Zu klären wäre, warum
createAuthor
bzw.createCategory
ein entsprechendes Objekt zurückliefern,createEntry
aber nicht.'If condition is always true.'
Kommt an zwei Stellen vor. Hier nur einmal beschrieben:
Da
createCategory
stets ein Category-Objekt liefert (s.o.), kann die Abfrage entfallen.'Only booleans are allowed in &&, FriendsOfRedaxo\Neues\Category|null given on the right side.'
Die Abfrage konkret gestaltet; auf
not null
abfragen:'Only booleans are allowed in an if condition, mixed given.'
Hier sollte wohl eher abgefragt werden, ob das Array-Element existiert.
wird zu
'Only booleans are allowed in an if condition, rex_media|null given.'
Auch hier konkret prüfen (
null !== ...
).'Only booleans are allowed in a ternary operator condition, array given.'
RexStan moniert, dass es kein konkreter Vergleich ist. Erschwerend kommt hinzu, dass immer
ein gefülltes Array geliefert wird; die Abfrage ergibt also immrer True. Im Fehlerfall kommt eine Exception.
Also muss man die Exception abfangen und dann false melden