From d136cb05cd06959d01bfb60eecbe3d8313346cc1 Mon Sep 17 00:00:00 2001 From: Perreal Guillaume <guillaume.perreal@irstea.fr> Date: Wed, 10 Apr 2019 11:32:28 +0200 Subject: [PATCH] =?UTF-8?q?Installation=20et=20pr=C3=A9configuration=20de?= =?UTF-8?q?=20l'outillage.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ .php_cs.dist | 12 ++++++++++++ composer.json | 27 ++++++++++++++++++--------- phpmd-ruleset.xml | 9 +++++++++ phpstan.neon | 5 +++++ phpunit.xml | 22 ++++++++++++++++++++++ src/.gitkeep | 0 src/MyClass.php | 20 ++++++++++++++++++++ tests/.gitkeep | 0 tests/MyClassTest.php | 22 ++++++++++++++++++++++ 10 files changed, 110 insertions(+), 9 deletions(-) create mode 100644 .php_cs.dist create mode 100644 phpmd-ruleset.xml create mode 100644 phpstan.neon create mode 100644 phpunit.xml delete mode 100644 src/.gitkeep create mode 100644 src/MyClass.php delete mode 100644 tests/.gitkeep create mode 100644 tests/MyClassTest.php diff --git a/.gitignore b/.gitignore index cac762f..408b1a2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ /vendor/ /.idea/ +/.php_cs*cache +.phpunit.result.cache diff --git a/.php_cs.dist b/.php_cs.dist new file mode 100644 index 0000000..1cc83a0 --- /dev/null +++ b/.php_cs.dist @@ -0,0 +1,12 @@ +<?php + +$finder = PhpCsFixer\Finder::create() + ->exclude('vendor') + ->files() + ->name('*.php') + ->in('.'); + +return Irstea\CS\Config::create() + ->setIndent(' ') + ->setLineEnding("\n") + ->setFinder($finder); diff --git a/composer.json b/composer.json index dd63782..2a023a4 100644 --- a/composer.json +++ b/composer.json @@ -33,12 +33,12 @@ }, "autoload": { "psr-4": { - "\\Irstea\\MyProject\\": "src/" + "Irstea\\MyProject\\": "src/" } }, "autoload-dev": { "psr-4": { - "\\Irstea\\MyProject\\": "tests/" + "Irstea\\MyProject\\Tests\\": "tests/" } }, "scripts": { @@ -52,9 +52,10 @@ "@test:phpcpd", "@test:phpmd", "@test:phpstan", + "@test:phpunit", + "@test:composer-validate", "@test:composer-require", - "@test:security", - "@test:phpunit" + "@test:security" ], "phploc": [ "vendor/bin/phploc src tests" @@ -70,10 +71,16 @@ "vendor/bin/phpcpd --fuzzy src tests" ], "test:phpmd": [ - "vendor/bin/phpmd src,tests text vendor/irstea/phpmd-config/strict.xml" + "vendor/bin/phpmd src,tests text ./phpmd-ruleset.xml" ], "test:phpstan": [ - "vendor/bin/phpstan analyse" + "vendor/bin/phpstan analyse --ansi --no-progress src tests" + ], + "test:phpunit": [ + "vendor/bin/phpunit" + ], + "test:composer-validate": [ + "composer validate" ], "test:composer-require": [ "vendor/bin/composer-require-checker check" @@ -83,14 +90,16 @@ ] }, "scripts-descriptions": { - "test": "Exécute tous les tests en série.", "fix-cs": "Applique les corrections automatiques de style.", "phploc": "Calcule des stats sur les sources.", + "test": "Exécute tous les tests en série.", "test:lint": "Vérifie la syntaxe et le style des sources.", "test:phpcpd": "Détecte les blocs de code similaires.", - "test:phpmd": "Détecte des défauts de ", + "test:phpmd": "Détecte des défauts de codage.", "test:phpstan": "Détecte des erreurs de programmation grâce au typage.", + "test:phpunit": "Exécute les tests dynamiques.", + "test:composer-validate": "Vérifie la validité du composer.json.", "test:composer-require": "Vérifie que les sources n'utilise que des librairies listés dans les dépendances directes.", - "test:security": "Vérifie qu'aucun paquet utilisé n'ait de faille de sécurité signalée." + "test:securit": "Vérifie qu'aucun paquet utilisé n'ait de faille de sécurité signalée." } } diff --git a/phpmd-ruleset.xml b/phpmd-ruleset.xml new file mode 100644 index 0000000..96ca0fa --- /dev/null +++ b/phpmd-ruleset.xml @@ -0,0 +1,9 @@ +<?xml version="1.0"?> +<ruleset name="SYGADE PHPMD rule set" + xmlns="http://pmd.sf.net/ruleset/1.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd" + xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd"> + + <rule ref="vendor/irstea/phpmd-config/strict.xml"/> +</ruleset> diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 0000000..d1a1435 --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,5 @@ +includes: + - vendor/irstea/phpstan-config/strict.neon + - vendor/irstea/phpstan-config/phpunit.neon + + diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..3f2207a --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/8.1/phpunit.xsd" + bootstrap="vendor/autoload.php" + executionOrder="depends,defects" + forceCoversAnnotation="true" + beStrictAboutCoversAnnotation="true" + beStrictAboutOutputDuringTests="true" + beStrictAboutTodoAnnotatedTests="true" + verbose="true"> + <testsuites> + <testsuite name="default"> + <directory suffix="Test.php">tests</directory> + </testsuite> + </testsuites> + + <filter> + <whitelist processUncoveredFilesFromWhitelist="true"> + <directory suffix=".php">src</directory> + </whitelist> + </filter> +</phpunit> diff --git a/src/.gitkeep b/src/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/MyClass.php b/src/MyClass.php new file mode 100644 index 0000000..a6f6323 --- /dev/null +++ b/src/MyClass.php @@ -0,0 +1,20 @@ +<?php declare(strict_types=1); +/* + * Create and customize a file named .docheader at the root of the project to change this message. + */ + +namespace Irstea\MyProject; + +/** + * La classe MyClass. + */ +class MyClass +{ + /** + * @return int + */ + public function getResponse(): int + { + return 42; + } +} diff --git a/tests/.gitkeep b/tests/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/tests/MyClassTest.php b/tests/MyClassTest.php new file mode 100644 index 0000000..4b222ee --- /dev/null +++ b/tests/MyClassTest.php @@ -0,0 +1,22 @@ +<?php declare(strict_types=1); +/* + * Create and customize a file named .docheader at the root of the project to change this message. + */ + +namespace Irstea\MyProject\Tests; + +use Irstea\MyProject\MyClass; +use PHPUnit\Framework\TestCase; + +/** + * Les tests de la classe MyClass. + */ +class MyClassTest extends TestCase +{ + public function testGetResponse(): void + { + $subject = new MyClass(); + + self::assertEquals(42, $subject->getResponse()); + } +} -- GitLab