From 5b1bde2ce30e1421d3ed4d7360be7895daffc94f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Guillaume=20Perr=C3=A9al?= <guillaume.perreal@irstea.fr>
Date: Mon, 9 Dec 2019 15:35:09 +0100
Subject: [PATCH] =?UTF-8?q?Met=20=C3=A0=20niveau=20la=20configuration=20de?=
 =?UTF-8?q?=20d=C3=A9veloppement=20du=20package.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Utilisation des scripts composer.
---
 .docheader                                    |  15 ++
 .editorconfig                                 |  23 ++-
 .php_cs.dist                                  | 150 +-----------------
 composer.json                                 |  43 ++++-
 devtools/.editorconfig                        |   1 -
 devtools/.gitrepo                             |  11 --
 devtools/README.md                            |  48 ------
 devtools/editorconfig                         |  22 ---
 devtools/gitlab/gitlab-ci.bundle.yml          |  40 -----
 devtools/php/.php_cs.dist                     |   1 -
 devtools/php/php_cs.dist                      | 150 ------------------
 devtools/php/phpcs.xml.dist                   |  21 ---
 devtools/php/phpmd-ruleset.xml                |  31 ----
 phpmd-ruleset.xml                             |  17 +-
 phpstan.neon                                  |   9 ++
 src/Command/CheckCommand.php                  |   4 +-
 src/Command/CollectGarbageCommand.php         |   4 +-
 src/Command/CreateCommand.php                 |   4 +-
 src/Command/ReadCommand.php                   |   4 +-
 src/Controller/UploadController.php           |   4 +-
 src/Controller/UploadedFileController.php     |   4 +-
 src/DependencyInjection/Configuration.php     |   4 +-
 .../IrsteaFileUploadExtension.php             |   4 +-
 src/Entity/UploadedFile.php                   |   4 +-
 src/Event/FileUploadCompleteEvent.php         |   4 +-
 src/Exception/Exception.php                   |   4 +-
 src/Exception/RejectedFileException.php       |   4 +-
 src/FileUploadEvents.php                      |   4 +-
 .../UploadedFileTransformer.php               |   4 +-
 src/Form/Type/FileUploadType.php              |   4 +-
 src/Http/UploadedFileResponse.php             |   4 +-
 src/IrsteaFileUploadBundle.php                |   4 +-
 src/Listener/CreationDataListener.php         |   4 +-
 src/Listener/UploadedFileListener.php         |   4 +-
 src/Listener/VirusScannerListener.php         |   4 +-
 src/Model/FileManagerInterface.php            |   4 +-
 src/Model/UploadedFileInterface.php           |   4 +-
 src/Service/FileManager.php                   |   4 +-
 src/Service/FileUrlGenerator.php              |   4 +-
 src/Service/FileUrlGeneratorInterface.php     |   4 +-
 src/Twig/FileUploadExtension.php              |   4 +-
 src/Utils/MimeTypeIcon.php                    |   4 +-
 src/Validation/FileMimeType.php               |   4 +-
 src/Validation/FileMimeTypeValidator.php      |   4 +-
 src/Validation/FileSize.php                   |   4 +-
 src/Validation/FileSizeValidator.php          |   4 +-
 tests/Entity/UploadedFileTest.php             |   4 +-
 .../UploadedFileTransformerTest.php           |   4 +-
 tests/Listener/UploadedFileListenerTest.php   |   4 +-
 tests/Listener/VirusScannerListenerTest.php   |   4 +-
 tests/Utils/MimeTypeIconTest.php              |   4 +-
 51 files changed, 183 insertions(+), 543 deletions(-)
 create mode 100644 .docheader
 mode change 120000 => 100644 .editorconfig
 delete mode 120000 devtools/.editorconfig
 delete mode 100644 devtools/.gitrepo
 delete mode 100644 devtools/README.md
 delete mode 100644 devtools/editorconfig
 delete mode 100644 devtools/gitlab/gitlab-ci.bundle.yml
 delete mode 120000 devtools/php/.php_cs.dist
 delete mode 100644 devtools/php/php_cs.dist
 delete mode 100644 devtools/php/phpcs.xml.dist
 delete mode 100644 devtools/php/phpmd-ruleset.xml
 mode change 120000 => 100644 phpmd-ruleset.xml
 create mode 100644 phpstan.neon

