WordPress DemoSite

Тестовый сайт для экспериментов и демонстраций возможностей

PHPStan и PHP_CodeSniffer для профессиональной разработки на PHP

Использование таких инструментов, как PHPStan и PHP_CodeSniffer, является важной частью профессиональной разработки на PHP. Они помогают поддерживать высокое качество кода, находить ошибки на ранних этапах и соблюдать стандарты кодирования. Давайте разберем, для чего нужны эти инструменты и как их использовать.


1. PHPStan

1.1. Что такое PHPStan?

PHPStan — это статический анализатор кода для PHP. Он анализирует ваш код без его выполнения и находит потенциальные ошибки, такие как:

PHPStan помогает выявлять ошибки на ранних этапах разработки, что экономит время и уменьшает количество багов в production.

1.2. Установка PHPStan

Установите PHPStan через Composer:

composer require --dev phpstan/phpstan

1.3. Настройка PHPStan

Создайте конфигурационный файл phpstan.neon в корне вашего проекта:

parameters:
  level: 5 # Уровень строгости (от 0 до 9)
  paths:
    - src # Укажите папку с вашим кодом

1.4. Запуск PHPStan

Запустите анализ кода:

vendor/bin/phpstan analyse

PHPStan проанализирует ваш код и выведет список ошибок и предупреждений.

1.5. Пример использования

Предположим, у вас есть такой код:

function add(int $a, int $b): int {
    return $a + $b;
}

echo add(5, "10"); // Ошибка: второй аргумент должен быть int

PHPStan обнаружит, что второй аргумент "10" является строкой, а не целым числом, и сообщит об ошибке.


2. PHP_CodeSniffer

2.1. Что такое PHP_CodeSniffer?

PHP_CodeSniffer — это инструмент для проверки соответствия кода стандартам кодирования (например, PSR-12). Он также может автоматически исправлять некоторые ошибки форматирования.

PHP_CodeSniffer помогает:

2.2. Установка PHP_CodeSniffer

Установите PHP_CodeSniffer через Composer:

composer require --dev squizlabs/php_codesniffer

2.3. Настройка PHP_CodeSniffer

Вы можете использовать готовые стандарты, такие как PSR-12, или создать собственный конфигурационный файл.

Для использования стандарта PSR-12 выполните:

vendor/bin/phpcs --standard=PSR12 src

2.4. Запуск PHP_CodeSniffer

Запустите проверку кода:

vendor/bin/phpcs src

Если вы хотите автоматически исправить ошибки форматирования, используйте phpcbf:

vendor/bin/phpcbf src

2.5. Пример использования

Предположим, у вас есть такой код:

function foo(){
    echo "Hello";
}

PHP_CodeSniffer укажет на ошибки:

После исправления код будет выглядеть так:

function foo()
{
    echo "Hello";
}

3. Зачем это нужно?

3.1. Преимущества использования PHPStan и PHP_CodeSniffer

  1. Раннее обнаружение ошибок:
  1. Соблюдение стандартов кодирования:
  1. Улучшение качества кода:
  1. Экономия времени:
  1. Подготовка к code review:

3.2. Когда использовать?


4. Интеграция в CI/CD

Чтобы автоматизировать проверки, можно интегрировать PHPStan и PHP_CodeSniffer в ваш процесс CI/CD (например, GitHub Actions, GitLab CI, Jenkins).

Пример для GitHub Actions

Создайте файл .github/workflows/php-checks.yml:

name: PHP Checks

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  phpstan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.0'
      - name: Install dependencies
        run: composer install --prefer-dist --no-progress --no-suggest
      - name: Run PHPStan
        run: vendor/bin/phpstan analyse

  phpcs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.0'
      - name: Install dependencies
        run: composer install --prefer-dist --no-progress --no-suggest
      - name: Run PHP_CodeSniffer
        run: vendor/bin/phpcs --standard=PSR12 src

Теперь при каждом пуше или pull request будут автоматически запускаться проверки.


5. Заключение

Использование PHPStan и PHP_CodeSniffer — это важный шаг к профессиональной разработке на PHP. Эти инструменты помогают:

Интеграция этих инструментов в процесс разработки и CI/CD позволяет автоматизировать проверки и сосредоточиться на написании качественного кода.

Полный стэк: .NET | AMQP | Android | api | Bash | Bootstrap | C++ | cms | Composer | css | Data | Elasticsearch | ESP32 | Git | GraphQL | Gulp | JavaScript | JetStream | Joomla | js | Kotlin | Laravel | LEMP | Linux | LMS | Markdown | MODX | Moodle | MySQL | NATS | Nginx | Node.js | OpenCart | Parsedown | PHP | Python | RabbitMQ | SCSS | SEO | Simpla | SOAP | SQL | startup | Swift | Symfony | Tailwind | Translation | Twig | Ubuntu | Unit | web3 | Webasyst | Webpack | WebSocket | WordPress | XML | Бизнес | блокчейн | ИИ | интернет-магазин | ЛК | Руководство | ТЗ | фреймворк | Яндекс.Трекер