Lớp bỏ qua PHPStan

Giống như các phương thức cùng tên trong 2 lớp khác nhau. Ngay cả khi chỉ sử dụng một, cả hai đều được báo cáo là đã sử dụng. Sau đó, tôi đã xóa quy tắc này, vì kiến ​​trúc mã thông báo khá tệ, như bạn có thể thấy


Một tuần trước PHPStan 1. 8 đã giới thiệu tính năng tương tự, được gọi là bộ sưu tập. Nguyên tắc là đơn giản

  • thu thập một nhóm dữ liệu
  • thu thập một nhóm dữ liệu khác
  • so sánh cả hai nhóm và hiển thị kết quả


Tôi rất hào hứng và muốn thử tính năng này ngay khi có thời gian rảnh

Tuần trước, tôi đã thực hiện quy tắc đầu tiên phát hiện các hằng số công khai không được sử dụng

Tôi đang chơi đại khái với các bộ sưu tập mới từ PHPStan 1. 8 😇

Đây là cách tìm thấy "hằng số công khai chưa sử dụng" ↓https. //t. ảnh co/SkTCITcLh4. Twitter. com/zt4yyq0Hmh

– Tomas Votruba 🇺🇦 [@VotrubaT] ngày 30 tháng 6 năm 2022


Việc phát hiện lời gọi hằng tương đối dễ dàng vì luôn có một lớp và tên hằng chính xác

SomeClass::SOME_CONSTANT


Chúng tôi đã thêm các quy tắc vào một số dự án và kết quả thật tuyệt vời

Làm thế nào về việc thử cách tiếp cận tương tự với các phương thức công khai?


PHPStan Collector cho phương pháp không sử dụng

Với các cuộc gọi phương thức, điều này hơi phức tạp, vì kiểu người gọi có thể là bất kỳ thứ gì

$value->speedUp[]; // $value is mixed type

function run[?Car $value] {
    $value->speedUp[]; // $value is null|Car
}