diff --git a/.docheader b/.docheader
new file mode 100644
index 00000000..5efa004d
--- /dev/null
+++ b/.docheader
@@ -0,0 +1,15 @@
+%package% - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+Copyright (C) %yearRange% Irstea <dsi.poleis.contact@lists.irstea.fr>
+
+This program is free software: you can redistribute it and/or modify it under
+the terms of the GNU Lesser General Public License as published by the Free
+Software Foundation, either version 3 of the License, or (at your option) any
+later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License and the GNU
+Lesser General Public License along with this program. If not, see
+<https://www.gnu.org/licenses/>.
diff --git a/.editorconfig b/.editorconfig
deleted file mode 120000
index bab0d35c..00000000
--- a/.editorconfig
+++ /dev/null
@@ -1 +0,0 @@
-devtools/editorconfig
\ No newline at end of file
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 00000000..ee7f2f08
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,22 @@
+# editorconfig.org
+root=true
+
+[*]
+charset=utf-8
+end_of_line=lf
+indent_size=4
+indent_style=space
+insert_final_newline=true
+tab_width=4
+trim_trailing_whitespace=true
+
+[*.{js,yml,yaml,json,ts}]
+indent_size=2
+tab_width=2
+
+[Makefile]
+indent_style=tab
+
+[*.md]
+max_line_length = off
+trim_trailing_whitespace = false
diff --git a/.php_cs.dist b/.php_cs.dist
index 5166747b..1c4cd592 100644
--- a/.php_cs.dist
+++ b/.php_cs.dist
@@ -1,150 +1,16 @@
-<?php
-define('COMMIT_CACHE', '.php_cs.commit-cache');
+<?php declare(strict_types = 1);
 
 $finder = PhpCsFixer\Finder::create()
     ->exclude('vendor')
     ->exclude('node_modules')
-    ->exclude('cache')
+    ->exclude('var')
     ->files()
     ->name('*.php')
+    ->name('console')
+    ->name('.php_cs.dist')
     ->in('.');
 
