>  기사  >  백엔드 개발  >  PHPStan을 사용하여 PHP 코드 품질 향상

PHPStan을 사용하여 PHP 코드 품질 향상

Guanhui
Guanhui앞으로
2020-06-08 09:14:204856검색

PHPStan을 사용하여 PHP 코드 품질 향상

여기에서는 코드를 실행할 필요가 없는 PHP 코드 정적 분석 도구인 PHPStan을 소개합니다. 이 도구는 코드에서 엄격한 구문 감지를 수행하고 코드 실행 오류율을 최소화할 수도 있습니다.

PHPStan

Installation

현재 PHPStanV0.10.2에서는 시스템 환경의 PHP 버전이 7.1 이상이어야 합니다. Composer를 사용하여 전역적으로 설치:

$ composer global require phpstan/phpstan

사용

PHPStan 정적 분석은 매우 간단합니다.

$ phpstan analyse [-c|--configuration CONFIGURATION] [-l|--level LEVEL] [--no-progress] [--debug] [-a|--autoload-file AUTOLOAD-FILE] [--errorFormat ERRORFORMAT] [--memory-limit MEMORY-LIMIT] [--] [<paths>]...
  • configuration: 실행 중인 구성 파일의 경로

  • level: 엄격한 수준, 0-7, 더 큽니다.

  • no-progress: 진행 상황을 표시하지 않음

  • debug: 디버그 모드

  • autoload-file: 자동으로 파일을 로드하는 경로; ;

  • memory-limit: 메모리 제한

  • paths: 분석할 파일 경로.

  • 예를 들어 PHP 파일을 분석합니다:

    $ phpstan analyse --level=7 --autoload-file=/PATH/TO/vendor/autoload.php /PATH/TO/someone.php
VSCode의 PHPStan

물론, 코드를 작성한 후 명령 터미널로 전환하는 것이 너무 번거롭습니다. phpstan을 실행합니다. 따라서 권장되는 VSCode 확장은 PHP 정적 분석입니다.

PHP Static Analysis

먼저 Composer를 사용하여 PHPStan을 전역적으로 설치한 다음 VSCode의 확장 관리에서 PHP Static Analysis를 검색하고 VSCode 다시 로드 창을 다시 로드한 후 첫 번째로 일치하는 확장을 설치합니다. VSCode에서 열린 PHP 파일은 자동으로 분석됩니다.

PHPStan을 사용하여 PHP 코드 품질 향상작동 효과:

예를 들어 변수를 선언했지만 호출하지 않거나, 선언되지 않은 변수를 호출하거나, 정의되지 않은 메서드를 호출하는 등의 오류가 감지됩니다.

PHPStan을 사용하여 PHP 코드 품질 향상그러나 느슨하게 말하면 $this->array() 메서드가 실제로 존재하지만 이는 매직 메서드인 __call()을 통해서만 구현됩니다.

Laravel이 포함된 PHPStan

매우 엄격한 수준의 PHPStan은 선언되지 않은 클래스 메서드가 호출되면 이 클래스가 __call() 또는 __callStatic()을 정의하더라도 클래스에 해당 메서드가 존재하지 않는다는 오류를 보고하는 것을 감지합니다. . 많은 애플리케이션 프레임워크는 우아함을 위해 Laravel과 같은 다양한 마법 메서드를 사용합니다.

Laravel 프로젝트를 감지하기 위해 PHPStan을 사용하면 선언되지 않은 클래스 메서드를 호출할 때 자연스럽게 많은 오류가 보고됩니다. 이 문제의 경우 laravel-ide-helper를 사용하여 거짓 긍정을 줄일 수 있습니다.

Install laravel-ide-helper

$ cd /PATH/TO/LARAVEL_PROJECT
$ composer require barryvdh/laravel-ide-helper

Inject LaravelIdeHelper

app/Providers/AppServiceProvider.php에서 등록 방법을 편집하세요:

<?php
    ...
    public function register()
    {
        if ($this->app->environment() !== &#39;production&#39;) {
            $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
        }
        // ...
    }
Generate _ide_helper.php

$ cd /PATH/TO/LARAVEL_PROJECT
$ php artisan ide-helper:generate

이번에는 Laravel 프레임워크에서 원래 __callStatic()을 통해 얻은 정적 메서드인 Facade 클래스는 모두 _ide_helper.php에 선언되어 있습니다. PHPStan이 Laravel 프로젝트 코드를 감지하면 _ide_helper.php 파일을 도입하면 거짓 긍정을 줄일 수 있습니다.

PHPStan 구성

Laravel 프로젝트의 루트 디렉터리에 새 phpstan.neon 파일을 만듭니다.

parameters:
    autoload_files:
        - %currentWorkingDirectory%/_ide_helper.php
Laravel 프로젝트의 루트 디렉터리에서 phpstan 명령을 실행할 때 구성 phpstan.neon은 다음과 같습니다. 자동으로 사용됩니다.

추천 튜토리얼: "

PHP

"

위 내용은 PHPStan을 사용하여 PHP 코드 품질 향상의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제