Đây là câu hỏi mà gần đây tôi đã suy ngẫm. Thông thường, tôi cài đặt các công cụ QA trực tiếp trên máy chủ của mình hoặc trong hình ảnh Docker. Nếu các công cụ được cài đặt trên máy chủ của tôi, không có vấn đề gì trong việc cấu hình PhpStorm.
Nếu các công cụ được cấu hình trực tiếp trong hình ảnh Docker, cũng không có vấn đề gì khi sử dụng chúng bên trong hình ảnh. Tuy nhiên, làm thế nào để kết hợp sức mạnh của PhpStorm và Docker để liên kết chúng?
Vậy, đây là cách tiến hành cài đặt php_codesniffer, Mess Detector, CS Fixer, PSalm, PhpStan.

Đối với mục đích của bài viết này, tôi sẽ đưa ra một số mẹo để thêm vào Dockerfile của bạn hoặc tạo một cái đặc biệt cho quy trình phát triển của bạn. Cá nhân tôi, tôi có một Dockerfile để quản lý tất cả các phiên bản PHP bao gồm tất cả các công cụ tôi cần để thiết lập một ngăn xếp phát triển.
FROM php:7.4.31-apache-buster
ARG COMPOSER_HOME=/composer
RUN composer global require squizlabs/php_codesniffer
RUN composer global require phpmd/phpmd
RUN composer global require friendsofphp/php-cs-fixer --with-all-dependencies
RUN composer global require vimeo/psalm
RUN composer global require phpstan/phpstan
Bạn có thể sử dụng một hình ảnh đặc biệt cho CLI. Cá nhân tôi, tôi sử dụng một hình ảnh với Apache. Vì vậy, tôi gắn kết hình ảnh 'qa' của mình khi tôi cần nó bằng cách ghi đè entrypoint mặc định với một lệnh vô hạn.
version: "3.8"
services:
qa:
image: 'devpartitech/php:7.4-apache'
tty: true
environment:
COMPOSER_HOME: '/composer'
volumes:
- "./:/var/www/"
entrypoint: ["/bin/bash", "-c"]
command: "tail -f /dev/null"
Vì vậy, bạn sẽ cần cấu hình các trình thông dịch. Để làm điều này, hãy đi đến Settings > Quality Tools và chúng ta sẽ chọn cái đầu tiên trong danh sách, PHP_Code_Sniffer.

Một khi trong giao diện cấu hình Trình thông dịch, nhấp vào “+” và chọn “Từ Docker

Đây chỉ là một ví dụ mà bạn có thể thích nghi theo ý muốn. Tôi sẽ sử dụng Docker Compose của mình trực tiếp.


Một khi đã tạo, bạn sẽ có quyền truy cập vào trang cấu hình. Trước khi xác nhận, hãy nhớ thực hiện tải lại cấu hình của bạn để nó nhận diện được tệp thực thi PHP của bạn.


Nếu, giống như tôi, bạn đã chọn “/composer” làm COMPOSER_HOME của mình, thì bạn sẽ tìm thấy tất cả các công cụ đã cài đặt tại /composer/vendor/bin. Do đó, bạn có thể chỉ định (điều chỉnh nếu cần) các giá trị sau:
Đường dẫn PHP_Code_Sniffer: /composer/vendor/bin/phpcs
Đường dẫn đến phpcbf: /composer/vendor/bin/phpcbf
Xác nhận để đảm bảo mọi thứ đều ổn định.

Hãy tiếp tục với cái tiếp theo trong danh sách: Mess Detector. Chỉ cần chọn trình thông dịch đã được cấu hình.

Nhập vào trình thông dịch và nhấp vào "…".

Chỉ định bản đồ đường dẫn: /composer/vendor/bin/phpmd và bạn đã hoàn tất!

Chúng ta tiếp tục với Mess detector. Chúng tôi luôn chọn cấu hình của mình trên qa-php-7.4 và nhấp vào “...”. Sau đó nhấp vào "+".

Chỉ định đường dẫn PHP CS Fixer: /composer/vendor/bin/php-cs-fixer và xác nhận.

Hãy tiến hành với Psalm. Chúng tôi tiếp tục sử dụng trình thông dịch của mình.


Nhập vào đường dẫn psalm: /composer/vendor/bin/psalm và xác nhận.

Chúng tôi kết thúc với cái cuối cùng trong danh sách, PHPStan. Chúng tôi kích hoạt nó và nhấp vào “...”


Chỉ định đường dẫn PHPSTAN: /composer/vendor/bin/phpstan, xác nhận, và bạn đã sẵn sàng.

Và đó là nó! Chúng tôi đã liên kết tất cả các công cụ chất lượng của mình một cách chính xác với container Docker của chúng tôi.
Bạn giờ có thể kiểm tra xem mọi thứ có hoạt động tốt trước khi điều chỉnh cài đặt của mình.


Trong danh sách, mở rộng PHP > Công cụ Chất lượng và nhớ kiểm tra tất cả chúng:


Nhấp vào Phân tích:

Tất cả nhận xét sẽ xuất hiện trực tiếp trong tab "Vấn đề" của PhpStorm. Hãy cẩn thận nếu bạn đã bao gồm toàn bộ dự án của mình. Bạn có thể muốn chỉ bao gồm thư mục src hoặc loại trừ thư mục vendor trừ khi bạn muốn bị ngập tràn bởi thông báo!
Và đó là tất cả! Chúc bạn lập trình vui vẻ 😊