Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Psalm Plugin Stringf Laravel Package

boesing/psalm-plugin-stringf

A Psalm plugin that statically validates printf and sprintf format strings, checking that placeholders match the number and types of arguments passed. Mismatches are caught during analysis instead of at runtime, using Psalm's type inference to verify format specifiers across your codebase.

Deep Wiki
Context7

Technical Evaluation

Architecture fit: This is a development-time Psalm plugin, not a Laravel runtime package. It belongs in the static-analysis/CI quality layer and should be isolated as a require-dev dependency. It has no service provider, facade, runtime middleware, or production architecture impact. Its value is narrow: improving Psalm’s understanding of sprintf, printf, sscanf, and fscanf format strings, which can catch placeholder/type mismatches before runtime.

Integration feasibility: Feasible only where the team already standardizes on Psalm. Integration is likely a Composer dev dependency plus Psalm configuration and CI execution. It is not a good reason to introduce Psalm into a Laravel codebase, especially where PHPStan/Larastan is already the standard. Laravel itself does not require this plugin, and most Laravel quality gates will not benefit unless Psalm is already part of the toolchain.

Technical risk: Runtime risk is low because this should never ship to production. Governance and lifecycle risk is medium-to-high: only 12 stars, last release in December 2022, repository metadata is unknown, and the license is reported as NOASSERTION. That license ambiguity is a hard gate for adoption until legal/procurement clears it. Additional risk comes from coupling to Psalm’s plugin API: Psalm upgrades may break the plugin, and stale plugins can create false positives that block CI or false confidence if misconfigured.

Key questions:

  • Are we already using Psalm in the affected Laravel repositories, or is this a toolchain expansion?
  • Which Psalm and PHP versions must be supported, and does this plugin’s 2022-era compatibility matrix cover them?
  • What is the actual license and provenance of the package and repository?
  • Is the plugin actively maintained, or would we need to fork/pin it?
  • Does our codebase materially use sprintf/printf/sscanf/fscanf, or is the benefit theoretical?
  • Can we tolerate false positives in the CI quality gate, and who owns triage?
  • Is there a PHPStan/Larastan rule that delivers equivalent value with less toolchain fragmentation?

Integration Approach

Stack fit: Best fit is a PHP/Laravel repository already running Psalm in CI. Poor fit is a Laravel team standardized on PHPStan/Larastan, because adding Psalm solely for this plugin increases toolchain surface area for a narrow rule set. The plugin should be scoped to require-dev, excluded from production builds, and run in a dedicated static-analysis job rather than application deployment.

Migration path: There is no migration path from PHPStan to this plugin. If Psalm is already present, the path is incremental: add as a dev dependency, enable in psalm.xml, run against a baseline, triage new findings, then enforce in CI. If Psalm is not present, do not migrate for this package alone; evaluate broader Psalm adoption separately or seek an equivalent PHPStan rule.

Compatibility: Confirm compatibility against the team’s PHP matrix, Psalm major/minor versions, Composer version, and CI image. Pin the plugin and Psalm versions together, and treat Psalm upgrades as requiring a plugin compatibility check. Laravel version compatibility is largely irrelevant because this is not Laravel-coupled, but the package’s age means modern PHP/Psalm combinations must be explicitly tested.

Sequencing:

  1. Confirm license/provenance and maintenance status.
  2. Confirm Psalm is already standard in the target repository.
  3. Pilot in one low-risk repository with a non-blocking Psalm job.
  4. Compare findings against existing static analysis and measure actionable true positives.
  5. Decide whether to enforce, keep advisory, fork, or reject.
  6. If adopted, pin versions, document ownership, and add Psalm/plugin upgrade checks to the maintenance calendar.

Operational Impact

Maintenance: Low runtime maintenance, but non-zero toolchain maintenance. The plugin is stale relative to current PHP/Psalm releases, so the team may need to pin Psalm or patch/fork the plugin. Because the repository is unknown and the license is unclear, maintenance ownership cannot be assumed to sit with an active upstream. A TPM should require an internal owner if adopted.

Support: Community-only support is likely. There is no evidence of vendor backing, SLA, or broad adoption. Support burden will fall on the platform/quality engineering team, primarily during Psalm upgrades and CI failures. Legal support is also required before adoption because NOASSERTION is not an approved license state for most organizations.

Scaling: Operationally cheap to scale across repositories if Psalm is already standardized: one dev dependency and one CI step per repo. It does not scale as a cross-team standard if some teams use PHPStan and others use Psalm, because that creates duplicate quality-gate logic and inconsistent findings. Keep it as an optional Psalm enhancement, not a platform-wide mandate.

Failure modes:

  • Plugin incompatible with a Psalm upgrade, causing CI failures or silent loss of checks.
  • False positives on dynamic format strings or complex placeholders, blocking builds.
  • False negatives if the plugin is installed but not enabled or not applied to relevant paths.
  • License/provenance issue forces removal after adoption.
  • Upstream abandonment leaves no fix path except pinning or forking.
  • Team assumes coverage equivalent to a full format-string/security analyzer when the plugin is narrow.

Ramp-up: Low for teams already fluent in Psalm: configuration and triage are straightforward. Moderate for Laravel teams standardized on PHPStan/Larastan: they must learn Psalm, manage a second analyzer, and reconcile overlapping findings. Given the low adoption signals, stale release, and license ambiguity, the TPM recommendation is a gated pilot only where Psalm already exists; otherwise defer and seek an equivalent rule in the existing static-analysis stack.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core