diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f76ec4b98..8600f7e3f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -60,7 +60,7 @@ code_style:
- bin
- tests/app/vendor/
-sa_tests:
+phpstan_tests:
stage: Tests
image: registry.gitlab.com/chill-projet/chill-app/php-base-image:7.4
script:
@@ -71,6 +71,17 @@ sa_tests:
- bin
- tests/app/vendor/
+psalm_tests:
+ stage: Tests
+ image: registry.gitlab.com/chill-projet/chill-app/php-base-image:7.4
+ script:
+ - bin/grumphp run --tasks=psalm
+ artifacts:
+ expire_in: 30 min
+ paths:
+ - bin
+ - tests/app/vendor/
+
unit_tests:
stage: Tests
image: registry.gitlab.com/chill-projet/chill-app/php-base-image:7.4
diff --git a/composer.json b/composer.json
index 6e18ea69a..4d0d58f1f 100644
--- a/composer.json
+++ b/composer.json
@@ -64,10 +64,12 @@
"symfony/phpunit-bridge": "^5.2",
"symfony/stopwatch": "^5.1",
"symfony/var-dumper": "4.*",
- "symfony/web-profiler-bundle": "^5.0"
+ "symfony/web-profiler-bundle": "^5.0",
+ "vimeo/psalm": "^4.15"
},
"config": {
"bin-dir": "bin",
+ "sort-packages": true,
"vendor-dir": "tests/app/vendor"
},
"autoload": {
diff --git a/grumphp.yml b/grumphp.yml
index d25cc01ba..8efce6109 100644
--- a/grumphp.yml
+++ b/grumphp.yml
@@ -12,3 +12,28 @@ parameters:
tasks.phpcsfixer.allow_risky: true
tasks.phpcsfixer.diff: true
tasks.phpstan.level: 1
+ tasks.phpstan.blocking: true
+ tasks.phpstan.ignore_patterns:
+ - "/.github/"
+ - "/.idea/"
+ - "/build/"
+ - "/benchmarks/"
+ - "/docs/"
+ - "/node_modules/"
+ - "/resource/"
+ - "/spec/"
+ - "/var/"
+ - "/vendor/"
+
+ # Psalm
+ tasks.psalm.blocking: true
+ tasks.psalm.ignore_patterns:
+ - "/.github/"
+ - "/.idea/"
+ - "/build/"
+ - "/benchmarks/"
+ - "/node_modules/"
+ - "/resource/"
+ - "/spec/"
+ - "/var/"
+ - "/vendor/"
diff --git a/psalm-baseline.xml b/psalm-baseline.xml
new file mode 100644
index 000000000..aec43a176
--- /dev/null
+++ b/psalm-baseline.xml
@@ -0,0 +1,2162 @@
+
+
+
+
+ 'ChillActivityBundle:ActivityReasonCategory'
+ 'ChillActivityBundle:ActivityReasonCategory'
+ 'ChillActivityBundle:ActivityReasonCategory'
+ 'ChillActivityBundle:ActivityReasonCategory'
+
+
+
+
+ 'ChillActivityBundle:ActivityReason'
+ 'ChillActivityBundle:ActivityReason'
+ 'ChillActivityBundle:ActivityReason'
+ 'ChillActivityBundle:ActivityReason'
+
+
+
+
+ $socialIssue
+
+
+
+
+ $qb
+
+
+
+
+ $qb
+
+
+
+
+ OptionsResolverInterface
+
+
+
+
+ $person
+
+
+
+
+ Activity[]|array
+ Activity[]|array
+
+
+
+
+ require __DIR__ . '/../../../../../vendor/autoload.php'
+
+
+
+
+ return trigger_error($e, E_USER_ERROR);
+
+
+ $baseUrl && false !== $prefix = $this->getUrlencodedPrefix($requestUri, rtrim(dirname($baseUrl),'/'.DIRECTORY_SEPARATOR).'/')
+
+
+ $files
+ $files
+
+
+
+
+ addProvider
+ addProvider
+ new \Chill\CustomFieldsBundle\Form\CustomFieldType($this->get('chill.custom_field.provider'))
+ new \Chill\CustomFieldsBundle\Templating\Twig\CustomFieldRenderingTwig()
+ new \Chill\MainBundle\Form\Type\Select2CountryType($this->get('request_stack'), $this->get('doctrine.orm.default_entity_manager'))
+ new \Chill\MainBundle\Form\Type\Select2LanguageType($this->get('request_stack'), $this->get('doctrine.orm.default_entity_manager'))
+ new \Chill\MainBundle\Routing\MenuComposer()
+ new \Chill\MainBundle\Security\Authorization\AuthorizationHelper($this->get('security.role_hierarchy'))
+ new \Chill\MainBundle\Templating\TranslatableStringHelper($this->get('request_stack'), $this->get('translator.default'))
+ new \Chill\MainBundle\Templating\TranslatableStringTwig()
+ new \Chill\PersonBundle\Search\PersonSearch($this->get('doctrine.orm.default_entity_manager'), $this->get('security.token_storage'), $this->get('chill.main.security.authorization.helper'))
+ new \Chill\PersonBundle\Timeline\TimelineAccompanyingPeriodClosing($this->get('doctrine.orm.default_entity_manager'))
+ new \Chill\PersonBundle\Timeline\TimelineAccompanyingPeriodOpening($this->get('doctrine.orm.default_entity_manager'))
+
+
+ InactiveScopeException
+ InactiveScopeException
+ \Assetic\Cache\ConfigCache
+ \Assetic\Extension\Twig\TwigFormulaLoader
+ \Assetic\Factory\LazyAssetManager
+ \Assetic\Factory\Loader\CachedFormulaLoader
+ \Assetic\Filter\CssRewriteFilter
+ \Chill\MainBundle\Form\Type\CenterType
+ \Chill\PersonBundle\Form\Type\ClosingMotiveType
+ \Doctrine\Common\Cache\ArrayCache
+ \Doctrine\Common\Cache\ArrayCache
+ \Doctrine\Common\Cache\ArrayCache
+ \Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain
+ \SensioLabs\Security\Command\SecurityCheckerCommand
+ \SensioLabs\Security\SecurityChecker
+ \Sensio\Bundle\DistributionBundle\Configurator\Configurator
+ \Sensio\Bundle\DistributionBundle\Configurator\Step\DoctrineStep
+ \Sensio\Bundle\DistributionBundle\Configurator\Step\SecretStep
+ \Symfony\Bridge\Monolog\Handler\DebugHandler
+ \Symfony\Bundle\AsseticBundle\CacheWarmer\AssetManagerCacheWarmer
+ \Symfony\Bundle\AsseticBundle\DefaultValueSupplier
+ \Symfony\Bundle\AsseticBundle\Factory\AssetFactory
+ \Symfony\Bundle\AsseticBundle\Factory\Resource\CoalescingDirectoryResource
+ \Symfony\Bundle\AsseticBundle\Factory\Resource\CoalescingDirectoryResource
+ \Symfony\Bundle\AsseticBundle\Factory\Resource\DirectoryResource
+ \Symfony\Bundle\AsseticBundle\Factory\Resource\DirectoryResource
+ \Symfony\Bundle\AsseticBundle\Factory\Resource\DirectoryResource
+ \Symfony\Bundle\AsseticBundle\Factory\Resource\DirectoryResource
+ \Symfony\Bundle\AsseticBundle\Factory\Resource\DirectoryResource
+ \Symfony\Bundle\AsseticBundle\FilterManager
+ \Symfony\Bundle\AsseticBundle\Twig\AsseticExtension
+ \Symfony\Bundle\FrameworkBundle\DataCollector\AjaxDataCollector
+ \Symfony\Bundle\FrameworkBundle\EventListener\SessionListener
+ \Symfony\Bundle\FrameworkBundle\EventListener\TestSessionListener
+ \Symfony\Bundle\FrameworkBundle\Translation\PhpExtractor
+ \Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader
+ \Symfony\Bundle\FrameworkBundle\Validator\ConstraintValidatorFactory
+ \Symfony\Bundle\TwigBundle\Extension\ActionsExtension
+ \Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController
+ \Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher
+ \Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfTokenManagerAdapter
+ \Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel
+ \Symfony\Component\Security\Core\SecurityContext
+ \Symfony\Component\Security\Core\Util\SecureRandom
+ \Twig_Environment
+ \Twig_Extension_Debug
+ \Twig_Extensions_Extension_Intl
+ \Twig_Profiler_Profile
+
+
+ InactiveScopeException
+ InactiveScopeException
+ \Assetic\Factory\LazyAssetManager
+ \Assetic\Filter\CssRewriteFilter
+ \Chill\MainBundle\Form\Type\CenterType
+ \Chill\PersonBundle\Form\Type\ClosingMotiveType
+ \Doctrine\Common\Cache\ArrayCache
+ \Doctrine\Common\Cache\ArrayCache
+ \Doctrine\Common\Cache\ArrayCache
+ \SensioLabs\Security\Command\SecurityCheckerCommand
+ \SensioLabs\Security\SecurityChecker
+ \Sensio\Bundle\DistributionBundle\Configurator\Configurator
+ \Symfony\Bridge\Monolog\Handler\DebugHandler
+ \Symfony\Bundle\AsseticBundle\Factory\AssetFactory
+ \Symfony\Bundle\AsseticBundle\FilterManager
+ \Symfony\Bundle\FrameworkBundle\EventListener\SessionListener
+ \Symfony\Bundle\FrameworkBundle\EventListener\TestSessionListener
+ \Symfony\Bundle\FrameworkBundle\Translation\PhpExtractor
+ \Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader
+ \Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController
+ \Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfTokenManagerAdapter
+ \Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel
+ \Symfony\Component\Security\Core\SecurityContext
+ \Symfony\Component\Security\Core\Util\SecureRandom
+ \Twig_Environment
+ \Twig_Extensions_Extension_Intl
+ \Twig_Profiler_Profile
+
+
+
+
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ \Symfony\Component\BrowserKit\Client
+ type
+ type
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+ \Chill\PersonBundle\Export\Filter\PersonHavingActivityBetweenDateFilter
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+ Prophecy\Prophet
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+ type
+
+
+
+
+ $activity
+
+
+
+
+ $createdAt
+ $createdBy
+ $updatedAt
+ $updatedBy
+
+
+
+
+ $asideActivityCategory
+ $asideActivityCategory
+ $asideActivityCategory
+
+
+
+
+ public function setUp()
+
+
+
+
+ $calculator::getAlias()
+ $calculator::getAlias()
+ $calculator::getAlias()
+
+
+
+
+ decimal
+
+
+
+
+ AbstractMigration
+
+
+
+
+ $qb
+
+
+
+
+ 'ChillCalendarBundle:Calendar'
+ 'ChillCalendarBundle:Calendar'
+ 'ChillCalendarBundle:Calendar'
+
+
+
+
+ public function setUp()
+
+
+
+
+ 'ChillCustomFieldsBundle:CustomFieldsGroup'
+
+
+
+
+ 'ChillCustomFieldsBundle:CustomField'
+
+
+
+
+ 'ChillCustomFieldsBundle:CustomFieldsDefaultGroup'
+ 'ChillCustomFieldsBundle:CustomFieldsGroup'
+ 'ChillCustomFieldsBundle:CustomFieldsGroup'
+ 'ChillCustomFieldsBundle:CustomFieldsGroup'
+ 'ChillCustomFieldsBundle:CustomFieldsGroup'
+ 'ChillCustomFieldsBundle:CustomFieldsGroup'
+ 'ChillCustomFieldsBundle:CustomFieldsGroup'
+
+
+
+
+ $date
+
+
+
+
+ \Chill\CustomFieldsBundle\CustomField\CustomField
+ \Chill\CustomFieldsBundle\CustomField\CustomField
+ \Chill\CustomFieldsBundle\CustomField\CustomField
+ \Chill\CustomFieldsBundle\CustomField\CustomField
+ \Chill\CustomFieldsBundle\CustomField\FormBuilderInterface
+ \Chill\CustomFieldsBundle\CustomField\FormBuilderInterface
+
+
+
+
+ OptionsResolverInterface
+
+
+
+
+ $customFieldsGroup
+ $id
+
+
+
+
+ $customFieldsArray
+ $customFieldsJSON
+
+
+
+
+ $this->customFieldCompiler
+ CustomFieldCompiler
+
+
+
+
+ AppKernel
+
+
+
+
+ require __DIR__ . '/../../../../../vendor/autoload.php'
+
+
+
+
+ require_once __DIR__ . '/../app/bootstrap.php.cache'
+
+
+
+
+ Container
+ CustomFieldInterface
+ type
+ type
+
+
+
+
+ $customFieldType
+ $customFieldType
+ $customFieldType
+ The
+
+
+
+
+ CustomFieldsGroud
+
+
+
+
+ type
+
+
+ type
+
+
+
+
+ public function setUp()
+ public function tearDown()
+
+
+ type
+ type
+ type
+ type
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ protected function setUp()
+
+
+
+
+ protected function setUp()
+
+
+
+
+ 'ChillDocStoreBundle:AccompanyingCourseDocument'
+
+
+
+
+ 'ChillDocStoreBundle:DocumentCategory'
+ 'ChillDocStoreBundle:DocumentCategory'
+ 'ChillDocStoreBundle:DocumentCategory'
+
+
+
+
+ 'ChillDocStoreBundle:PersonDocument'
+
+
+
+
+ \Chill\PersonBundle\Entity\user
+
+
+
+
+ $this->getPerson()
+ \Chill\MainBundle\Entity\Person
+
+
+
+
+ 'ChillEventBundle:Event'
+ 'ChillEventBundle:Event'
+ 'ChillEventBundle:Event'
+ 'ChillEventBundle:Participation'
+ 'ChillEventBundle:Participation'
+ 'ChillPersonBundle:Person'
+
+
+
+
+ 'ChillEventBundle:EventType'
+ 'ChillEventBundle:EventType'
+ 'ChillEventBundle:EventType'
+ 'ChillEventBundle:EventType'
+ 'ChillEventBundle:EventType'
+
+
+
+
+ 'ChillEventBundle:Event'
+ 'ChillEventBundle:Event'
+ 'ChillEventBundle:Event'
+ 'ChillEventBundle:Participation'
+ 'ChillPersonBundle:Person'
+
+
+ $participation
+ $participation
+ $participation
+ $participation
+ $participations[0]
+ Participation|Participations[]
+
+
+
+
+ 'ChillEventBundle:Role'
+ 'ChillEventBundle:Role'
+ 'ChillEventBundle:Role'
+ 'ChillEventBundle:Role'
+ 'ChillEventBundle:Role'
+
+
+
+
+ 'ChillEventBundle:Status'
+ 'ChillEventBundle:Status'
+ 'ChillEventBundle:Status'
+ 'ChillEventBundle:Status'
+ 'ChillEventBundle:Status'
+
+
+
+
+ 'ChillMainBundle:Center'
+ 'ChillPersonBundle:Person'
+
+
+
+
+ OptionsResolverInterface
+
+
+
+
+ OptionsResolverInterface
+
+
+
+
+ OptionsResolverInterface
+
+
+
+
+ AppKernel
+
+
+
+
+ type
+
+
+ public function setUp()
+
+
+ 'ChillEventBundle:Event'
+ 'ChillEventBundle:Event'
+ 'ChillEventBundle:Event'
+ 'ChillEventBundle:Event'
+ 'ChillMainBundle:Center'
+ 'ChillMainBundle:Center'
+ 'ChillMainBundle:Scope'
+ 'ChillPersonBundle:Person'
+
+
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ \Symfony\Component\BrowserKit\Client
+ type
+
+
+
+
+ public function setUp()
+ public function tearDown()
+
+
+ 'ChillMainBundle:Scope'
+
+
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ \Symfony\Component\BrowserKit\Client
+
+
+ $dateTo
+ $dateTo
+
+
+
+
+ date_immutable|null
+ date_immutable|null
+
+
+
+
+ AbstractMigration
+
+
+
+
+ $this->buildQueryEntities($action, $request)
+ $this->buildQueryEntities($action, $request)
+ QueryBuilder
+ \Symfony\Component\Security\Core\Exception\AccessDeniedHttpException
+
+
+
+
+ ?Scope
+
+
+ $query
+ \Symfony\Component\Security\Core\Exception\AccessDeniedHttpException
+ type
+ type
+ type
+
+
+
+
+
+
+
+ 'ChillMainBundle:Language'
+
+
+
+
+ 'ChillMainBundle:Country'
+
+
+
+
+ 'ChillMainBundle:User'
+
+
+
+
+ $qb
+
+
+
+
+ 'ChillMainBundle:Center'
+ 'ChillMainBundle:Center'
+ 'ChillMainBundle:Center'
+ 'ChillMainBundle:Center'
+
+
+
+
+ Response
+ type
+
+
+
+
+ 'ChillMainBundle:PermissionsGroup'
+ 'ChillMainBundle:PermissionsGroup'
+ 'ChillMainBundle:PermissionsGroup'
+ 'ChillMainBundle:PermissionsGroup'
+ 'ChillMainBundle:PermissionsGroup'
+ 'ChillMainBundle:PermissionsGroup'
+ 'ChillMainBundle:RoleScope'
+ 'ChillMainBundle:RoleScope'
+
+
+ Respon
+ redirection
+ type
+
+
+
+
+ $qb
+
+
+
+
+ 'ChillMainBundle:Scope'
+ 'ChillMainBundle:Scope'
+ 'ChillMainBundle:Scope'
+ 'ChillMainBundle:Scope'
+
+
+
+
+ $search
+ $search
+ $search
+ $searchProvider
+ $searchProvider
+
+
+
+
+ 'ChillMainBundle:GroupCenter'
+ 'ChillMainBundle:GroupCenter'
+ 'ChillMainBundle:User'
+ 'ChillMainBundle:User'
+
+
+
+
+
+
+
+ $class::getMenuIds()
+
+
+
+
+ unknown
+
+
+
+
+ WidgetFactoryInterface[]
+ WidgetFactoryInterface[]
+ type
+ type
+ type
+ type
+
+
+
+
+ type
+ type
+ type
+
+
+
+
+ \Chill\MainBundle\DependencyInjection\Widget\WidgetFactoryInterface
+
+
+
+
+ $fieldDeclaration
+
+
+
+
+ the
+
+
+
+
+ interger
+
+
+
+
+ PermissionGroup
+
+
+
+
+ $createdAt
+ $createdBy
+ $updatedAt
+ $updatedBy
+
+
+
+
+ Agent
+ Report
+
+
+
+
+ array
+ protected array $label = [];
+
+
+
+
+ $this->authorizationChecker
+ AuthorizationChecker
+ type
+ type
+ type
+ type
+
+
+
+
+ type
+
+
+
+
+ type
+
+
+
+
+ $this->aggregatorsData
+ $this->aggregatorsData
+
+
+ $this->formatterData
+ type
+ type
+ type
+
+
+
+
+ type
+
+
+
+
+
+
+
+ OptionsResolverInterface
+
+
+
+
+ $address
+ $address
+
+
+
+
+ $data
+ $data
+
+
+
+
+ OptionsResolverInterface
+
+
+
+
+ OptionsResolverInterface
+
+
+
+
+ OptionsResolverInterface
+
+
+
+
+ $center
+ $id
+
+
+
+
+ $array
+ $array
+
+
+
+
+ $id
+ $object
+
+
+
+
+ $id
+ $scope
+
+
+
+
+ OptionsResolverInterface
+
+
+
+
+ \Symfony\Component\Mailer\Exception\TransportExceptionInterface
+
+
+
+
+ $current
+
+
+
+
+ $itemPerPage
+
+
+ type
+
+
+
+
+ $query->buildParameters()
+
+
+
+
+ $query->buildParameters()
+
+
+
+
+ $onlyEnabled
+
+
+
+
+ AppKernel
+
+
+
+
+ require __DIR__ . '/../../../../../vendor/autoload.php'
+
+
+
+
+ type
+
+
+
+
+ $args
+ $args
+ $args
+ $params
+ $this->buildSelectParams($countOnly)
+ $this->fromClauseParams
+ $this->fromClauseParams
+ $this->jsonbMetadataParams
+ $this->pertinenceParams
+ $this->selectKeyParams
+ $this->selectParams
+ $this->whereClausesParams
+ $this->whereClausesParams
+
+
+
+
+ number
+ number
+
+
+ HasAdvancedSearchForm
+ HasAdvancedSearchForm[]
+ number
+ number
+ private $hasAdvancedFormSearchServices = [];
+ type
+
+
+
+
+ $subject
+
+
+
+
+ type
+ type
+
+
+
+
+ resolveScope
+
+
+ Center|Center[]|null
+
+
+
+
+ $address
+
+
+
+
+ $center
+
+
+
+
+ $collection
+
+
+
+
+ $date
+
+
+
+
+ $user
+
+
+
+
+ The
+
+
+
+
+ $addr
+ $addr
+
+
+
+
+ type
+ type
+
+
+
+
+ The
+
+
+
+
+ $widget
+ $widget
+
+
+
+
+ type
+
+
+
+
+ getClient
+
+
+ Query
+
+
+ $client
+ $client
+ $client
+
+
+
+
+ public function setUp()
+
+
+ type
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ protected function tearDown()
+ public function setUp()
+
+
+
+
+ public function setUp()
+ public function tearDown()
+
+
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ $this->prophet
+ Prophecy\Prophet
+
+
+
+
+ CenterType
+
+
+ $type
+ $type
+ $type
+ CenterType
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ $mock->expects($this->any())
+ $mock->expects($this->any())
+ $mock->expects($this->any())
+ $mock->expects($this->any())
+ $mock->expects($this->any())
+ $mock->expects($this->any())
+ $mock->expects($this->any())
+
+
+ unknown
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ protected function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ protected function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ protected function setUp()
+
+
+
+
+ \Symfony\Component\BrowserKit\Client
+
+
+
+
+ unknown
+
+
+
+
+ type
+ type
+
+
+
+
+ type
+
+
+
+
+ type
+
+
+
+
+ \Chill\MainBundle\CRUD\Controller\string|string
+
+
+ Symfony\Component\HttpKernel\Exception\NotFoundHttpException
+ \Chill\PersonBundle\CRUD\Controller\QueryBuilder
+ \Chill\PersonBundle\CRUD\Controller\QueryBuilder
+
+
+
+
+ $sqls
+
+
+
+
+ $cfProvider->getCustomFieldByType($customField->getType())
+ type
+ type
+
+
+
+
+ $participation
+
+
+
+
+ 'ChillPersonBundle:Person'
+
+
+
+
+ \Chill\MainBundle\CRUD\Controller\string|string
+
+
+
+
+ $person
+
+
+
+
+ $p
+
+
+
+
+ $qb
+
+
+
+
+ 'ChillPersonBundle:Person'
+ 'ChillPersonBundle:Person'
+ 'ChillPersonBundle:Person'
+ 'ChillPersonBundle:Person'
+ 'ChillPersonBundle:Person'
+
+
+ Chill\PersonBundle\Entity\Person
+
+
+
+
+ 'ChillCustomFieldsBundle:CustomFieldsDefaultGroup'
+
+
+
+
+ $sqls
+ InvalidArgumentException
+ InvalidArgumentException
+
+
+
+
+ \Chill\PersonBundle\DependencyInjection\containerBuilder
+
+
+
+
+ $a
+
+
+
+
+ $createdBy
+
+
+ Collection|SocialAction[]
+ Collection|SocialIssues[]
+
+
+
+
+ $createdAt
+ $createdBy
+
+
+
+
+ $createdAt
+ $createdBy
+ $updatedAt
+ $updatedBy
+
+
+
+
+ DateTimeImmutable|null
+
+
+
+
+ $createdAt
+ $updatedAt
+ $updatedBy
+
+
+
+
+ Person[]
+
+
+
+
+ $createdBy
+
+
+ Chill\MainBundle\Entity\Country
+ Chill\MainBundle\Entity\Country
+ Chill\MainBundle\Entity\Country
+ Report
+ type
+
+
+
+
+ $createdAt
+ $updatedAt
+ $updatedBy
+
+
+
+
+ $qb
+
+
+
+
+ 'ChillMainBundle:Country'
+
+
+
+ $choiceSlug
+
+
+
+
+ EntityRepository
+
+
+
+
+ FormInterface[]
+
+
+
+
+ $id
+ $issue
+
+
+ 'ChillPersonBundle:Person'
+
+
+
+
+ OptionsResolverInterface
+
+
+
+
+ $qb
+ $qb
+ $qb
+ QueryBuilder
+ SocialAction
+ SocialAction
+
+
+ $action
+ $orderBy
+
+
+
+
+ AppKernel
+
+
+
+
+ require __DIR__ . '/../../../../../vendor/autoload.php'
+
+
+
+
+ require_once __DIR__ . '/../app/bootstrap.php.cache'
+
+
+
+
+ $period
+
+
+
+
+ $origin
+
+
+
+
+ $participation
+
+
+
+
+ ยท\is_array('concerned')
+
+
+
+
+ $person
+
+
+
+
+ $person
+
+
+
+
+ $relation
+
+
+
+
+ $socialAction
+
+
+
+
+ $socialIssue
+
+
+
+
+ $person
+ $person
+
+
+
+
+ $socialAction
+ $socialAction
+
+
+
+
+ $socialIssue
+ $socialIssue
+
+
+
+
+ public function setUp()
+
+
+ AccompanyingPeriodRepository
+ stdClass
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+
+ public function setUp()
+ public function tearDown()
+
+
+ 'ChillMainBundle:Center'
+ 'ChillPersonBundle:AccompanyingPeriod\ClosingMotive'
+ LogicalException
+
+
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ Chill\PersonBundle\Entity\AccompanyingPeriod
+ Chill\PersonBundle\Entity\AccompanyingPeriod
+ \Symfony\Component\BrowserKit\Client
+
+
+
+
+ protected function tearDown()
+
+
+ User
+
+
+
+
+ protected function setUp()
+
+
+
+
+ $this
+
+
+ public function setUp()
+
+
+ 'ChillPersonBundle:Person'
+
+
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ $this->client
+ \Symfony\Component\BrowserKit\Client
+
+
+
+
+ public function setUp()
+ public function tearDown()
+
+
+ 'ChillMainBundle:Country'
+ 'ChillPersonBundle:Person'
+
+
+ $person->getCountryOfBirth()
+
+
+
+
+ public function setUp()
+ public function tearDown()
+
+
+ 'ChillMainBundle:Country'
+ 'ChillPersonBundle:Person'
+
+
+
+
+ public function setUp()
+ public function tearDown()
+
+
+ 'ChillPersonBundle:Person'
+
+
+
+
+ public function setUp()
+ public function tearDown()
+
+
+ 'ChillPersonBundle:Person'
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ $participationL
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ public function setUp()
+
+
+
+
+ $client
+ $client
+ $client
+ $client
+ \Symfony\Component\BrowserKit\Client
+
+
+
+
+ public function setUp()
+
+
+
+
+ protected function setUp()
+
+
+
+
+ protected function setUp()
+
+
+
+
+ protected function setUp()
+
+
+
+
+ protected function setUp()
+
+
+
+
+ $render->method('renderString')
+
+
+
+
+ $render->method('renderString')
+
+
+
+
+
+
+
+ protected function setUp()
+
+
+
+
+ protected function setUp()
+
+
+
+
+ 'ChillPersonBundle:AccompanyingPeriod'
+
+
+
+
+ $period
+
+
+
+
+ $period
+
+
+
+
+ $participations
+
+
+
+
+ $resources
+
+
+
+
+ $person
+
+
+
+
+ $household
+
+
+
+
+ $person
+
+
+
+
+ 'ChillCustomFieldsBundle:CustomField'
+
+
+
+
+ 'ChillCustomFieldsBundle:CustomFieldsGroup'
+ 'ChillCustomFieldsBundle:CustomFieldsGroup'
+ 'ChillCustomFieldsBundle:CustomFieldsGroup'
+ 'ChillCustomFieldsBundle:CustomFieldsGroup'
+ 'ChillCustomFieldsBundle:CustomFieldsGroup'
+ 'ChillPersonBundle:Person'
+ 'ChillPersonBundle:Person'
+ 'ChillPersonBundle:Person'
+ 'ChillPersonBundle:Person'
+ 'ChillPersonBundle:Person'
+ 'ChillPersonBundle:Person'
+ 'ChillReportBundle:Report'
+ 'ChillReportBundle:Report'
+ 'ChillReportBundle:Report'
+ 'ChillReportBundle:Report'
+
+
+ A
+ Response
+ Response
+ Response
+ Response
+ Response
+ Response
+ Response
+ Response
+
+
+
+
+ the
+
+
+
+
+ 'ChillMainBundle:Country'
+
+
+
+ $choiceSlug
+
+
+
+
+ AppKernel
+
+
+
+
+ require __DIR__ . '/../../../../../vendor/autoload.php'
+
+
+
+
+ public function setUp()
+
+
+ $client
+ $client
+ Client
+
+
+
+
+ type
+
+
+ public function setUp()
+
+
+ \Symfony\Component\BrowserKit\Client
+
+
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $this->getAuthenticatedClient('center a_administrative')
+ Client
+ \Chill\ReportBundle\Tests\Controller\Person
+ \SClientymfony\Component\BrowserKit\
+ type
+ type
+ type
+
+
+
+
+ Exception
+
+
+
+
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $client
+ $clientAdministrative
+ $clientSocial
+ \Symfony\Component\BrowserKit\Client
+
+
+
+
+ public function setUp()
+
+
+ type
+ type
+ type
+
+
+
+
+ public function setUp()
+ public function tearDown()
+
+
+ 'ChillCustomFieldsBundle:CustomFieldsGroup'
+
+
+
+
+ 'ChillReportBundle:Report'
+
+
+
+
+ $defaultScopeId
+
+
+
+
+ \Chill\TaskBundle\Controller\AbstractTask
+
+
+ $type
+
+
+
+
+ $definition->getClass()::getAssociatedWorkflowName()
+ $definition->getClass()::getAssociatedWorkflowName()
+ $definition->getClass()::getAssociatedWorkflowName()
+
+
+
+
+ json
+ private $currentStates = [];
+
+
+
+
+ dateinterval
+ dateinterval
+ dateinterval
+ dateinterval
+ dateinterval
+ dateinterval
+
+
+
+
+ datetime_immutable
+ datetime_immutable
+ datetime_immutable
+
+
+
+
+ type
+ type
+
+
+
+
+ \Chill\PersonBundle\Entity\Person|Chill\TaskBundle\Entity\AbstractTask|null
+
+
+
+
+ $this->cachePool
+ $this->cachePool
+ $this->cachePool
+ $this->cachePool
+ CacheItempPoolInterface
+
+
+
+
+ protected function setUp()
+
+
+
+
+ $taggedService->getClass()::getKey()
+
+
+
+
+ $createdAt
+ $updatedAt
+ $updatedBy
+
+
+
+
+ type
+
+
+ type
+
+
+
+
+ $thirdParty
+
+
+
+
+ protected function setUp()
+
+
+
+
+ $object
+ $object
+ $object
+ $object->url
+ $object->url
+ $object->url
+
+
+
+
+ ;
+ ;
+ Match
+
+
+
diff --git a/psalm.xml b/psalm.xml
new file mode 100644
index 000000000..be17d1d86
--- /dev/null
+++ b/psalm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+