PHPStan으로 리팩토링(사무실에서)

나는 니코,

저는 런던에 본사를 둔 티켓 브로커의 수석 엔지니어입니다.

사무실에서! 일상적인 사무실 생활에서 제가 하고 있는 기술적인 일에 대해 계속 일기를 쓰는 매일의 (거의) 포스팅 루틴입니다.

패키지 및 작곡가



처음부터 시작합시다.

PHP 개발자라면 Composer가 무엇인지 알게 될 것입니다.

Composer는 PHP 언어의 패키지 관리자입니다.

개념은 매우 쉽습니다.

우리는 개발자로서 어떤 기능이 필요할 때마다 바퀴를 재발명하고 싶지 않습니다.

이러한 이유로 고유한 작업을 수행하는 약간의 코드를 만듭니다.

그런 다음 필요할 때 이 작은 코드 조각을 프로젝트에 '다운로드'합니다.

현재 대부분의 PHP 프로젝트는 수백 개가 아닌 수십 개의 코드 비트로 구성되어 있으며 이를 패키지라고 합니다.

PHPStan



새 직장에서의 일상 업무는 리팩토링이라는 한 단어로 요약할 수 있습니다.

그것이 내가 데려온 것이고 그것이 내가 매일 하는 일입니다.

이를 위해 PHPUnit, Symfony 내장 기능 및 많은 패키지와 같은 여러 도구를 활용합니다.

제가 최근에 사용하고 있는 것 중 하나는 PHPStan입니다.

PHPStan은 PHP 정적 분석 도구입니다.

PHPStan은 실행하지 않고 코드에서 오류를 찾습니다.

테스트가 코드에 대한 테스트를 작성하기 전에도 전체 범주의 버그를 포착합니다.

정적 분석 도구



위에서 읽은 것처럼 PHPStan은 정적 분석 도구입니다.

정적 분석 도구는 여러 가지 의미가 있습니다. 이 경우 소스 코드를 조사하고 문제가 발생하기 전에 문제를 찾아내는 도구입니다.

코드를 실제로 실행하지 않고 단위 또는 통합 테스트를 추가할 필요 없이 수행하기 때문에 매우 강력합니다.

Laravel, Symfony 및 Drupal과 같은 가장 널리 사용되는 많은 프레임워크 및 CMS에 대한 확장 기능이 있습니다.

또한 CI 파이프라인 내에서 쉽게 사용할 수 있습니다.

어떻게 작동합니까?



PHPStan이 하는 일은 설정한 규칙 그룹에 따라 코드를 확인하는 것입니다.

이러한 규칙은 다양한 수준으로 그룹화됩니다(가장 낮은 수준 1에서 가장 높은 수준인 9까지).

이것은 1단계의 오류를 보고 수정하기 시작할 수 있고 일단 수행하면 한 단계 앞으로 이동하여 점차 더 높은 수준에 도달할 수 있기 때문에 좋습니다.

설치



이 패키지를 프로젝트에 설치하는 것은 매우 쉽습니다.

프로젝트의 루트 폴더 또는 작곡가 파일을 보관하는 위치로 cd하고 다음 명령을 실행하기만 하면 됩니다.
composer require --dev phpstan/phpstan
프로그램을 실행하려면 분석할 폴더를 지정해야 합니다.

제 경우에는 src/폴더에 코드를 보관하고 테스트는 tests/폴더에 보관합니다.

분석하다


vendor/bin/phpstan analyse src tests
그게 다야!

개인화할 수 있는 많은 옵션이 있습니다.

주요 내용을 살펴보자

--레벨|-l

실행할 규칙 수준을 지정합니다.

--구성|-c

구성 파일의 경로를 지정합니다. 상대 경로는 현재 작업 디렉터리를 기준으로 확인됩니다.

--메모리 제한

php.ini가 허용하는 것과 동일한 형식으로 메모리 제한을 지정합니다.

--xdebug

PHPStan은 더 나은 성능을 얻기 위해 활성화된 경우 XDebug를 끕니다.

구성 파일



PHPStan은 구성을 위해 phpstan.neon이라는 파일을 사용합니다.

네온 확장에 겁먹지 마세요. 구문은 YAML과 매우 유사합니다.

이 파일에서 분석하려는 코드의 경로, 수준, 특정 오류를 무시할지 여부와 같은 규칙을 지정할 수 있습니다.

다음은 예입니다.

parameters:
    paths:
        - src
    ignoreErrors:
        - '#Call to an undefined method [a-zA-Z0-9\\_]+::doFoo\(\)#'
        - '#Call to an undefined method [a-zA-Z0-9\\_]+::doBar\(\)#'


다음은 이 패키지의 official website and Docs입니다.

지금 당장 코드를 리팩토링할 필요가 없더라도 시도해 보라고 조언합니다.

결론



저는 거의 10년 동안 웹 개발자였습니다.

런던 중심부에 위치한 세계적인 기업 및 수상 경력에 빛나는 마케팅 대행사와 협력합니다.

또한 블로그와 온라인 커뮤니티에 기사와 튜토리얼을 작성하고 기업이 온라인에서 입지를 구축하도록 돕습니다.

Click here to read more than 100+ of my blog post

좋은 웹페이지 즐겨찾기