As far as I'm informed, PHP Stan is the default for static code analysis of PHP codebases. We have +100 errors on level 3 of the analysis
$ ddev composer bugs
> ./vendor/bin/phpstan analyse -l 3 Infobip
462/462 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
------- -----------------------------------------------------------------------------------------
Line Api/CallsApi.php
------- -----------------------------------------------------------------------------------------
226 Variable $callsAddExistingCallRequest in isset() always exists and is not nullable.
517 Variable $callsAddNewCallRequest in isset() always exists and is not nullable.
808 Variable $callsAnswerRequest in isset() always exists and is not nullable.
1099 Variable $callsApplicationTransferRequest in isset() always exists and is not nullable.
1402 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
1698 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
1982 Variable $callsDtmfCaptureRequest in isset() always exists and is not nullable.
2273 Variable $callsPlayRequest in isset() always exists and is not nullable.
2564 Variable $callsSayRequest in isset() always exists and is not nullable.
2855 Variable $callsDtmfSendRequest in isset() always exists and is not nullable.
3146 Variable $callsRecordingStartRequest in isset() always exists and is not nullable.
3433 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
3702 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
3982 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
4255 Variable $callsOnDemandComposition in isset() always exists and is not nullable.
4535 Variable $callsOnDemandComposition in isset() always exists and is not nullable.
4815 Variable $callsPlayRequest in isset() always exists and is not nullable.
5106 Variable $callsSayRequest in isset() always exists and is not nullable.
5397 Variable $callsStartRecordingRequest in isset() always exists and is not nullable.
5684 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
5953 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
6221 Variable $callsConnectRequest in isset() always exists and is not nullable.
6512 Variable $callsConnectWithNewCallRequest in isset() always exists and is not nullable.
6787 Variable $callBulkRequest in isset() always exists and is not nullable.
7062 Variable $callRequest in isset() always exists and is not nullable.
7337 Variable $callsConferenceRequest in isset() always exists and is not nullable.
7612 Variable $callsDialogRequest in isset() always exists and is not nullable.
7887 Variable $callsMediaStreamConfigRequest in isset() always exists and is not nullable.
8163 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
8432 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
8690 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
8959 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
9228 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
9497 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
9770 Variable $callsDialogPlayRequest in isset() always exists and is not nullable.
10061 Variable $callsDialogSayRequest in isset() always exists and is not nullable.
10352 Variable $callsDialogRecordingRequest in isset() always exists and is not nullable.
10639 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
10908 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
11188 Offset 'Content-Type' does not exist on array{Accept: 'application/octet…'}.
11457 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
11726 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
11995 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
12264 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
12644 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
12913 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
13191 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
13582 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
13939 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
14208 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
14477 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
14746 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
15068 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
15401 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
15756 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
16025 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
16294 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
16563 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
16897 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
17242 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
17586 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
17855 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
18133 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
18406 Variable $callsHangupRequest in isset() always exists and is not nullable.
18693 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
18962 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
19231 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
19500 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
19785 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
20058 Variable $callsRescheduleRequest in isset() always exists and is not nullable.
20334 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
20603 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
20876 Variable $callsStartMediaStreamRequest in isset() always exists and is not nullable.
21163 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
21447 Variable $callsUpdateRequest in isset() always exists and is not nullable.
21754 Variable $callsUpdateRequest in isset() always exists and is not nullable.
22045 Variable $callsMediaStreamConfigRequest in isset() always exists and is not nullable.
------- -----------------------------------------------------------------------------------------
------ -------------------------------------------------------------------------------------
Line Api/ClickToCallApi.php
------ -------------------------------------------------------------------------------------
194 Variable $callsClickToCallMessageBody in isset() always exists and is not nullable.
------ -------------------------------------------------------------------------------------
------ ----------------------------------------------------------------------------------------------------------------
Line Api/EmailApi.php
------ ----------------------------------------------------------------------------------------------------------------
194 Variable $emailAddDomainRequest in isset() always exists and is not nullable.
469 Variable $emailDomainIpRequest in isset() always exists and is not nullable.
618 Method Infobip\Api\EmailApi::deleteDomain() with return type void returns null but should not return anything.
723 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
974 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
1219 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
1461 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
1697 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
1972 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
2302 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
2534 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
2755 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
2988 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
3235 Variable $emailBulkRescheduleRequest in isset() always exists and is not nullable.
4030 Variable $emailBulkUpdateStatusRequest in isset() always exists and is not nullable.
4266 Variable $emailTrackingEventRequest in isset() always exists and is not nullable.
4530 Variable $emailValidationRequest in isset() always exists and is not nullable.
4679 Method Infobip\Api\EmailApi::verifyDomain() with return type void returns null but should not return anything.
4784 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
------ ----------------------------------------------------------------------------------------------------------------
------ ----------------------------------------------------------------------------
Line Api/MmsApi.php
------ ----------------------------------------------------------------------------
201 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
443 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
656 Variable $mmsAdvancedRequest in isset() always exists and is not nullable.
944 Variable $body in isset() always exists and is not nullable.
------ ----------------------------------------------------------------------------
------ -----------------------------------------------------------------------------------
Line Api/SmsApi.php
------ -----------------------------------------------------------------------------------
201 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
471 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
812 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
1060 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
1308 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
1554 Variable $smsPreviewRequest in isset() always exists and is not nullable.
1808 Variable $smsBulkRequest in isset() always exists and is not nullable.
2055 Variable $smsAdvancedBinaryRequest in isset() always exists and is not nullable.
2297 Variable $smsAdvancedTextualRequest in isset() always exists and is not nullable.
2551 Variable $smsUpdateStatusRequest in isset() always exists and is not nullable.
------ -----------------------------------------------------------------------------------
------ ---------------------------------------------------------------------------------------
Line Api/TfaApi.php
------ ---------------------------------------------------------------------------------------
194 Variable $tfaApplicationRequest in isset() always exists and is not nullable.
457 Variable $tfaCreateMessageRequest in isset() always exists and is not nullable.
716 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
952 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
1220 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
1472 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
1758 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
2014 Variable $tfaResendPinRequest in isset() always exists and is not nullable.
2277 Variable $tfaResendPinRequest in isset() always exists and is not nullable.
2535 Variable $tfaStartAuthenticationRequest in isset() always exists and is not nullable.
2782 Variable $tfaStartAuthenticationRequest in isset() always exists and is not nullable.
3045 Variable $tfaApplicationRequest in isset() always exists and is not nullable.
3324 Variable $tfaUpdateMessageRequest in isset() always exists and is not nullable.
3587 Variable $tfaVerifyPinRequest in isset() always exists and is not nullable.
------ ---------------------------------------------------------------------------------------
------ ------------------------------------------------------------------------------
Line Api/ViberApi.php
------ ------------------------------------------------------------------------------
194 Variable $viberFileMessage in isset() always exists and is not nullable.
458 Variable $viberImageMessage in isset() always exists and is not nullable.
722 Variable $viberBulkTextMessage in isset() always exists and is not nullable.
986 Variable $viberVideoMessage in isset() always exists and is not nullable.
------ ------------------------------------------------------------------------------
------ ----------------------------------------------------------------------------------
Line Api/VoiceApi.php
------ ----------------------------------------------------------------------------------
202 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
450 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
702 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
954 Variable $callsUpdateStatusRequest in isset() always exists and is not nullable.
1213 Variable $callsBulkRequest in isset() always exists and is not nullable.
1460 Variable $callsAdvancedBody in isset() always exists and is not nullable.
1707 Variable $callsMultiBody in isset() always exists and is not nullable.
1954 Variable $callsSingleBody in isset() always exists and is not nullable.
------ ----------------------------------------------------------------------------------
------ ------------------------------------------------------------------------------------------------------------------
Line Api/WebRtcApi.php
------ ------------------------------------------------------------------------------------------------------------------
101 Method Infobip\Api\WebRtcApi::deletePushConfiguration() with return type void returns null but should not return
anything.
206 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
438 Variable $webRtcTokenRequestModel in isset() always exists and is not nullable.
670 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
939 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
1185 Variable $webRtcPushConfigurationRequest in isset() always exists and is not nullable.
1443 Variable $webRtcPushConfigurationRequest in isset() always exists and is not nullable.
------ ------------------------------------------------------------------------------------------------------------------
------ ----------------------------------------------------------------------------------------------------------------------
Line Api/WhatsAppApi.php
------ ----------------------------------------------------------------------------------------------------------------------
103 Method Infobip\Api\WhatsAppApi::confirmWhatsAppIdentity() with return type void returns null but should not return
anything.
226 Variable $whatsAppIdentityConfirmation in isset() always exists and is not nullable.
481 Variable $whatsAppTemplatePublicApiRequest in isset() always exists and is not nullable.
653 Method Infobip\Api\WhatsAppApi::deleteWhatsAppMedia() with return type void returns null but should not return
anything.
761 Variable $whatsAppUrlDeletionRequest in isset() always exists and is not nullable.
886 Method Infobip\Api\WhatsAppApi::deleteWhatsAppTemplate() with return type void returns null but should not return
anything.
1006 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
1288 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
1529 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
1672 Method Infobip\Api\WhatsAppApi::getWhatsAppMediaMetadata() with return type void returns null but should not return
anything.
1792 Offset 'Content-Type' does not exist on array{}.
2014 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
2168 Method Infobip\Api\WhatsAppApi::markWhatsAppMessageAsRead() with return type void returns null but should not return
anything.
2288 Offset 'Content-Type' does not exist on array{Accept: 'application/json'}.
2509 Variable $whatsAppAudioMessage in isset() always exists and is not nullable.
2762 Variable $whatsAppContactsMessage in isset() always exists and is not nullable.
3015 Variable $whatsAppDocumentMessage in isset() always exists and is not nullable.
3268 Variable $whatsAppImageMessage in isset() always exists and is not nullable.
3521 Variable $whatsAppInteractiveButtonsMessage in isset() always exists and is not nullable.
3774 Variable $whatsAppInteractiveListMessage in isset() always exists and is not nullable.
4027 Variable $whatsAppInteractiveMultiProductMessage in isset() always exists and is not nullable.
4280 Variable $whatsAppInteractiveProductMessage in isset() always exists and is not nullable.
4533 Variable $whatsAppLocationMessage in isset() always exists and is not nullable.
4786 Variable $whatsAppStickerMessage in isset() always exists and is not nullable.
5039 Variable $whatsAppBulkMessage in isset() always exists and is not nullable.
5292 Variable $whatsAppTextMessage in isset() always exists and is not nullable.
5545 Variable $whatsAppVideoMessage in isset() always exists and is not nullable.
------ ----------------------------------------------------------------------------------------------------------------------
------ -------------------------------------------------------------------------------------------------------------------
Line Model/CallsTimeWindow.php
------ -------------------------------------------------------------------------------------------------------------------
41 PHPDoc tag @param for parameter $days with type array<string> is incompatible with native type string.
42 PHPDoc type for property Infobip\Model\CallsTimeWindow::$days with type array<string> is incompatible with native
type string.
94 Method Infobip\Model\CallsTimeWindow::getDays() should return array<string> but returns string.
102 Property Infobip\Model\CallsTimeWindow::$days (string) does not accept array<string>.
------ -------------------------------------------------------------------------------------------------------------------
------ -----------------------------------------------------------------------------------------
Line Model/EmailAddDomainRequest.php
------ -----------------------------------------------------------------------------------------
47 Access to undefined constant Infobip\Model\EmailAddDomainRequest::DKIM_KEY_LENGTH_2048.
------ -----------------------------------------------------------------------------------------
------ ----------------------------------------------------------------------------------------------
Line ObjectSerializer.php
------ ----------------------------------------------------------------------------------------------
126 Call to an undefined method Symfony\Component\Serializer\SerializerInterface::normalize().
138 Call to an undefined method Symfony\Component\Serializer\SerializerInterface::denormalize().
202 Call to an undefined method Symfony\Component\Serializer\SerializerInterface::normalize().
------ ----------------------------------------------------------------------------------------------
As far as I'm informed, PHP Stan is the default for static code analysis of PHP codebases. We have +100 errors on level 3 of the analysis