diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon deleted file mode 100644 index 9db45fa..0000000 --- a/phpstan-baseline.neon +++ /dev/null @@ -1,67 +0,0 @@ -parameters: - ignoreErrors: - - - message: '#^Trait Altair\\Cache\\Traits\\TagsAwareTrait is used zero times and is not analysed\.$#' - identifier: trait.unused - count: 1 - path: src/Altair/Cache/Traits/TagsAwareTrait.php - - - - message: '#^Class Altair\\Cookie\\Collection\\CookieCollection extends generic class Altair\\Structure\\Map but does not specify its types\: TKey, TValue$#' - identifier: missingType.generics - count: 1 - path: src/Altair/Cookie/Collection/CookieCollection.php - - - - message: '#^Class Altair\\Cookie\\Collection\\SetCookieCollection extends generic class Altair\\Structure\\Map but does not specify its types\: TKey, TValue$#' - identifier: missingType.generics - count: 1 - path: src/Altair/Cookie/Collection/SetCookieCollection.php - - - - message: '#^Trait Altair\\Courier\\Traits\\LogMessageTrait is used zero times and is not analysed\.$#' - identifier: trait.unused - count: 1 - path: src/Altair/Courier/Traits/LogMessageTrait.php - - - - message: '#^Trait Altair\\Data\\Traits\\AttributesAwareTrait is used zero times and is not analysed\.$#' - identifier: trait.unused - count: 1 - path: src/Altair/Data/Traits/AttributesAwareTrait.php - - - - message: '#^Trait Altair\\Data\\Traits\\DateAttributeMutatorAwareTrait is used zero times and is not analysed\.$#' - identifier: trait.unused - count: 1 - path: src/Altair/Data/Traits/DateAttributeMutatorAwareTrait.php - - - - message: '#^Trait Altair\\Data\\Traits\\ImmutableAttributesAwareTrait is used zero times and is not analysed\.$#' - identifier: trait.unused - count: 1 - path: src/Altair/Data/Traits/ImmutableAttributesAwareTrait.php - - - - message: '#^Trait Altair\\Data\\Traits\\JsonSerializableAwareTrait is used zero times and is not analysed\.$#' - identifier: trait.unused - count: 1 - path: src/Altair/Data/Traits/JsonSerializableAwareTrait.php - - - - message: '#^Trait Altair\\Data\\Traits\\SerializeAwareTrait is used zero times and is not analysed\.$#' - identifier: trait.unused - count: 1 - path: src/Altair/Data/Traits/SerializeAwareTrait.php - - - - message: '#^Trait Altair\\Happen\\Traits\\EventStackAwareTrait is used zero times and is not analysed\.$#' - identifier: trait.unused - count: 1 - path: src/Altair/Happen/Traits/EventStackAwareTrait.php - - - - message: '#^Unable to resolve the template type TEntity in call to method Cycle\\ORM\\ORMInterface\:\:getRepository\(\)$#' - identifier: argument.templateType - count: 1 - path: src/Altair/Persistence/Cycle/CycleRepository.php diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 899417d..7518753 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -1,6 +1,3 @@ -includes: - - phpstan-baseline.neon - parameters: level: 6 phpVersion: 80300 @@ -11,8 +8,37 @@ parameters: tmpDir: .phpstan-cache ignoreErrors: - # PHP-side stubs for optional ext-* extensions vary across environments + # PHP-side stubs for optional ext-* extensions vary across environments. - identifier: function.notFound paths: - src/Altair/Cache/Storage/MemcachedCacheItemStorage.php - src/Altair/Cache/Storage/RedisCacheItemStorage.php + + # Public-API mixin traits consumed by host applications (and exercised by the + # framework's own test fixtures). PHPStan analyses `src` only, so it reports them + # as "used zero times"; they are intentionally part of the published surface. + - identifier: trait.unused + paths: + - src/Altair/Cache/Traits/TagsAwareTrait.php + - src/Altair/Courier/Traits/LogMessageTrait.php + - src/Altair/Data/Traits/AttributesAwareTrait.php + - src/Altair/Data/Traits/DateAttributeMutatorAwareTrait.php + - src/Altair/Data/Traits/ImmutableAttributesAwareTrait.php + - src/Altair/Data/Traits/JsonSerializableAwareTrait.php + - src/Altair/Data/Traits/SerializeAwareTrait.php + - src/Altair/Happen/Traits/EventStackAwareTrait.php + + # CookieCollection/SetCookieCollection deliberately diverge from Map: + # values() exposes string cookie values rather than Cookie objects, so no @extends + # binding is Liskov-valid. The divergence is an intentional string-keyed cookie store. + - identifier: missingType.generics + paths: + - src/Altair/Cookie/Collection/CookieCollection.php + - src/Altair/Cookie/Collection/SetCookieCollection.php + + # Cycle ORM's getRepository() parameter is class-string|non-empty-string|T, an + # ambiguous union that prevents template inference. The concrete result type is pinned + # via @var CycleNativeRepository at the call site. + - identifier: argument.templateType + paths: + - src/Altair/Persistence/Cycle/CycleRepository.php