@@ -11,6 +11,13 @@ parameters:
1111 - src/Bridges/ApplicationLatte/UIMacros.php
1212 - src/Bridges/ApplicationLatte/SnippetBridge.php
1313
14+ fileExtensions :
15+ - php
16+ - phtml
17+
18+ # Cross-version compatible project (Latte 2/3, Tracy 2/3) — some rules only match with specific versions
19+ reportUnmatchedIgnoredErrors : false
20+
1421 ignoreErrors :
1522 # Latte 2/3 compatibility - classes/methods/properties differ between versions
1623 -
@@ -40,6 +47,43 @@ parameters:
4047 - property.nonObject
4148 - if.alwaysFalse
4249
50+ # Latte 2/3 compatibility - Template::addFilter(?string) and version_compare
51+ -
52+ path : src/Bridges/ApplicationLatte/Template.php
53+ identifiers :
54+ - argument.type
55+ - if.alwaysFalse
56+
57+ # Latte 3 node compatibility - properties/methods may differ between minor versions
58+ -
59+ paths :
60+ - src/Bridges/ApplicationLatte/Nodes/ControlNode.php
61+ - src/Bridges/ApplicationLatte/Nodes/LinkNode.php
62+ - src/Bridges/ApplicationLatte/Nodes/NNonceNode.php
63+ - src/Bridges/ApplicationLatte/Nodes/SnippetNode.php
64+ - src/Bridges/ApplicationLatte/Nodes/LinkBaseNode.php
65+ - src/Bridges/ApplicationLatte/Nodes/IfCurrentNode.php
66+ - src/Bridges/ApplicationLatte/Nodes/TemplatePrintNode.php
67+ identifiers :
68+ - method.nonObject
69+ - property.nonObject
70+ - property.notFound
71+ - argument.type
72+ - variable.undefined
73+ - postDec.type
74+ - generator.valueType
75+ - booleanAnd.leftAlwaysFalse
76+ - function.alreadyNarrowedType
77+
78+ # SnippetRuntime: Latte Block class and Renderable interface compatibility
79+ -
80+ path : src/Bridges/ApplicationLatte/SnippetRuntime.php
81+ identifiers :
82+ - class.notFound
83+ - property.notFound
84+ - method.notFound
85+ - offsetAccess.nonArray
86+
4387 # Nette DI config access pattern - $config is array|object depending on DI version
4488 -
4589 identifier : property.nonObject
@@ -81,47 +125,104 @@ parameters:
81125 identifier : property.readOnlyAssignNotInConstructor
82126 path : src/Application/UI/Presenter.php
83127
84- # Latte 3 node compatibility - properties/ methods may differ between minor versions
128+ # Nette Forms compatibility - methods differ between versions
85129 -
130+ identifier : method.notFound
131+ path : src/Application/UI/Form.php
132+
133+ # TemplateFactory::createTemplate() accepts optional $class parameter via phpDoc
134+ -
135+ identifier : arguments.count
86136 paths :
87- - src/Bridges/ApplicationLatte/Nodes/ControlNode.php
88- - src/Bridges/ApplicationLatte/Nodes/LinkNode.php
89- - src/Bridges/ApplicationLatte/Nodes/NNonceNode.php
90- - src/Bridges/ApplicationLatte/Nodes/SnippetNode.php
91- - src/Bridges/ApplicationLatte/Nodes/LinkBaseNode.php
92- - src/Bridges/ApplicationLatte/Nodes/IfCurrentNode.php
93- - src/Bridges/ApplicationLatte/Nodes/TemplatePrintNode.php
137+ - src/Application/UI/Presenter.php
138+ - src/Application/UI/Control.php
139+
140+ # MicroPresenter uses duck typing for template objects and nullable container
141+ -
142+ path : src/Application/MicroPresenter.php
94143 identifiers :
144+ - argument.type
145+ - argument.templateType
146+ - method.notFound
95147 - method.nonObject
96- - property.nonObject
97148 - property.notFound
98- - argument.type
99- - variable.undefined
100- - postDec.type
101- - generator.valueType
102- - booleanAnd.leftAlwaysFalse
149+ - return.type
150+
151+ # PresenterFactory/Callback: `new $class` returns object, not IPresenter (verified at runtime)
152+ -
153+ identifier : return.type
154+ paths :
155+ - src/Application/PresenterFactory.php
156+ - src/Bridges/ApplicationDI/PresenterFactoryCallback.php
157+
158+ # PresenterFactory: defensive type checks after regex validation — always true but kept for safety
159+ -
160+ path : src/Application/PresenterFactory.php
161+ identifiers :
103162 - function.alreadyNarrowedType
163+ - booleanAnd.alwaysTrue
164+ - identical.alwaysTrue
104165
105- # SnippetRuntime: Latte Block class and Renderable interface compatibility
166+ # Route/RouteList: defensive type checks — always true after prior validation
106167 -
107- path : src/Bridges/ApplicationLatte/SnippetRuntime.php
168+ identifier : function.alreadyNarrowedType
169+ paths :
170+ - src/Application/Routers/Route.php
171+ - src/Application/Routers/RouteList.php
172+ -
173+ identifier : nullCoalesce.offset
174+ path : src/Application/Routers/Route.php
175+
176+ # ComponentReflection: cache reference pattern causes always-true/unreachable false positives
177+ -
178+ path : src/Application/UI/ComponentReflection.php
108179 identifiers :
109- - class.notFound
110- - property.notFound
180+ - notIdentical.alwaysTrue
181+ - deadCode.unreachable
182+ - booleanAnd.rightAlwaysTrue
183+
184+ # ComponentReflection: static methods exist on Presenter subclass, called via $class:: dynamic dispatch
185+ -
186+ path : src/Application/UI/ComponentReflection.php
187+ identifiers :
188+ - staticMethod.notFound
111189 - method.notFound
112- - offsetAccess.nonArray
190+ - return.type
113191
114- # Nette Forms compatibility - methods differ between versions
192+ # Control::$template->flashes is set dynamically for flash messages
115193 -
116- identifier : method .notFound
117- path : src/Application/UI/Form .php
194+ identifier : property .notFound
195+ path : src/Application/UI/Control .php
118196
119- # TemplateFactory::createTemplate () accepts optional $class parameter via phpDoc
197+ # Presenter::detectedCsrf () redirect() throws AbortException, not InvalidLinkException
120198 -
121- identifier : arguments.count
122- paths :
123- - src/Application/UI/Presenter.php
124- - src/Application/UI/Control.php
199+ identifier : catch.neverThrown
200+ path : src/Application/UI/Presenter.php
201+
202+ # Exception::$code cannot have native type in override, phpDoc int differs from parent mixed
203+ -
204+ identifier : property.phpDocType
205+ path : src/Application/exceptions.php
206+
207+ # parse_str() native type is wider than actual query string result
208+ -
209+ identifier : varTag.nativeType
210+ path : src/Application/LinkGenerator.php
211+
212+ # Tracy version_compare conditions and BlueScreen closure parameter counts
213+ -
214+ path : src/Bridges/ApplicationDI/ApplicationExtension.php
215+ identifiers :
216+ - booleanAnd.rightAlwaysTrue
217+ - booleanAnd.leftAlwaysTrue
218+ - arguments.count
219+
220+ # RoutingPanel::analyse() return type and ReflectionClass with runtime class-string
221+ -
222+ path : src/Bridges/ApplicationTracy/RoutingPanel.php
223+ identifiers :
224+ - return.type
225+ - argument.type
125226
126227includes :
127228 - phpstan-baseline.neon
0 commit comments