-$yearRange = getGitCommitYears();
-
-$ruleSets = ['@PSR2' => true, '@Symfony' => true];
-
-$rules = [
-    // Configuration && overrides
-    'binary_operator_spaces'                    => ['align_double_arrow' => true],
-    'blank_line_after_opening_tag'              => false,
-    'concat_space'                              => ['spacing' => 'one'],
-    'method_argument_space'                     => ['ensure_fully_multiline' => true],
-
-    // Risky
-    'is_null'                                   => ['use_yoda_style' => false],
-    'non_printable_character'                   => ['use_escape_sequences_in_strings' => true],
-
-    // Safe
-    'align_multiline_comment'                   => true,
-    'array_syntax'                              => ['syntax' => 'short'],
-    'general_phpdoc_annotation_remove'          => ['annotations' => ['author', 'package']],
-    'no_multiline_whitespace_before_semicolons' => true,
-    'no_useless_else'                           => true,
-    'no_useless_return'                         => true,
-    'ordered_imports'                           => true,
-    'phpdoc_add_missing_param_annotation'       => true,
-    'phpdoc_annotation_without_dot'             => true,
-    'phpdoc_order'                              => true,
-    'semicolon_after_instruction'               => true,
-    'yoda_style'                                => false,
-    'self_accessor'                             => false,
-
-    'header_comment' => [
-        'commentType' => 'comment',
-        'location'    => 'after_declare_strict',
-        'separate'    => 'bottom',
-        'header'      => <<<HEADER
-irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
-Copyright (C) $yearRange IRSTEA
-
-This program is free software: you can redistribute it and/or modify it under
-the terms of the GNU Lesser General Public License as published by the Free
-Software Foundation, either version 3 of the License, or (at your option) any
-later version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License and the GNU
-Lesser General Public License along with this program. If not, see
-<https://www.gnu.org/licenses/>.
-HEADER
-        ,
-    ],
-];
-
-$phpVersion = findComposerPhpReq();
-
-if ($phpVersion >= 5.6) {
-    $ruleSets['@PHP56Migration'] = true;
-}
-if ($phpVersion >= 7.0) {
-    $ruleSets['@PHP70Migration'] = true;
-    $rules['declare_strict_types'] = true;
-}
-if ($phpVersion >= 7.1) {
-    $ruleSets['@PHP71Migration'] = true;
-}
-
-echo "Rulesets: " . implode(', ', array_keys($ruleSets)) . ".\n";
-
-return PhpCsFixer\Config::create()
-  ->setRiskyAllowed(true)
-  ->setUsingCache(false)
-  ->setIndent('    ')
-  ->setLineEnding("\n")
-  ->setRules(array_merge($ruleSets, $rules))
-  ->setFinder($finder);
-
-/**
- * @return string
- */
-function getGitCommitYears(): string
-{
-    return getCachedValue('years', function () {
-        echo "Examining git history...\n";
-        $last = date('Y');
-        $first = exec('git log --format=%cd --date=format:%Y --date-order | tail -n1') ?? $last;
-        return (null !== $last && $last !== $first) ? "$first-$last" : $first;
-    });
-}
-
-/**
- * @return float
- */
-function findComposerPhpReq()
-{
-    return getCachedValue('php-req', function () {
-        if (file_exists('composer.json')) {
-            $data = json_decode(file_get_contents('composer.json'), true);
-            if (is_array($data) && isset($data['require']['php'])) {
-                if (preg_match('/(?:>=?|\^|~)\s*([57]\.[0-9])/', $data['require']['php'], $groups)) {
-                    return (float) $groups[1];
-                }
-            }
-        }
-
-        return 5.6;
-    });
-}
-
-/**
- * @param string   $key
- * @param callable $produce
- *
- * @return string|int|bool|array
- */
-function getCachedValue($key, $produce)
-{
-    static $commit = null;
-    if (null === $commit) {
-        $commit = trim(`git rev-parse HEAD`);
-    }
-    if (file_exists(COMMIT_CACHE) && filemtime(COMMIT_CACHE) >= filemtime(__FILE__)) {
-        $cache = json_decode(file_get_contents(COMMIT_CACHE), true);
-    } else {
-        $cache = [];
-    }
-    if (!isset($cache[$commit][$key])) {
-        if (!isset($cache[$commit])) {
-            $cache[$commit] = [];
-        }
-        $cache[$commit][$key] = $produce();
-        file_put_contents(COMMIT_CACHE, json_encode($cache));
-    }
-
-    return $cache[$commit][$key];
-}
-
-// vim:filetype=php
+return Irstea\CS\Config::create()
+    ->setIndent('    ')
+    ->setLineEnding("\n")
+    ->setFinder($finder);
diff --git a/composer.json b/composer.json
index bf4003e2..f1a29da4 100644
--- a/composer.json
+++ b/composer.json
@@ -48,10 +48,22 @@
         "xenolope/quahog": "^2.1"
     },
     "require-dev": {
-        "phpunit/phpunit": "^7"
+        "hexmedia/yaml-linter": "^0.2",
+        "irstea/composer-require-checker-shim": "^2.0",
+        "irstea/php-cs-fixer-config": "^1.0",
+        "irstea/phpcpd-shim": "^3.0",
+        "irstea/phploc-shim": "^4.0",
+        "irstea/phpmd-config": "^1.0",
+        "irstea/phpstan-config": "^1.1",
+        "jakub-onderka/php-parallel-lint": "^1.0",
+        "pcov/clobber": "^2.0",
+        "phpunit/phpunit": "^7.0"
     },
     "config": {
-        "sort-packages": true
+        "sort-packages": true,
+        "platform": {
+            "php": "7.1.30"
+        }
     },
     "extra": {
         "branch-alias": {
@@ -65,5 +77,32 @@
             ".git*",
             ".idea"
         ]
+    },
+    "scripts": {
+        "post-install-cmd": "@clobber-phpunit",
+        "post-update-cmd": "@clobber-phpunit",
+        "clobber-phpunit": "[ -d vendor/phpunit/phpunit ] && vendor/bin/pcov . clobber",
+
+        "fix-cs": "vendor/bin/php-cs-fixer fix --verbose",
+        "phploc": "vendor/bin/phploc src tests --exclude tests/Fixtures/var",
+        "test": [
+          "@test:lint",
+          "@test:php-cs-fixer",
+          "@test:phpcpd",
+          "@test:phpmd",
+          "@test:phpstan",
+          "@test:composer-require-checker",
+          "@test:phpunit"
+        ],
+        "test:lint": [
+          "vendor/bin/parallel-lint -j $(nproc) --exclude tests/Fixtures/var src tests ",
+          "vendor/bin/yaml-lint src"
+        ],
+        "test:php-cs-fixer": "vendor/bin/php-cs-fixer fix --dry-run --verbose",
+        "test:phpcpd": "vendor/bin/phpcpd --fuzzy src tests --exclude=Fixtures/var",
+        "test:composer-require-checker": "vendor/bin/composer-require-checker",
+        "test:phpmd": "vendor/bin/phpmd src,tests text ./phpmd-ruleset.xml --suffixes=php",
+        "test:phpstan": "vendor/bin/phpstan analyse --no-progress",
+        "test:phpunit": "vendor/bin/phpunit"
     }
 }
