
👨💻 Principal engineer at @ShipMonkDevs. 🔍 Static analysis lover. ❤️ Open sourcerer. 🎤 Speaker.
Prague
Joined March 2015
- Tweets354
- Following79
- Followers211
- Likes48
Pinned Tweet
🧪 Enforcing code COVERAGE via % is insufficient
🔥 Some code is MUCH more important
❓What if CI could ensure tests for ALL controllers?
See 🧵for more.
Jan Nedbal retweeted
🔑 New OSS from ShipMonk: Passkeys (WebAuthn) for PHP 8.4+ with zero dependencies.
High-level flow API, conditional mediation, a fake authenticator for easy testing, 100% code coverage and phpstan max level with no ignores.
github.com/shipmonk-rnd/pass…
Jan Nedbal retweeted
Zítra jedu na výlet do Brna. V KD Rubín bude @web_science_cz
Za necelé 2k doběhnete zajímavosti s AI a Dev/ DevOps, a získáte náskok před těmi co si ten den nenajdou. Networkig je vždy to nejvíc na co se těším.
Na závěr akce si se @srigi střihnem moderování AI battle, kde naživo uvidíte co je dnes s llm možné i zábavné
Pár míst ještě je: webscience.cz
Already at #PHPStan level: max with strict rules?
Try enabling some of those:
#PHP Dead Code Detector ①.①.⓪ released
Newly supports:
○ Symfony Forms
○ Laravel Blade templates
○ Property reads via (array), json_encode, serialize, ...
And bunch of smaller improvements.
github.com/shipmonk-rnd/dead…
📢 After 4 years of development, Dead Code Detector is stable
● Newly features: Laravel!
● Can find dead methods, props, consts and enums
● Supports Symfony, Twig, Doctrine, PHPUnit
● Understands transitivity (even hooks)
● Can remove dead code
Install as any @PHPStan ext
The feature list is much longer:
● Fully customizable
● Can exclude usages in tests
● Understands Reflection usage
● Handles dynamic access
● Built-in debugger
● All ignore features of PHPStan still work
Try it: github.com/shipmonk-rnd/dead…
Jan Nedbal retweeted
Na březnový meetup v Praze máme rovnou 3 přednášky
🎤 Petr Soukup - Jak v e-shopech nahrazujeme lidi za AI
🎤 Jan Nedbal - Shipping AI Code with Trust
🎤 Tomáš Markacz - AI v produkci: Praktický průvodce, jak zkrotit Vertex AI
meetup.com/pražske-srazy-přa…
💥Big release of Dead Code Detector via @phpstan:
🏷️Dead properties:
Both never-written & never-read detected!
Property hooks part of transitivity chain!
☘️Twig support!
Parameters passed to templates are used!
github.com/shipmonk-rnd/dead…
📟Claude Code usage increase in @ShipMonkDevs in 2026...
I think it just reached some point of wide usability - with great results for almost any task. People started to trust it and truely use it.
Jan Nedbal retweeted
Replying to @JanTvrdik
@JanTvrdik enhanced and released a new version of Nextras MultiQueryParser - aka the backend that splits your migration SQL files into particular queries.
A ton of new features, enhancements, and bugfixes in version 2.0 😍 🚀
No tests? No approve❌
Super easy to see what is (not) tested with GitLab coverage visualization in MR diff.
I truely miss this feature in GitHub.
🍀Luckily, nowadays there is Coverage Guard, which can partially replace that.
Unaware? See github.com/shipmonk-rnd/cove…
Red Diffs, Green Builds!
🇺🇸My english talk about Dead Code Elimination is finally out: youtu.be/-cf1RbsCwnY?si=l0Ph…
Jan Nedbal retweeted
PHPStan 2.1.34 is out with two great advancements:
Optimized performance: between 25 % to 40 % faster times thanks to more caching and raw performance tweaks in code.
More precise analysis with Fibers (super-cool) on PHP 8.1+.
Upgrade today and let me know how it works for you!
#PHP property hooks
Would you expect equal behaviour?
It is not: 3v4l.org/t80RS#v8.4.15
Or you can write own CoverageRule and target any method easily. Reflection and AST is available.
Examples:
- Method changed by 50+% to have test
- All 10+ lines must have some coverage
- Repositories to have 70% coverage
- Methods are tested unless #[NoCoverageAllowed]
🧵...