/** @var Car $value;
$value->speedUp[]; // $value is probably Car


Tôi muốn xem quy tắc này sẽ phát hiện và thử bao nhiêu trường hợp dương tính giả. Hãy coi đây là một trải nghiệm học tập thú vị

Để giữ cho quy tắc đơn giản và đáng tin cậy hơn, tôi đã thu hẹp phạm vi hơn nữa

  • bỏ qua các phương thức tĩnh
  • bỏ qua các phương pháp được bảo vệ
  • bỏ qua các phương pháp riêng tư
  • bỏ qua phương pháp
    $someObject->speedUp[];
    3
  • bỏ qua phương pháp
    $someObject->speedUp[];
    4
  • bỏ qua phương pháp
    $someObject->speedUp[];
    5
  • bỏ qua các phương thức ghi đè lớp cha
  • bỏ qua các phương thức được yêu cầu bởi một giao diện
  • bỏ qua các phương thức có chú thích
    $someObject->speedUp[];
    6
  • bỏ qua các phương thức có lớp có chú thích
    $someObject->speedUp[];
    6
  • bỏ qua các phương thức trong trường hợp kiểm tra PHPUnit
  • bỏ qua các phương thức có thuộc tính
#[Required]
public function autowire[...]
{
    // ...
}

#[Inject]
public function inject[....]
{
    // ...
}


Bạn có đang duy trì một dự án mã nguồn mở không? . Quy tắc sẽ bỏ qua nó sau đó

Sử dụng có nguy cơ của riêng bạn

Tôi đã tạo nguyên mẫu quy tắc

$someObject->speedUp[];
9. Trong PR, bạn sẽ tìm thấy cả hai bộ sưu tập cho các phương thức công khai, lệnh gọi của chúng và quy tắc so sánh cả hai. tất nhiên là bao gồm bài kiểm tra. Bạn có muốn xây dựng một bộ sưu tập của riêng bạn?


Bạn có sẵn sàng thử quy tắc này trên cơ sở mã của mình không?

Mày đã được cảnh báo. của bạn đi

$value->speedUp[]; // $value is mixed type

function run[?Car $value] {
    $value->speedUp[]; // $value is null|Car
}

/** @var Car $value;
$value->speedUp[]; // $value is probably Car
0


Đăng ký quy tắc với cả hai nhà sưu tập để

$value->speedUp[]; // $value is mixed type

function run[?Car $value] {
    $value->speedUp[]; // $value is null|Car
}

/** @var Car $value;
$value->speedUp[]; // $value is probably Car
10

$value->speedUp[]; // $value is mixed type

function run[?Car $value] {
    $value->speedUp[]; // $value is null|Car
}

/** @var Car $value;
$value->speedUp[]; // $value is probably Car
2

Chạy PHPStan và xem kết quả

Bạn có mẹo nào để cải thiện quy tắc hoặc kiến ​​trúc này không? . Cảm ơn bạn, chúc may mắn và vui vẻ

PhpStorm cung cấp tính năng kiểm tra chất lượng mã thông qua tích hợp với công cụ PHPStan, công cụ này xác thực tính nhất quán của mã đối với một bộ quy tắc xác thực

Để sử dụng PHPStan từ PhpStorm thay vì dòng lệnh, bạn cần đăng ký nó trong PhpStorm và định cấu hình nó dưới dạng kiểm tra mã PhpStorm. Sau khi được cài đặt và kích hoạt trong PhpStorm, công cụ này có sẵn trong mọi tệp PHP đã mở và không cần thực hiện thêm bước nào để khởi chạy nó. Kiểm tra mã nhanh chóng được kích hoạt sau mỗi lần cập nhật trong tệp, do đó giúp dễ dàng loại bỏ các sự cố đã phát hiện

Các lỗi và cảnh báo do PHPStan báo cáo nhanh chóng được hiển thị dưới dạng thông báo bật lên. Khi công cụ được chạy ở chế độ hàng loạt, các lỗi và cảnh báo sẽ được hiển thị trong cửa sổ Sự cố của công cụ. Mỗi thông báo có tiền tố

$value->speedUp[]; // $value is mixed type

function run[?Car $value] {
    $value->speedUp[]; // $value is null|Car
}

/** @var Car $value;
$value->speedUp[]; // $value is probably Car
3 để phân biệt với kiểm tra nội bộ của PhpStorm

Tích hợp PHPStan được triển khai thông qua plugin PHPStan mã nguồn mở. Plugin này đi kèm với PhpStorm và được bật theo mặc định

điều kiện tiên quyết

Trước khi tích hợp PHPStan trong PhpStorm, hãy đảm bảo đáp ứng các điều kiện tiên quyết sau

  • Thư mục chứa tệp thực thi công cụ PHP phải được thêm vào hệ thống

    $value->speedUp[]; // $value is mixed type
    
    function run[?Car $value] {
        $value->speedUp[]; // $value is null|Car
    }
    
    /** @var Car $value;
    $value->speedUp[]; // $value is probably Car
    4. Điều này cho phép các tập lệnh công cụ chất lượng mã thực hiện các cuộc gọi đến công cụ PHP trên toàn hệ thống

  • Đối với trình thông dịch từ xa dựa trên Docker Compose, hãy đảm bảo sử dụng chế độ

    $value->speedUp[]; // $value is mixed type
    
    function run[?Car $value] {
        $value->speedUp[]; // $value is null|Car
    }
    
    /** @var Car $value;
    $value->speedUp[]; // $value is probably Car
    5 để tránh sinh ra các vùng chứa bổ sung

    1. Trong hộp thoại Cài đặt/Tùy chọn [Ctrl+Alt+S], đi tới PHP< . .

    2. Trên trang PHP mở ra, hãy nhấp vào bên cạnh CLI Interpreter list.

    3. Trong hộp thoại Trình thông dịch CLI mở ra, hãy đặt Vòng đời mode for the selected interpreter to Connect to existing container ['docker-compose exec'] .

Cài đặt và cấu hình PHPStan

Các tập lệnh PHPStan có thể được sử dụng làm tập lệnh cục bộ, tập lệnh được liên kết với trình thông dịch PHP hoặc tập lệnh được khai báo là phần phụ thuộc của dự án và được cài đặt qua Trình soạn thảo, đây là cách thích hợp hơn và được đề xuất

Cài đặt PHPStan với Composer

Trước khi bạn bắt đầu, hãy đảm bảo Trình soạn thảo được cài đặt trên máy của bạn và được khởi tạo trong dự án hiện tại như được mô tả trong trình quản lý phụ thuộc Trình soạn thảo

Khi bạn cài đặt PHPStan với Composer, PhpStorm sẽ tự động tải xuống các tập lệnh cần thiết, đăng ký chúng trong IDE và tùy chọn bật và định cấu hình tập lệnh tương ứng.

  1. Bên trong nhà soạn nhạc. json , hãy thêm bản ghi phụ thuộc phpstan/phpstan vào phần

    $value->speedUp[]; // $value is mixed type
    
    function run[?Car $value] {
        $value->speedUp[]; // $value is null|Car
    }
    
    /** @var Car $value;
    $value->speedUp[]; // $value is probably Car
    6 hoặc
    $value->speedUp[]; // $value is mixed type
    
    function run[?Car $value] {
        $value->speedUp[]; // $value is null|Car
    }
    
    /** @var Car $value;
    $value->speedUp[]; // $value is probably Car
    7. Nhấn Ctrl + Space để hoàn thành mã cho tên gói và phiên bản.

  2. làm một điều trong số sau đây

    • Nhấp vào liên kết tắt Cài đặt ở đầu bảng chỉnh sửa.

    • Nếu kiểm tra Gói Composer chưa được cài đặt được bật, PhpStorm sẽ đánh dấu các phần phụ thuộc đã khai báo hiện chưa được cài đặt. Nhấn Alt+Enter và chọn xem bạn muốn cài đặt một phần phụ thuộc cụ thể hay tất cả các phần phụ thuộc cùng một lúc.

Nhấp vào bên cạnh bản ghi gói trong trình soạn thảo. json để chuyển đến trang Cài đặt/Tùy chọn tương ứng và.

Đặt lại cấu hình PHPStan

Sau khi PHPStan được định cấu hình ban đầu, các sửa đổi tiếp theo trong composer. json sẽ không ảnh hưởng đến cấu hình kiểm tra. Để áp dụng các thay đổi mới hơn, hãy đặt lại cấu hình PHPStan.

  1. Trong hộp thoại Cài đặt/Tùy chọn [Ctrl+Alt+S], điều hướng đến PHP. Công cụ chất lượng .

  2. Trên trang Công cụ chất lượng mở ra, hãy mở rộng khu vực PHPStan và nhấp vào bên cạnh < . Configuration list.

  3. Trong hộp thoại PHPStan mở ra, hãy làm trống đường dẫn PHPStan field.

  4. Cập nhật các thành phần phụ thuộc Trình soạn thảo của dự án bằng cách nhấp vào Cập nhật ở đầu trình soạn thảo. bảng soạn thảo json . Xem để biết chi tiết.

PhpStorm sẽ thực hiện lại cấu hình PHPStan và do đó áp dụng các thay đổi trong composer. json .

Định cấu hình PHPStan theo cách thủ công

Bạn có thể sử dụng tập lệnh công cụ chất lượng mã PHP cục bộ được tải xuống thủ công hoặc tập lệnh được liên kết với trình thông dịch PHP. Có thể có một số trình thông dịch PHP cục bộ và từ xa, trình thông dịch được chỉ định trên trang PHP của hộp thoại Cài đặt/Tùy chọn được coi là Project Default. Learn more about configuring PHP interpreters in Configure remote PHP interpreters or in Configure local PHP interpreters.

Chọn tập lệnh PHPStan để sử dụng

  1. Trong hộp thoại Cài đặt/Tùy chọn [Ctrl+Alt+S], điều hướng đến PHP. Công cụ chất lượng .

  2. Trên trang Công cụ chất lượng mở ra, hãy mở rộng khu vực PHPStan . Từ danh sách Cấu hình , chọn tập lệnh PHPStan.

    • Để sử dụng tập lệnh được liên kết với trình thông dịch PHP từ xa cụ thể, hãy chọn tên của trình thông dịch này

    • Để sử dụng tập lệnh cục bộ, hãy chọn Cục bộ . Trong trường hợp này, PHPStan cục bộ sẽ được thực thi bất kể trình thông dịch PHP nào - cục bộ hay từ xa - được sử dụng trong dự án. Lưu ý rằng chỉ có thể có một cấu hình Cục bộ cho PHPStan vì PhpStorm chạy tập lệnh [ phpstan. bat đối với Windows hoặc phpstan đối với Linux và macOS] có chứa đường dẫn đến công cụ PHP.

    • Để sử dụng tập lệnh được liên kết với trình thông dịch dự án mặc định, tức là tập lệnh được chọn trên trang PHP của Settings/Preferences dialog, choose By default project interpreter.

Định cấu hình tập lệnh PHPStan cục bộ

  1. Tải xuống và cài đặt tập lệnh PHPStan

    Để kiểm tra cài đặt PHPStan, hãy chuyển đến thư mục cài đặt và chạy lệnh sau

    phpstan --version

    Nếu công cụ có sẵn, bạn sẽ nhận được thông báo ở định dạng sau

  2. Đăng ký tập lệnh PHPStan cục bộ trong PhpStorm

    • Trong hộp thoại Cài đặt/Tùy chọn [Ctrl+Alt+S], điều hướng đến PHP. Công cụ chất lượng .

    • Trên trang Công cụ chất lượng mở ra, hãy mở rộng khu vực PHPStan và nhấp vào bên cạnh < . Configuration list.

    • Trong hộp thoại PHPstan mở ra, hãy chỉ định vị trí của phpstan. bat hoặc phpstan PHPStan có thể thực thi được trong đường dẫn PHPStan field. Type the path manually or click và chọn thư mục có liên quan trong hộp thoại mở ra.

      Để kiểm tra xem đường dẫn đã chỉ định đến phpstan. bat hoặc phpstan đảm bảo tương tác giữa PhpStorm và PHPStan, tức là tool có thể khởi chạy từ PhpStorm và PhpStorm sẽ . Việc xác thực này tương đương với việc chạy lệnh

      $value->speedUp[]; // $value is mixed type
      
      function run[?Car $value] {
          $value->speedUp[]; // $value is null|Car
      }
      
      /** @var Car $value;
      $value->speedUp[]; // $value is probably Car
      8. Nếu quá trình xác thực thành công, PhpStorm sẽ hiển thị thông tin về phiên bản PHPStan được phát hiện. Validate button. This validation is equal to running the
      $value->speedUp[]; // $value is mixed type
      
      function run[?Car $value] {
          $value->speedUp[]; // $value is null|Car
      }
      
      /** @var Car $value;
      $value->speedUp[]; // $value is probably Car
      8 command. If validation passes successfully, PhpStorm displays the information on the detected PHPStan version.

  3. Nếu cần, trong trường Thời gian chờ xử lý công cụ , hãy chỉ định khoảng thời gian bạn muốn PhpStorm đợi kết quả từ PHPStan, sau đó quá trình .

Định cấu hình tập lệnh PHPStan được liên kết với trình thông dịch PHP

  1. Trong hộp thoại Cài đặt/Tùy chọn [Ctrl+Alt+S], đi tới PHP. Công cụ chất lượng .

  2. Trên trang Công cụ chất lượng mở ra, hãy mở rộng khu vực PHPStan và nhấp vào bên cạnh < . Hộp thoại Configuration list. The PHPStan mở ra hiển thị danh sách tất cả các tập lệnh PHPStan được định cấu hình trong ngăn bên trái, một trong số chúng thuộc loại Local and others are named after the PHP interpreters with which the scripts are associated.

  3. Nhấp vào trên thanh công cụ. Trong hộp thoại PHP Stan bởi Trình thông dịch từ xa mở ra, hãy chọn trình thông dịch PHP từ xa để sử dụng tập lệnh được liên kết từ. Nếu danh sách không chứa trình thông dịch phù hợp, hãy nhấp vào và định cấu hình trình thông dịch từ xa trong hộp thoại Trình thông dịch CLI như được mô tả .

    Khi bạn nhấp vào OK , PhpStorm sẽ đưa bạn trở lại PHPStan dialog where the new PHPStan configuration is added to the list and the right-hand pane shows the chosen remote PHP interpreter, the path to the PHPStan associated with it, and the advanced PHPStan options.

  4. Nếu cần, trong trường Thời gian chờ xử lý công cụ , hãy chỉ định khoảng thời gian bạn muốn PhpStorm đợi kết quả từ PHPStan, sau đó quá trình .

Định cấu hình PHPStan dưới dạng kiểm tra PhpStorm

Cấu hình kiểm tra PHPStan với Composer

Bạn có thể bao gồm thông tin về tệp cấu hình PHPStan bên trong phần tập lệnh của composer. json . Khi bạn hoặc dự án phụ thuộc, tệp cấu hình đã chỉ định sẽ được phát hiện và kiểm tra Xác thực PHPstan sẽ tự động được bật.

Nếu không có tệp cấu hình nào được chỉ định trong phần

$value->speedUp[]; // $value is mixed type

function run[?Car $value] {
    $value->speedUp[]; // $value is null|Car
}

/** @var Car $value;
$value->speedUp[]; // $value is probably Car
9 của composer. json , PhpStorm sẽ kiểm tra thêm thư mục gốc của dự án để xác định bộ quy tắc với phpstan. neon hoặc phpstan. đèn neon. dist tên mặc định.

  • Trong phần

    $value->speedUp[]; // $value is mixed type
    
    function run[?Car $value] {
        $value->speedUp[]; // $value is null|Car
    }
    
    /** @var Car $value;
    $value->speedUp[]; // $value is probably Car
    9 của nhà soạn nhạc. json , hãy thêm lệnh khởi chạy PHPStan của
    $value->speedUp[]; // $value is mixed type
    
    function run[?Car $value] {
        $value->speedUp[]; // $value is null|Car
    }
    
    /** @var Car $value;
    $value->speedUp[]; // $value is probably Car
    3 vào một trong các phần tử lá.

    Cung cấp đối số

    $someObject->speedUp[];
    2 và đường dẫn đến tệp cấu hình

    "kịch bản". { "phpstan". "nhà cung cấp/bin/phpstan -c phpstan. đèn neon" }

Sau khi PHPStan được định cấu hình ban đầu, các sửa đổi tiếp theo trong composer. json sẽ không ảnh hưởng đến cấu hình kiểm tra. Để áp dụng các thay đổi mới hơn, trên PHP. Trang Công cụ chất lượng của hộp thoại Cài đặt/Tùy chọn [Ctrl+Alt+S] và các thành phần phụ thuộc của dự án.

Định cấu hình kiểm tra PHPStan theo cách thủ công

  1. Trong hộp thoại Cài đặt/Tùy chọn [Ctrl+Alt+S], nhấp vào Kiểm tra under Editor.

  2. Trên trang Kiểm tra mở ra, mở rộng PHP. Nút Công cụ chất lượng và chọn hộp kiểm bên cạnh Xác thực PHPStan .

    Nếu bạn có nhưng tính năng kiểm tra tương ứng hiện đang bị vô hiệu hóa, PhpStorm sẽ làm nổi bật bản ghi của nó trong composer. json . Nhấn Alt+Enter và sử dụng bản sửa lỗi nhanh Bật kiểm tra được cung cấp để bật kiểm tra và mở trang Kiểm tra.

  3. Trên ngăn bên phải của trang, định cấu hình công cụ PHPStan bằng cách sử dụng các điều khiển trong khu vực Tùy chọn .

    1. Từ danh sách Mức độ nghiêm trọng , chọn mức độ nghiêm trọng cho kiểm tra PHPStan. Giá trị được chọn xác định mức độ nghiêm trọng của sự khác biệt được phát hiện sẽ được PhpStorm xử lý và được trình bày trong kết quả kiểm tra.

    2. Từ danh sách Phạm vi , hãy chọn phạm vi để giới hạn ứng dụng kiểm tra.

    3. Trong trường Cấp độ , hãy cung cấp Cấp độ quy tắc mong muốn để thực hiện kiểm tra PHPStan. Lưu ý rằng nếu tệp cấu hình được cung cấp, PhpStorm sẽ dựa vào giá trị được chỉ định trong tệp này và trường Cấp độ sẽ bị bỏ qua.

    4. Trong trường Tệp cấu hình , cung cấp đường dẫn đến.

    5. Trong Tệp tự động tải , hãy cung cấp đường dẫn đến trình tải tự động. Lưu ý rằng nếu tệp cấu hình được cung cấp, PhpStorm sẽ dựa vào giá trị được chỉ định trong tệp này và trường Tệp tự động tải bị bỏ qua.

    6. Trong trường Giới hạn bộ nhớ , hãy cung cấp dung lượng RAM tối đa mà PHPStan được phép phân bổ. Bạn có thể cung cấp giá trị số nguyên rõ ràng theo byte hoặc sử dụng [

      $value->speedUp[]; // $value is mixed type
      
      function run[?Car $value] {
          $value->speedUp[]; // $value is null|Car
      }
      
      /** @var Car $value;
      $value->speedUp[]; // $value is probably Car
      40,
      $value->speedUp[]; // $value is mixed type
      
      function run[?Car $value] {
          $value->speedUp[]; // $value is null|Car
      }
      
      /** @var Car $value;
      $value->speedUp[]; // $value is probably Car
      41, v.v.].

    Tùy chọn Chạy toàn bộ dự án [chỉ ở chế độ hàng loạt] chỉ áp dụng khi. Nếu được chọn, toàn bộ dự án được bao gồm trong phạm vi chạy kiểm tra; .

Chạy PHPStan ở chế độ hàng loạt

  1. Từ menu chính, chọn Mã. Kiểm tra mã .

  2. Chọn cấu hình kiểm tra từ danh sách hoặc nhấp vào để định cấu hình cấu hình mới trong hộp thoại Kiểm tra mở ra. Bạn cũng có thể nhấp vào để kiểm tra xem bản sửa lỗi nào sẽ được áp dụng và đảm bảo rằng kiểm tra Xác thực PHPStan được bật.

    Sử dụng tùy chọn Chạy toàn bộ dự án [chỉ ở chế độ hàng loạt] để chọn xem toàn bộ dự án hay chỉ một dự án có được đưa vào phạm vi chạy kiểm tra hay không.

  3. Xem kết quả kiểm tra trong cửa sổ công cụ Sự cố. Các lỗi và cảnh báo do PHPStan báo cáo được thêm tiền tố để phân biệt chúng với các kiểm tra nội bộ của PhpStorm

Chủ Đề