Tools

Repository Author Commit message Committed SHA  
 
phpstan-rules by dg derive exact array shape from regex in Strings::match/matchAll

StringsReturnTypeExtension now uses phpstan's RegexArrayShapeMatcher to
infer the precise shape (capture groups, named/optional groups, offsets)
for constant patterns, translating Nette's boolean parameters into a PREG
flag mask. Non-constant patterns and the lazy matchAll() Generator fall
back to the previous generic shape; split() is unchanged.

phpstan-rules by dg report invalid regex patterns in Nette\Utils\Strings calls

New ValidRegularExpressionRule (the first custom rule in the project)
checks constant patterns passed to Strings::match/matchAll/split/replace
and reports compilation errors via RegexpException under identifier
nette.strings.regexpPattern. Enabled by default.

Adds TypeAssert::assertErrors() for testing rules (assertNoErrors now
delegates to it).

phpstan-rules by dg add StringsRegexHelper for the Nette\Utils\Strings regex extensions

Shared helper that centralizes the translation of Nette's boolean
parameters into a PREG flag mask, the RegexArrayShapeMatcher calls
(matchShape/matchAllShape, instance) and stateless argument resolution
(resolveFlag/findArg, static). The Strings regex extensions added in the
following commits build on it.

phpstan-rules by dg treat #[Inject] attribute properties as initialized

New InjectPropertyExtension (ReadWritePropertiesExtension) marks properties
annotated with #[Nette\DI\Attributes\Inject] as always-written and
initialized, since Nette DI assigns them after instantiation. Only the
attribute form is recognized, not the legacy @inject phpDoc.

Also teaches TypeAssert::assertNoErrors() to pass the analysed file into
analysedPaths (like assertTypes already does), so classes defined in the
test file are in reflection scope.

phpstan-rules by dg guard dynamic return type extensions against first-class callables

Extensions called getArgs() unconditionally on the entry node. For a first-class callable such as json_encode(...) or $form[x]->m(...), PHPStan getArgs() asserts !isFirstClassCallable(), so any covered function/method/static method used in first-class-callable syntax crashed the whole analysis with an internal error. Bail out (return null) when the call node is a first-class callable, before touching getArgs(). Mirrors the standard guard in core PHPStan extensions.

phpstan-rules by dg readonly properties
phpstan-rules by dg added suppression for Form event-handler callback assignments
phpstan-rules by dg added Registry::getMapper(), getAsset() and Mapper::getAsset() return type narrowing
phpstan-rules by dg added Html::getXxx(), setXxx(), addXxx() magic method resolution
phpstan-rules by dg added Forms\Container::getComponent() and $form['…'] return type narrowing based on addXxx() calls
phpstan-rules by dg added Container::getComponent() and $container['…'] return type narrowing

Also resolves nested access - chained ($container['a']['b']) and Nette's dash
notation ($container['a-b']) - via createComponent<Name>() factories.

phpstan-rules by dg added Arrays::invoke() and invokeMethod() return type narrowing
coding-standard by dg added CLAUDE.md
coding-standard by dg updated README.md
code-checker by dg updated github actions
code-checker by dg made static analysis mandatory
code-checker by dg fixed PHPStan errors
code-checker by dg uses nette/phpstan-rules
code-checker by dg composer: minimum stability is stable
code-checker by dg improved phpDoc
code-checker by dg cs
claude-code by dg Released version 1.0.7
claude-code by dg added tracy-debugging skill
claude-code by dg improved skills
command-line by dg removed deprecated stuff
command-line by dg opened 2.0-dev
command-line by dg added CLAUDE.md
command-line by dg Console: added detectTerminal() as reusable TTY check

Extracted the TTY detection out of detectColors() so it can be used
independently to auto-disable features that only make sense in an
interactive terminal (progress indicators, line-rewriting output).
detectColors() now builds on top of detectTerminal() and adds the
NO_COLOR/FORCE_COLOR environment logic on top.

coding-standard by dg auto-disable progress indicator when not running in a terminal
coding-standard by dg rewrite CLI argument parsing using nette/command-line
claude-code by dg added CLAUDE.md
claude-code by dg Released version 1.0.6

Last synchronization: 2026-07-07 20:02:54