diff --git a/devtools/.editorconfig b/devtools/.editorconfig
deleted file mode 120000
index 6f27d609..00000000
--- a/devtools/.editorconfig
+++ /dev/null
@@ -1 +0,0 @@
-editorconfig
\ No newline at end of file
diff --git a/devtools/.gitrepo b/devtools/.gitrepo
deleted file mode 100644
index 280a3d4e..00000000
--- a/devtools/.gitrepo
+++ /dev/null
@@ -1,11 +0,0 @@
-; DO NOT EDIT (unless you know what you are doing)
-;
-; This subdirectory is a git "subrepo", and this file is maintained by the
-; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme
-;
-[subrepo]
-	remote = git@gitlab-ssh.irstea.fr:pole-is/devtools-config.git
-	branch = master
-	commit = 0c931beb09149c83b9defadd3f96284e7c91ba44
-	parent = 06988e9db1b139f8a6baf91aa1007c717451455a
-	cmdver = 0.3.1
diff --git a/devtools/README.md b/devtools/README.md
deleted file mode 100644
index 431d33a4..00000000
--- a/devtools/README.md
+++ /dev/null
@@ -1,48 +0,0 @@
-Ce dépôt contient la configuration par défaut de quelques outils utiles pendant le développement.
-
-Installation
-============
-
-Cloner le dossier dans $HOME/.config/devtools.
-
-```bash
-git clone git@gitlab-ssh.irstea.fr:pole-is/devtools-config.git $HOME/.config/devtools
-```
-
-Utilisation
-
-Globale
--------
-
-Créer des liens symboliques dans $HOME pour .editorconf et phpcs.xml.dist:
-
-```bash
-ln -snf $HOME/.config/devtools/php/phpcs.xml.dist $HOME/phpcs.xml.dist
-ln -snf $HOME/.config/devtools/.editorconfig $HOME/.editorconfig
-```
-
-Enfin, configurer PHPStorm pour utiliser les fichiers $HOME/.config/devtools/php/phpcs.xml.dist et $HOME/.config/devtools/php/phpmd-ruleset.xml pour phpcs et phpmd respectivement.
-
-Par projet
-----------
-
-php-cs-fixer nécessite de copier le fichier directement dans le projet :
-
-```bash
-cp $HOME/.config/devtools/php/.php_cs.dist chemin/vers/mon/projet
-```
-
-Pour phpcs et phpmd, c'est également nécessaire pour l'intégration continue.
-
-Outils
-======
-
-* [editorconfig](): permet de configurer globalement l'encodage, l'indentation et la gestion des espaces.
-
-* [phpcs](https://github.com/squizlabs/PHP_CodeSniffer): vérification du style de codage.
-
-* [php-cs-fixer](https://github.com/FriendsOfPhp/PHP-CS-Fixer): cousin de phpcs, mais qui permet de corriger les fichiers et inclut également des aide pour migrer d'une version de PHP à une autre. 
-
-* [phpmd](https://phpmd.org/): détection de bugs potentielles, de fonctions/classes trop complexes, ...
-
-
diff --git a/devtools/editorconfig b/devtools/editorconfig
deleted file mode 100644
index e12e5a76..00000000
--- a/devtools/editorconfig
+++ /dev/null
@@ -1,22 +0,0 @@
-# editorconfig.org
-root=true
-
-[*]
-charset=utf-8
-end_of_line=lf
-indent_size=4
-indent_style=space
-insert_final_newline=true
-tab_width=4
-trim_trailing_whitespace=true
-
-[*.{js,yml,json,ts}]
-indent_size=2
-tab_width=2
-
-[Makefile]
-indent_style=tab
-
-[*.md]
-max_line_length = off
-trim_trailing_whitespace = false
diff --git a/devtools/gitlab/gitlab-ci.bundle.yml b/devtools/gitlab/gitlab-ci.bundle.yml
deleted file mode 100644
index 0c9a6684..00000000
--- a/devtools/gitlab/gitlab-ci.bundle.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-.defaults: &defaults
-  tags: [ docker ]
-  image: isdevtools.irstea.fr/poleis/php-analysis:7.1
-
-phploc:
-  <<: *defaults
-  script: phploc src
-
-lint:
-  <<: *defaults
-  script:
-    - parallel-lint -j $(nproc) src
-    - twig-lint lint src
-    - yaml-lint src
-
-php-cs-fixer:
-  <<: *defaults
-  script: php-cs-fixer fix --dry-run --verbose
-
-phpcpd:
-  <<: *defaults
-  script: phpcpd --fuzzy src
-
-.with-vendors: &with-vendors
-  <<: *defaults
-  before_script:
-    - composer install --prefer-dist --no-progress --no-suggest
-  cache:
-    key: "$CI_COMMIT_REF_NAME"
-    paths:
-      - /composer/cache
-
-composer-require-checker:
-  <<: *with-vendors
-  script: composer-require-checker
-
-phpmd:
-  <<: *with-vendors
-  script: phpmd src text ./phpmd-ruleset.xml --suffixes=php
diff --git a/devtools/php/.php_cs.dist b/devtools/php/.php_cs.dist
deleted file mode 120000
index 13ed5428..00000000
--- a/devtools/php/.php_cs.dist
+++ /dev/null
@@ -1 +0,0 @@
-php_cs.dist
\ No newline at end of file
diff --git a/devtools/php/php_cs.dist b/devtools/php/php_cs.dist
deleted file mode 100644
index 5166747b..00000000
--- a/devtools/php/php_cs.dist
+++ /dev/null
@@ -1,150 +0,0 @@
-<?php
-define('COMMIT_CACHE', '.php_cs.commit-cache');
-
-$finder = PhpCsFixer\Finder::create()
-    ->exclude('vendor')
-    ->exclude('node_modules')
-    ->exclude('cache')
-    ->files()
-    ->name('*.php')
-    ->in('.');
-
-$yearRange = getGitCommitYears();
-
-$ruleSets = ['@PSR2' => true, '@Symfony' => true];
-
-$rules = [
-    // Configuration && overrides
-    'binary_operator_spaces'                    => ['align_double_arrow' => true],
-    'blank_line_after_opening_tag'              => false,
-    'concat_space'                              => ['spacing' => 'one'],
-    'method_argument_space'                     => ['ensure_fully_multiline' => true],
-
-    // Risky
-    'is_null'                                   => ['use_yoda_style' => false],
-    'non_printable_character'                   => ['use_escape_sequences_in_strings' => true],
-
-    // Safe
-    'align_multiline_comment'                   => true,
-    'array_syntax'                              => ['syntax' => 'short'],
-    'general_phpdoc_annotation_remove'          => ['annotations' => ['author', 'package']],
-    'no_multiline_whitespace_before_semicolons' => true,
-    'no_useless_else'                           => true,
-    'no_useless_return'                         => true,
-    'ordered_imports'                           => true,
-    'phpdoc_add_missing_param_annotation'       => true,
-    'phpdoc_annotation_without_dot'             => true,
-    'phpdoc_order'                              => true,
-    'semicolon_after_instruction'               => true,
-    'yoda_style'                                => false,
-    'self_accessor'                             => false,
-
-    'header_comment' => [
-        'commentType' => 'comment',
-        'location'    => 'after_declare_strict',
-        'separate'    => 'bottom',
-        'header'      => <<<HEADER
-irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
-Copyright (C) $yearRange IRSTEA
-
-This program is free software: you can redistribute it and/or modify it under
-the terms of the GNU Lesser General Public License as published by the Free
-Software Foundation, either version 3 of the License, or (at your option) any
-later version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License and the GNU
-Lesser General Public License along with this program. If not, see
-<https://www.gnu.org/licenses/>.
-HEADER
-        ,
-    ],
-];
-
-$phpVersion = findComposerPhpReq();
-
-if ($phpVersion >= 5.6) {
-    $ruleSets['@PHP56Migration'] = true;
-}
-if ($phpVersion >= 7.0) {
-    $ruleSets['@PHP70Migration'] = true;
-    $rules['declare_strict_types'] = true;
-}
-if ($phpVersion >= 7.1) {
-    $ruleSets['@PHP71Migration'] = true;
-}
-
-echo "Rulesets: " . implode(', ', array_keys($ruleSets)) . ".\n";
-
-return PhpCsFixer\Config::create()
-  ->setRiskyAllowed(true)
-  ->setUsingCache(false)
-  ->setIndent('    ')
-  ->setLineEnding("\n")
-  ->setRules(array_merge($ruleSets, $rules))
-  ->setFinder($finder);
-
-/**
- * @return string
- */
-function getGitCommitYears(): string
-{
-    return getCachedValue('years', function () {
-        echo "Examining git history...\n";
-        $last = date('Y');
-        $first = exec('git log --format=%cd --date=format:%Y --date-order | tail -n1') ?? $last;
-        return (null !== $last && $last !== $first) ? "$first-$last" : $first;
-    });
-}
-
-/**
- * @return float
- */
-function findComposerPhpReq()
-{
-    return getCachedValue('php-req', function () {
-        if (file_exists('composer.json')) {
-            $data = json_decode(file_get_contents('composer.json'), true);
-            if (is_array($data) && isset($data['require']['php'])) {
-                if (preg_match('/(?:>=?|\^|~)\s*([57]\.[0-9])/', $data['require']['php'], $groups)) {
-                    return (float) $groups[1];
-                }
-            }
-        }
-
-        return 5.6;
-    });
-}
-
-/**
- * @param string   $key
- * @param callable $produce
- *
- * @return string|int|bool|array
- */
-function getCachedValue($key, $produce)
-{
-    static $commit = null;
-    if (null === $commit) {
-        $commit = trim(`git rev-parse HEAD`);
-    }
-    if (file_exists(COMMIT_CACHE) && filemtime(COMMIT_CACHE) >= filemtime(__FILE__)) {
-        $cache = json_decode(file_get_contents(COMMIT_CACHE), true);
-    } else {
-        $cache = [];
-    }
-    if (!isset($cache[$commit][$key])) {
-        if (!isset($cache[$commit])) {
-            $cache[$commit] = [];
-        }
-        $cache[$commit][$key] = $produce();
-        file_put_contents(COMMIT_CACHE, json_encode($cache));
-    }
-
-    return $cache[$commit][$key];
-}
-
-// vim:filetype=php
diff --git a/devtools/php/phpcs.xml.dist b/devtools/php/phpcs.xml.dist
deleted file mode 100644
index f6de6b66..00000000
--- a/devtools/php/phpcs.xml.dist
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<ruleset name="Irstea" namespace="Irstea\Standard">
-
-    <description>Coding standard of Irstea, pôle informatique scientifique</description>
-
-    <file>src</file>
-
-    <arg name="encoding" value="utf-8"/>
-    <arg name="extensions" value="php"/>
-    <arg name="ignore" value="vendor/*,*/cache/*"/>
-    <arg value="sp"/>
-
-    <rule ref="PSR2"/>
-
-    <rule ref="Generic.Files.LineLength">
-        <properties>
-            <property name="lineLimit" value="140"/>
-        </properties>
-    </rule>
-
-</ruleset>
diff --git a/devtools/php/phpmd-ruleset.xml b/devtools/php/phpmd-ruleset.xml
deleted file mode 100644
index 7e284556..00000000
--- a/devtools/php/phpmd-ruleset.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<ruleset name="Irstea PHPMD ruleset"
-         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">
-
-    <description>Irstea ruleset</description>
-
-    <rule ref="rulesets/controversial.xml/Superglobals" />
-    <rule ref="rulesets/controversial.xml/CamelCaseClassName"/>
-    <rule ref="rulesets/controversial.xml/CamelCasePropertyName"/>
-
-    <rule ref="rulesets/design.xml/ExitExpression" />
-    <rule ref="rulesets/design.xml/EvalExpression" />
-    <rule ref="rulesets/design.xml/GotoStatement" />
-    <rule ref="rulesets/design.xml/DevelopmentCodeFragment">
-        <property name="unwanted-functions" value="var_dump,print_r,debug_zval_dump,debug_print_backtrace,dump" />
-    </rule>
-
-    <rule ref="rulesets/naming.xml/ShortMethodName" />
-    <rule ref="rulesets/naming.xml/ConstructorWithNameAsEnclosingClass" />
-    <rule ref="rulesets/naming.xml/ConstantNamingConventions" />
-
-    <rule ref="rulesets/unusedcode.xml/UnusedPrivateMethod" />
-    <rule ref="rulesets/unusedcode.xml/UnusedPrivateField" />
-
-    <exclude-pattern>vendor/</exclude-pattern>
-    <exclude-pattern>node_modules/</exclude-pattern>
-    <exclude-pattern>.*/cache/</exclude-pattern>
-
-</ruleset>
diff --git a/phpmd-ruleset.xml b/phpmd-ruleset.xml
deleted file mode 120000
index c6393cfe..00000000
--- a/phpmd-ruleset.xml
+++ /dev/null
@@ -1 +0,0 @@
-devtools/php/phpmd-ruleset.xml
\ No newline at end of file
diff --git a/phpmd-ruleset.xml b/phpmd-ruleset.xml
new file mode 100644
index 00000000..fcd44713
--- /dev/null
+++ b/phpmd-ruleset.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<ruleset name="Theme-Bundle ruleset"
+         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">
+
+    <description>Use the loose ruleset of irstea/phpmd-config.</description>
+
+    <exclude-pattern>vendor/</exclude-pattern>
+    <exclude-pattern>node_modules/</exclude-pattern>
+    <exclude-pattern>.*/cache/</exclude-pattern>
+    <exclude-pattern>var/</exclude-pattern>
+
+    <rule ref="vendor/irstea/phpmd-config/loose.xml"/>
+
+</ruleset>
diff --git a/phpstan.neon b/phpstan.neon
new file mode 100644
index 00000000..445f6f0d
--- /dev/null
+++ b/phpstan.neon
@@ -0,0 +1,9 @@
+includes:
+    - vendor/irstea/phpstan-config/phpstan.neon
+
+parameters:
+    level: 1
+
+    paths:
+        - src
+        - tests
diff --git a/src/Command/CheckCommand.php b/src/Command/CheckCommand.php
index 42781d21..2a6b9633 100644
--- a/src/Command/CheckCommand.php
+++ b/src/Command/CheckCommand.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Command/CollectGarbageCommand.php b/src/Command/CollectGarbageCommand.php
index 02e848a3..7e1350b2 100644
--- a/src/Command/CollectGarbageCommand.php
+++ b/src/Command/CollectGarbageCommand.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Command/CreateCommand.php b/src/Command/CreateCommand.php
index b6e35615..2a4c2422 100644
--- a/src/Command/CreateCommand.php
+++ b/src/Command/CreateCommand.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Command/ReadCommand.php b/src/Command/ReadCommand.php
index bbaaeb8d..2246fd80 100644
--- a/src/Command/ReadCommand.php
+++ b/src/Command/ReadCommand.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Controller/UploadController.php b/src/Controller/UploadController.php
index 48224e83..9b6d1f6e 100644
--- a/src/Controller/UploadController.php
+++ b/src/Controller/UploadController.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Controller/UploadedFileController.php b/src/Controller/UploadedFileController.php
index 5f926c85..59ea4e0c 100644
--- a/src/Controller/UploadedFileController.php
+++ b/src/Controller/UploadedFileController.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php
index 72d14f8c..4e5fbf59 100644
--- a/src/DependencyInjection/Configuration.php
+++ b/src/DependencyInjection/Configuration.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/DependencyInjection/IrsteaFileUploadExtension.php b/src/DependencyInjection/IrsteaFileUploadExtension.php
index 289eaa6b..1959f806 100644
--- a/src/DependencyInjection/IrsteaFileUploadExtension.php
+++ b/src/DependencyInjection/IrsteaFileUploadExtension.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Entity/UploadedFile.php b/src/Entity/UploadedFile.php
index a37b5b81..26e90765 100644
--- a/src/Entity/UploadedFile.php
+++ b/src/Entity/UploadedFile.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Event/FileUploadCompleteEvent.php b/src/Event/FileUploadCompleteEvent.php
index 80b033f3..143257e9 100644
--- a/src/Event/FileUploadCompleteEvent.php
+++ b/src/Event/FileUploadCompleteEvent.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Exception/Exception.php b/src/Exception/Exception.php
index 88a5af2b..25d10e2b 100644
--- a/src/Exception/Exception.php
+++ b/src/Exception/Exception.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Exception/RejectedFileException.php b/src/Exception/RejectedFileException.php
index 28e705c0..6c7ea622 100644
--- a/src/Exception/RejectedFileException.php
+++ b/src/Exception/RejectedFileException.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/FileUploadEvents.php b/src/FileUploadEvents.php
index 1c6b9e75..44baec4a 100644
--- a/src/FileUploadEvents.php
+++ b/src/FileUploadEvents.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Form/DataTranformer/UploadedFileTransformer.php b/src/Form/DataTranformer/UploadedFileTransformer.php
index f397be59..d8a17576 100644
--- a/src/Form/DataTranformer/UploadedFileTransformer.php
+++ b/src/Form/DataTranformer/UploadedFileTransformer.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Form/Type/FileUploadType.php b/src/Form/Type/FileUploadType.php
index fa7e9efa..57b93525 100644
--- a/src/Form/Type/FileUploadType.php
+++ b/src/Form/Type/FileUploadType.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Http/UploadedFileResponse.php b/src/Http/UploadedFileResponse.php
index 9fdeb876..74976c6f 100644
--- a/src/Http/UploadedFileResponse.php
+++ b/src/Http/UploadedFileResponse.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/IrsteaFileUploadBundle.php b/src/IrsteaFileUploadBundle.php
index c9761506..0d9bd90e 100644
--- a/src/IrsteaFileUploadBundle.php
+++ b/src/IrsteaFileUploadBundle.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Listener/CreationDataListener.php b/src/Listener/CreationDataListener.php
index 0dfa76e6..52db9c15 100644
--- a/src/Listener/CreationDataListener.php
+++ b/src/Listener/CreationDataListener.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Listener/UploadedFileListener.php b/src/Listener/UploadedFileListener.php
index b2823719..e4327e9e 100644
--- a/src/Listener/UploadedFileListener.php
+++ b/src/Listener/UploadedFileListener.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Listener/VirusScannerListener.php b/src/Listener/VirusScannerListener.php
index 17d40939..97488954 100644
--- a/src/Listener/VirusScannerListener.php
+++ b/src/Listener/VirusScannerListener.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Model/FileManagerInterface.php b/src/Model/FileManagerInterface.php
index 9422e761..ef832837 100644
--- a/src/Model/FileManagerInterface.php
+++ b/src/Model/FileManagerInterface.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Model/UploadedFileInterface.php b/src/Model/UploadedFileInterface.php
index a09af624..ecf71220 100644
--- a/src/Model/UploadedFileInterface.php
+++ b/src/Model/UploadedFileInterface.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Service/FileManager.php b/src/Service/FileManager.php
index 91b5f92e..24ba6691 100644
--- a/src/Service/FileManager.php
+++ b/src/Service/FileManager.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Service/FileUrlGenerator.php b/src/Service/FileUrlGenerator.php
index 91df5501..a46bc7cf 100644
--- a/src/Service/FileUrlGenerator.php
+++ b/src/Service/FileUrlGenerator.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Service/FileUrlGeneratorInterface.php b/src/Service/FileUrlGeneratorInterface.php
index 43d704f2..3bdbab53 100644
--- a/src/Service/FileUrlGeneratorInterface.php
+++ b/src/Service/FileUrlGeneratorInterface.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Twig/FileUploadExtension.php b/src/Twig/FileUploadExtension.php
index 73e549a7..eb0b1700 100644
--- a/src/Twig/FileUploadExtension.php
+++ b/src/Twig/FileUploadExtension.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Utils/MimeTypeIcon.php b/src/Utils/MimeTypeIcon.php
index 3924250b..cfa4bb4b 100644
--- a/src/Utils/MimeTypeIcon.php
+++ b/src/Utils/MimeTypeIcon.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Validation/FileMimeType.php b/src/Validation/FileMimeType.php
index 670ff6a1..a3465863 100644
--- a/src/Validation/FileMimeType.php
+++ b/src/Validation/FileMimeType.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Validation/FileMimeTypeValidator.php b/src/Validation/FileMimeTypeValidator.php
index bb080c1f..6c776895 100644
--- a/src/Validation/FileMimeTypeValidator.php
+++ b/src/Validation/FileMimeTypeValidator.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Validation/FileSize.php b/src/Validation/FileSize.php
index dacd5713..80da1245 100644
--- a/src/Validation/FileSize.php
+++ b/src/Validation/FileSize.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/src/Validation/FileSizeValidator.php b/src/Validation/FileSizeValidator.php
index ab6a236c..1fcd584c 100644
--- a/src/Validation/FileSizeValidator.php
+++ b/src/Validation/FileSizeValidator.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/tests/Entity/UploadedFileTest.php b/tests/Entity/UploadedFileTest.php
index c4059316..bf31efd6 100644
--- a/tests/Entity/UploadedFileTest.php
+++ b/tests/Entity/UploadedFileTest.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/tests/Form/DataTranformer/UploadedFileTransformerTest.php b/tests/Form/DataTranformer/UploadedFileTransformerTest.php
index dff43332..29a75ce5 100644
--- a/tests/Form/DataTranformer/UploadedFileTransformerTest.php
+++ b/tests/Form/DataTranformer/UploadedFileTransformerTest.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/tests/Listener/UploadedFileListenerTest.php b/tests/Listener/UploadedFileListenerTest.php
index 1220b858..f953f499 100644
--- a/tests/Listener/UploadedFileListenerTest.php
+++ b/tests/Listener/UploadedFileListenerTest.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/tests/Listener/VirusScannerListenerTest.php b/tests/Listener/VirusScannerListenerTest.php
index 1378d272..3dfd048a 100644
--- a/tests/Listener/VirusScannerListenerTest.php
+++ b/tests/Listener/VirusScannerListenerTest.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
diff --git a/tests/Utils/MimeTypeIconTest.php b/tests/Utils/MimeTypeIconTest.php
index 2a010b76..781d9c6f 100644
--- a/tests/Utils/MimeTypeIconTest.php
+++ b/tests/Utils/MimeTypeIconTest.php
@@ -1,7 +1,7 @@
 <?php declare(strict_types=1);
 /*
- * irstea/file-upload-bundle provides services and widgets to manage user-submitted files.
- * Copyright (C) 2015-2019 IRSTEA
+ * irstea/file-upload-bundle - Bundle de gestion de fichiers intégrée à Symfony et Twitter-Bootstrap.
+ * Copyright (C) 2015-2019 Irstea <dsi.poleis.contact@lists.irstea.fr>
  *
  * This program is free software: you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by the Free
-- 
GitLab