플러그인 같은거 만들때는 유닛테스트 같은걸 만들기는 왕배꼽이고
그래도 무언가는 있어야 할때 좋은 수단인 것같습니다.
PHP 7.4에서는 (약간의 아쉬움은 있지만) 타입 정의가 수월한 편이라서 도움은 되지만
객체(특히 stdClass)의 프로퍼티나 배열의 키까지는 정의할 수가 없는데 이런 정적 분석도구와 PHPDoc 주석으로
에디터에서 자동완성 효율성도 올라가네요.
/** * @return array{ * credentialId: string, * signatureCounter: int, * credentialPublicKey: string * } */ function foo(): array {}
이런 PHPDoc 으로 `foo()['cre...']` 이런 코드의 자동 완성도 잘 해주고요.
유닛테스트도 많은 부분이 함수가 반환하는 값의 타입이나 특정 속성/키가 존재하는지 검사하는데 많은 부분을 할애하는데
테스트 코드를 작성하지 않아도 타입 정의를 유도하고 검사와 에디터 자동완성 효율까지 올려주는 역할까지 해줘서
코드 작성의 편의와 오류를 방지해주는 도구로써 좋은 것같습니다.
물론 유닛테스트의 대체 수단은 아니고요.
귀찮아서 대충 작성했던 코드들이 조금 더 탄탄해지네요.
라이믹스에서 common/framework 디렉토리에서 110개 파일에서 가장 낮은 0 레벨로 돌려도 40개 가량 리포트가 나오는데
꽤 적절한 조언을 해주고 제가 주로 사용하는 6레벨로 돌리면 1천개 가량 나옵니다.
물론 전부 다 고치거나 개선해야할 문제는 아니고 무시해도 될 것들이 많죠.
해보실 분은 phpstan 설치 후 아래 설정을 phpstan.neon 파일로 만들어서 돌려보시면 됩니다.
자세한 사용법은 https://phpstan.org