jeudi 17 octobre 2019

Installer phpstan

phpstan/phpstan est un outil de vérification du code.

Pour l'installer dans votre projet Symfony :
composer require --dev phpstan/phpstan phpstan/phpstan-symfony phpstan/phpstan-doctrine

Ensuite il faut lui créer le fichier de configuration phpstan.neon :
parameters: level: 5 paths: - src/ # Si quelqu'un trouve comment lui indiquer que ce répertoire n'a pas le même namespace que les autres dans src excludes_analyse: - src/Migrations/ symfony: container_xml_path: %rootDir%/../../../var/cache/dev/srcApp_KernelDevDebugContainer.xml includes: - vendor/phpstan/phpstan-symfony/extension.neon - vendor/phpstan/phpstan-doctrine/extension.neon

Vous pouvez créer un binaire bin/phpstan qui l'exécute dans un container Docker :
#!/usr/bin/env sh set -e if [ $(which docker || false) ]; then readonly PROJECT_DIRECTORY=$(realpath $(dirname $(realpath $0))/..) docker run \ --rm \ -v ${PROJECT_DIRECTORY}:/var/phpstan:ro \ -w /var/phpstan \ php:7.3.8-cli-alpine3.10 \ bin/phpstan $@ else php -d memory_limit=512M vendor/bin/phpstan analyse --ansi -c phpstan.neon $@ fi

Et enfin l'intégrer dans CircleCI :
version: '2.1' jobs: composer: docker: - image: composer working_directory: /var/repository steps: - checkout - restore_cache: key: composer-{{ checksum "composer.json" }}-{{ checksum "composer.lock" }} - run: command: | if [ ! -f vendor/autoload.php ];then composer global require hirak/prestissimo; composer install --ignore-platform-reqs --no-interaction --no-progress --classmap-authoritative; fi - save_cache: key: composer-{{ checksum "composer.json" }}-{{ checksum "composer.lock" }} paths: - ./vendor - persist_to_workspace: root: . paths: - vendor phpstan: docker: - image: php:7.3.8-cli-alpine3.10 working_directory: /var/repository steps: - checkout - restore_cache: keys: - composer-{{ checksum "composer.json" }}-{{ checksum "composer.lock" }} - run: name: Cache warmup command: bin/console cache:warmup --env=dev - run: name: phpstan command: bin/phpstan workflows: version: '2.1' Code quality: jobs: - phpstan: requires: - composer

Aucun commentaire:

Enregistrer un commentaire