.baseline-psalm.xml
<?xml version="1.0" encoding="UTF-8"?>
<files psalm-version="4.24.0@06dd975cb55d36af80f242561738f16c5f58264f">
<file src="src/DependencyInjection/Configuration.php">
<InvalidOperand occurrences="2">
<code>$numOfUnits</code>
<code>$numOfUnits</code>
</InvalidOperand>
<MissingClosureParamType occurrences="6">
<code>$price</code>
<code>$price</code>
<code>$price</code>
<code>$price</code>
<code>$tree</code>
<code>$tree</code>
</MissingClosureParamType>
<MissingConstructor occurrences="3">
<code>$pricesKey</code>
<code>$pricesType</code>
<code>$unitaryPriceKey</code>
</MissingConstructor>
<MissingDocblockType occurrences="1">
<code>private array $foundDrawers = [];</code>
</MissingDocblockType>
<MissingParamType occurrences="1">
<code>$subscriptionType</code>
</MissingParamType>
<PossiblyUndefinedMethod occurrences="1">
<code>children</code>
</PossiblyUndefinedMethod>
</file>
<file src="src/Form/DataTransformer/AbstractFeatureTransformer.php">
<PossiblyNullReference occurrences="1">
<code>get</code>
</PossiblyNullReference>
</file>
<file src="src/Form/DataTransformer/BooleanFeatureTransformer.php">
<MoreSpecificImplementedParamType occurrences="2">
<code>$enabled</code>
<code>$feature</code>
</MoreSpecificImplementedParamType>
<ParamNameMismatch occurrences="2">
<code>$enabled</code>
<code>$feature</code>
</ParamNameMismatch>
<RedundantCondition occurrences="1">
<code>false</code>
</RedundantCondition>
</file>
<file src="src/Form/DataTransformer/CountableFeatureTransformer.php">
<MoreSpecificImplementedParamType occurrences="2">
<code>$feature</code>
<code>$pack</code>
</MoreSpecificImplementedParamType>
<ParamNameMismatch occurrences="2">
<code>$feature</code>
<code>$pack</code>
</ParamNameMismatch>
</file>
<file src="src/Form/DataTransformer/FeaturesCollectionTransformer.php">
<MoreSpecificImplementedParamType occurrences="2">
<code>$features</code>
<code>$features</code>
</MoreSpecificImplementedParamType>
<ParamNameMismatch occurrences="2">
<code>$features</code>
<code>$features</code>
</ParamNameMismatch>
</file>
<file src="src/Form/DataTransformer/RechargeableFeatureTransformer.php">
<MoreSpecificImplementedParamType occurrences="2">
<code>$feature</code>
<code>$pack</code>
</MoreSpecificImplementedParamType>
<ParamNameMismatch occurrences="2">
<code>$feature</code>
<code>$pack</code>
</ParamNameMismatch>
</file>
<file src="src/Form/Type/FeaturesType.php">
<ArgumentTypeCoercion occurrences="7">
<code>$subscribedFeature</code>
<code>$subscribedFeature</code>
<code>$subscribedFeature</code>
<code>$subscribedFeature->getConfiguredFeature()</code>
<code>$subscribedFeature->getConfiguredFeature()</code>
<code>$subscribedFeature->getConfiguredFeature()</code>
<code>$subscribedFeature->getConfiguredFeature()</code>
</ArgumentTypeCoercion>
<InvalidOperand occurrences="1">
<code>$result += (float) $sum</code>
</InvalidOperand>
<MissingClosureParamType occurrences="2">
<code>$val</code>
<code>$val</code>
</MissingClosureParamType>
<PossiblyNullReference occurrences="1">
<code>isStillActive</code>
</PossiblyNullReference>
<TypeDoesNotContainType occurrences="1">
<code>$subscribedPack instanceof ConfiguredCountableFeaturePack</code>
</TypeDoesNotContainType>
<UndefinedInterfaceMethod occurrences="4">
<code>getInstantPrice</code>
<code>getInstantPrice</code>
<code>getPrice</code>
<code>getPrice</code>
</UndefinedInterfaceMethod>
</file>
<file src="src/InvoiceDrawer/AbstractInvoiceDrawer.php">
<PropertyNotSetInConstructor occurrences="1">
<code>$currencyFormatter</code>
</PropertyNotSetInConstructor>
<TypeDoesNotContainNull occurrences="1">
<code>null === $this->currencyFormatter</code>
</TypeDoesNotContainNull>
<UninitializedProperty occurrences="1">
<code>$this->currencyFormatter</code>
</UninitializedProperty>
</file>
<file src="src/InvoiceDrawer/PlainTextDrawer.php">
<InvalidReturnStatement occurrences="1">
<code>$return</code>
</InvalidReturnStatement>
<InvalidReturnType occurrences="1">
<code>string</code>
</InvalidReturnType>
<PossiblyFalseOperand occurrences="2">
<code>\iconv_strlen($equalsSeparatorShort)</code>
<code>\iconv_strlen($totalGrossAmount)</code>
</PossiblyFalseOperand>
<PossiblyNullReference occurrences="2">
<code>getHeader</code>
<code>hasHeader</code>
</PossiblyNullReference>
<PropertyNotSetInConstructor occurrences="1">
<code>$tableWidth</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/Manager/FeaturesManager.php">
<PossiblyNullReference occurrences="6">
<code>getInstantPrice</code>
<code>modify</code>
<code>modify</code>
<code>modify</code>
<code>modify</code>
<code>modify</code>
</PossiblyNullReference>
<PossiblyUndefinedMethod occurrences="2">
<code>getInstantPrice</code>
<code>getPack</code>
</PossiblyUndefinedMethod>
<PropertyNotSetInConstructor occurrences="2">
<code>$oldSubscription</code>
<code>$subscription</code>
</PropertyNotSetInConstructor>
<RedundantConditionGivenDocblockType occurrences="3">
<code>$feature instanceof SubscribedCountableFeature</code>
<code>\is_array($feature)</code>
<code>null !== $checkingFeature</code>
</RedundantConditionGivenDocblockType>
<TypeDoesNotContainNull occurrences="1">
<code>null === $this->subscription</code>
</TypeDoesNotContainNull>
<UndefinedInterfaceMethod occurrences="1">
<code>getInstantPrice</code>
</UndefinedInterfaceMethod>
</file>
<file src="src/Manager/InvoicesManager.php">
<InvalidPropertyAssignmentValue occurrences="1">
<code>$drawer</code>
</InvalidPropertyAssignmentValue>
<InvalidReturnStatement occurrences="1">
<code>$drawer</code>
</InvalidReturnStatement>
<InvalidReturnType occurrences="1">
<code>InvoiceDrawerInterface</code>
</InvalidReturnType>
<PropertyNotSetInConstructor occurrences="2">
<code>$drawers</code>
<code>$subscription</code>
</PropertyNotSetInConstructor>
<UndefinedInterfaceMethod occurrences="2">
<code>getTaxName</code>
<code>getTaxRate</code>
</UndefinedInterfaceMethod>
</file>
<file src="src/Model/Feature/AbstractFeature.php">
<NoInterfaceProperties occurrences="2">
<code>$this->name</code>
<code>$this->type</code>
</NoInterfaceProperties>
</file>
<file src="src/Model/Feature/AbstractFeaturesCollection.php">
<MissingClosureParamType occurrences="1">
<code>$element</code>
</MissingClosureParamType>
</file>
<file src="src/Model/Feature/Configured/ConfiguredBooleanFeature.php">
<PropertyNotSetInConstructor occurrences="8">
<code>ConfiguredBooleanFeature</code>
<code>ConfiguredBooleanFeature</code>
<code>ConfiguredBooleanFeature</code>
<code>ConfiguredBooleanFeature</code>
<code>ConfiguredBooleanFeature</code>
<code>ConfiguredBooleanFeature</code>
<code>ConfiguredBooleanFeature</code>
<code>ConfiguredBooleanFeature</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/Model/Feature/Configured/ConfiguredCountableFeature.php">
<NoInterfaceProperties occurrences="1">
<code>$this->refreshPeriod</code>
</NoInterfaceProperties>
<ParamNameMismatch occurrences="1">
<code>$class</code>
</ParamNameMismatch>
<PropertyNotSetInConstructor occurrences="5">
<code>$packs</code>
<code>$refreshPeriod</code>
<code>$taxName</code>
<code>$taxRate</code>
<code>ConfiguredCountableFeature</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/Model/Feature/Configured/ConfiguredCountableFeaturePack.php">
<PropertyNotSetInConstructor occurrences="7">
<code>ConfiguredCountableFeaturePack</code>
<code>ConfiguredCountableFeaturePack</code>
<code>ConfiguredCountableFeaturePack</code>
<code>ConfiguredCountableFeaturePack</code>
<code>ConfiguredCountableFeaturePack</code>
<code>ConfiguredCountableFeaturePack</code>
<code>ConfiguredCountableFeaturePack</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/Model/Feature/Configured/ConfiguredFeaturesCollection.php">
<ConstructorSignatureMismatch occurrences="1">
<code>$elements</code>
</ConstructorSignatureMismatch>
<ImplementedParamTypeMismatch occurrences="1">
<code>$elements</code>
</ImplementedParamTypeMismatch>
<MethodSignatureMismatch occurrences="1">
<code>public function __construct(array $elements = [])</code>
</MethodSignatureMismatch>
<MismatchingDocblockReturnType occurrences="3">
<code>ConfiguredBooleanFeature[]|ConfiguredFeaturesCollection</code>
<code>ConfiguredCountableFeature[]|ConfiguredFeaturesCollection</code>
<code>ConfiguredFeaturesCollection|ConfiguredRechargeableFeature[]</code>
</MismatchingDocblockReturnType>
</file>
<file src="src/Model/Feature/Configured/ConfiguredRechargeableFeature.php">
<ParamNameMismatch occurrences="1">
<code>$class</code>
</ParamNameMismatch>
<PropertyNotSetInConstructor occurrences="5">
<code>$freeRecharge</code>
<code>ConfiguredRechargeableFeature</code>
<code>ConfiguredRechargeableFeature</code>
<code>ConfiguredRechargeableFeature</code>
<code>ConfiguredRechargeableFeature</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/Model/Feature/Configured/ConfiguredRechargeableFeaturePack.php">
<PropertyNotSetInConstructor occurrences="2">
<code>ConfiguredRechargeableFeaturePack</code>
<code>ConfiguredRechargeableFeaturePack</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/Model/Feature/Property/CanBeFreeProperty.php">
<RedundantConditionGivenDocblockType occurrences="2">
<code>null !== $this->grossPrices</code>
<code>null !== $this->netPrices</code>
</RedundantConditionGivenDocblockType>
</file>
<file src="src/Model/Feature/Property/CanHaveFreePackProperty.php">
<RedundantConditionGivenDocblockType occurrences="1">
<code>null !== $this->freePack</code>
</RedundantConditionGivenDocblockType>
</file>
<file src="src/Model/Feature/Property/HasConfiguredPacksProperty.php">
<LessSpecificImplementedReturnType occurrences="1">
<code>array</code>
</LessSpecificImplementedReturnType>
<UndefinedVariable occurrences="1">
<code>$packClass</code>
</UndefinedVariable>
</file>
<file src="src/Model/Feature/Property/HasRecurringPricesProperty.php">
<InvalidOperand occurrences="5">
<code>$price->getBaseAmount()</code>
<code>$price->getBaseAmount()</code>
<code>$price->getBaseAmount()</code>
<code>1 + $rate</code>
<code>1 + $rate</code>
</InvalidOperand>
<MissingReturnType occurrences="1">
<code>setPrices</code>
</MissingReturnType>
<PossiblyNullArrayAssignment occurrences="1">
<code>$instantPrices[$currency]</code>
</PossiblyNullArrayAssignment>
</file>
<file src="src/Model/Feature/Property/HasUnatantumPricesProperty.php">
<InvalidOperand occurrences="4">
<code>$price->getBaseAmount()</code>
<code>$price->getBaseAmount()</code>
<code>1 + $rate</code>
<code>1 + $rate</code>
</InvalidOperand>
<MoreSpecificImplementedParamType occurrences="2">
<code>$currency</code>
<code>$currency</code>
</MoreSpecificImplementedParamType>
</file>
<file src="src/Model/Feature/Property/IsRecurringFeatureProperty.php">
<PossiblyInvalidPropertyAssignmentValue occurrences="1">
<code>$activeUntil</code>
</PossiblyInvalidPropertyAssignmentValue>
</file>
<file src="src/Model/Feature/Subscribed/AbstractSubscribedFeature.php">
<MissingReturnType occurrences="1">
<code>setConfiguredFeature</code>
</MissingReturnType>
<TypeDoesNotContainNull occurrences="1">
<code>null === $this->configuredFeature</code>
</TypeDoesNotContainNull>
</file>
<file src="src/Model/Feature/Subscribed/SubscribedBooleanFeature.php">
<PropertyNotSetInConstructor occurrences="1">
<code>SubscribedBooleanFeature</code>
</PropertyNotSetInConstructor>
</file>
<file src="src/Model/Feature/Subscribed/SubscribedCountableFeature.php">
<PossiblyInvalidMethodCall occurrences="1">
<code>toArray</code>
</PossiblyInvalidMethodCall>
<PropertyNotSetInConstructor occurrences="2">
<code>$lastRefreshOn</code>
<code>SubscribedCountableFeature</code>
</PropertyNotSetInConstructor>
<TypeDoesNotContainNull occurrences="3">
<code>null === $this->getLastRefreshOn()</code>
<code>null === $this->lastRefreshOn</code>
<code>null === $this->previousRemainedQuantity</code>
</TypeDoesNotContainNull>
<TypeDoesNotContainType occurrences="1">
<code>$subscribedPack instanceof ConfiguredCountableFeaturePack</code>
</TypeDoesNotContainType>
<UninitializedProperty occurrences="1">
<code>$this->lastRefreshOn</code>
</UninitializedProperty>
</file>
<file src="src/Model/Feature/Subscribed/SubscribedFeatureInterface.php">
<MissingReturnType occurrences="1">
<code>setConfiguredFeature</code>
</MissingReturnType>
</file>
<file src="src/Model/Feature/Subscribed/SubscribedFeaturesCollection.php">
<ConstructorSignatureMismatch occurrences="1">
<code>$elements</code>
</ConstructorSignatureMismatch>
<ImplementedParamTypeMismatch occurrences="1">
<code>$elements</code>
</ImplementedParamTypeMismatch>
<MethodSignatureMismatch occurrences="1">
<code>public function __construct(array $elements = [])</code>
</MethodSignatureMismatch>
<MismatchingDocblockReturnType occurrences="3">
<code>SubscribedBooleanFeature[]|SubscribedFeaturesCollection</code>
<code>SubscribedCountableFeature[]|SubscribedFeaturesCollection</code>
<code>SubscribedFeaturesCollection|SubscribedRechargeableFeature[]</code>
</MismatchingDocblockReturnType>
</file>
<file src="src/Model/Feature/Subscribed/SubscribedRechargeableFeature.php">
<LessSpecificReturnStatement occurrences="1">
<code>$this->lastRechargeOn</code>
</LessSpecificReturnStatement>
<MoreSpecificReturnType occurrences="1">
<code>\DateTime|\DateTimeImmutable</code>
</MoreSpecificReturnType>
<PropertyNotSetInConstructor occurrences="1">
<code>$rechargingPack</code>
</PropertyNotSetInConstructor>
<RedundantCondition occurrences="1">
<code>null !== $this->rechargingPack</code>
</RedundantCondition>
</file>
<file src="src/Model/Invoice.php">
<InvalidNullableReturnType occurrences="1">
<code>InvoiceLine</code>
</InvalidNullableReturnType>
<InvalidReturnStatement occurrences="2">
<code>$return</code>
<code>$this->sections[self::SECTION_DEFAULT]->removeHeader()</code>
</InvalidReturnStatement>
<InvalidReturnType occurrences="2">
<code>InvoiceSection</code>
<code>removeSection</code>
</InvalidReturnType>
<LessSpecificReturnStatement occurrences="1">
<code>$this->issuedOn</code>
</LessSpecificReturnStatement>
<MissingParamType occurrences="1">
<code>$id</code>
</MissingParamType>
<MissingReturnType occurrences="3">
<code>jsonUnserialize</code>
<code>recalculateTotal</code>
<code>setHeader</code>
</MissingReturnType>
<MoreSpecificReturnType occurrences="1">
<code>\DateTime|\DateTimeImmutable</code>
</MoreSpecificReturnType>
<NullableReturnStatement occurrences="1">
<code>$this->sections[self::SECTION_DEFAULT]->getLine($id)</code>
</NullableReturnStatement>
<PropertyNotSetInConstructor occurrences="3">
<code>$grossTotal</code>
<code>$issuedOn</code>
<code>$netTotal</code>
</PropertyNotSetInConstructor>
<RedundantConditionGivenDocblockType occurrences="1">
<code>\is_int($id)</code>
</RedundantConditionGivenDocblockType>
<TypeDoesNotContainNull occurrences="3">
<code>null === $this->grossTotal</code>
<code>null === $this->issuedOn</code>
<code>null === $this->netTotal</code>
</TypeDoesNotContainNull>
<UndefinedMethod occurrences="2">
<code>$section</code>
<code>$section</code>
</UndefinedMethod>
<UninitializedProperty occurrences="3">
<code>$this->grossTotal</code>
<code>$this->issuedOn</code>
<code>$this->netTotal</code>
</UninitializedProperty>
</file>
<file src="src/Model/InvoiceInterface.php">
<InvalidDocblock occurrences="1">
<code>string!int</code>
</InvalidDocblock>
<MissingParamType occurrences="1">
<code>$id</code>
</MissingParamType>
<MissingReturnType occurrences="2">
<code>jsonUnserialize</code>
<code>setHeader</code>
</MissingReturnType>
</file>
<file src="src/Model/InvoiceLine.php">
<MissingConstructor occurrences="6">
<code>$description</code>
<code>$grossAmount</code>
<code>$netAmount</code>
<code>$quantity</code>
<code>$taxName</code>
<code>$taxRate</code>
</MissingConstructor>
<PossiblyNullPropertyAssignmentValue occurrences="1">
<code>$quantity</code>
</PossiblyNullPropertyAssignmentValue>
</file>
<file src="src/Model/InvoiceSection.php">
<PossiblyNullPropertyAssignmentValue occurrences="1">
<code>null</code>
</PossiblyNullPropertyAssignmentValue>
<PropertyNotSetInConstructor occurrences="1">
<code>$header</code>
</PropertyNotSetInConstructor>
<RedundantCondition occurrences="2">
<code>null !== $this->getHeader()</code>
<code>null !== $this->header</code>
</RedundantCondition>
<RedundantConditionGivenDocblockType occurrences="1">
<code>\is_int($id)</code>
</RedundantConditionGivenDocblockType>
</file>
<file src="src/Model/Subscription.php">
<InvalidNullableReturnType occurrences="1">
<code>SubscribedFeaturesCollection</code>
</InvalidNullableReturnType>
<LessSpecificReturnStatement occurrences="3">
<code>$this->nextRefreshOn</code>
<code>$this->nextRenewOn</code>
<code>$this->subscribedOn</code>
</LessSpecificReturnStatement>
<MissingReturnType occurrences="3">
<code>checkIntervalExists</code>
<code>forceFeaturesUpdate</code>
<code>hydrateFeatures</code>
</MissingReturnType>
<MoreSpecificReturnType occurrences="3">
<code>\DateTimeInterface</code>
<code>\DateTime|\DateTimeImmutable</code>
<code>\DateTime|\DateTimeImmutable|null</code>
</MoreSpecificReturnType>
<NullableReturnStatement occurrences="1">
<code>$this->features</code>
</NullableReturnStatement>
<ParamNameMismatch occurrences="2">
<code>$nextRenewOn</code>
<code>$renewInterval</code>
</ParamNameMismatch>
<PossiblyInvalidClone occurrences="2">
<code>clone $this->features</code>
<code>clone $this->features</code>
</PossiblyInvalidClone>
</file>
<file src="src/Model/SubscriptionInterface.php">
<MissingReturnType occurrences="2">
<code>checkIntervalExists</code>
<code>forceFeaturesUpdate</code>
</MissingReturnType>
</file>
</files>