Skip to content

Update dependency boundwize/structarmed to ^0.20.0 - #476

Merged
alexmerlin merged 1 commit into
7.0from
renovate/boundwize-structarmed-0.x
Oct 30, 2026
Merged

alexmerlin merged 1 commit into
7.0from
renovate/boundwize-structarmed-0.x

Conversation

@renovate

@renovate renovate Bot commented Oct 29, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
boundwize/structarmed ^0.19.0 → ^0.20.0 age confidence

Release Notes

boundwize/structarmed

v0.20.0: Released: StructArmed 0.20.0

Compare Source

ci build PHPStan

StructArmed 0.20.0 introduces a new Stability preset, modular architecture configuration, and an option to run analysis without persistent caching.

This release introduces:

  • the new Preset::STABILITY() for protecting public APIs from internal implementation details;
  • isApi and isInternal properties on ClassNode for custom rule development;
  • Architecture::import() for splitting architecture configuration across multiple files;
  • --no-cache for running analysis without persistent caching;
  • improved PSR-4 validation and cache cleanup safety.

New Stability Preset

StructArmed introduces a new preset for enforcing API stability:

Preset::STABILITY()

The preset includes two new rules:

  • ApiMayNotBeInternalRule — prevents declarations from being marked with both @api and @internal.
  • ApiMayNotExtendInternalRule — prevents @api classes and interfaces from extending @internal declarations, directly or through inheritance.

For example:

/** @internal */
class InternalService
{
}

/** @api */
class PublicService extends InternalService
{
}

The Stability preset reports an architecture violation because a public API extends an internal implementation.

Enable the preset with:

use Boundwize\StructArmed\Preset\Preset;

->withPreset(Preset::STABILITY())

Or initialize a new configuration:

vendor/bin/structarmed init --preset=stability
API and Internal Detection on ClassNode

ClassNode now exposes two new boolean properties:

  • $classNode->isApi — indicates whether the declaration has an @api PHPDoc tag.
  • $classNode->isInternal — indicates whether the declaration has an @internal PHPDoc tag.

These properties are available to custom architecture rules, making it easier to enforce project-specific API stability and visibility conventions.

For example:

public function appliesTo(ClassNode $classNode): bool
{
    return $classNode->isApi && ! $classNode->isInternal;
}

The properties are populated automatically during analysis for scanned class-like declarations, including classes, interfaces, traits, and enums.

Import Architecture Configuration

StructArmed now supports organizing architecture configuration across multiple files using Architecture::import().

For example:

use Boundwize\StructArmed\Architecture;

return Architecture::define()
    ->import(__DIR__ . '/module/Foo/structarmed.php')
    ->import(__DIR__ . '/module/Bar/structarmed.php');

Each imported file returns a callable that receives the root Architecture instance:

use Boundwize\StructArmed\Architecture;

return static function (Architecture $architecture): void {
    $architecture->layer('Foo', 'module/Foo/src/');
};

This allows architecture rules and layers to be organized by module while sharing the same configuration.

Imported configurations support:

  • nested imports with circular import protection;
  • paths resolved relative to the project root;
  • automatic analysis cache invalidation when imported files change.

This makes StructArmed easier to configure and maintain in modular applications and larger projects.

New --no-cache Option

StructArmed introduces a new CLI option:

vendor/bin/structarmed analyse --no-cache

This option runs analysis without reading from or writing to the persistent analysis cache.

It is useful for debugging, validating uncached analysis, and environments where persistent caching is not desired.

The option supports both sequential and parallel analysis.

--no-cache cannot be combined with --clear-cache.

Bug Fixes and Internal Improvements

  • Fix PSR-4 validation for .class.php files.
  • Report files that map to invalid PSR-4 class names.
  • Improve temporary cache directory cleanup after parallel --no-cache analysis.
  • Prevent cache directory removal races between concurrent runs.
  • Update documentation and test coverage.

What's Changed

  • Add --no-cache option in #​507.
  • Add the new Stability preset, API rules, and ClassNode API/internal detection in #​510.
  • Clean up temporary cache directories after parallel --no-cache analysis in #​513.
  • Fix PSR-4 validation for .class.php files in #​516.
  • Report invalid PSR-4 class names in #​517.
  • Add modular architecture configuration imports in #​522.
  • Fix concurrent cache directory cleanup in #​523.

Full Changelog: boundwize/structarmed@0.19.10...0.20.0


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@codecov

codecov Bot commented Oct 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 38.53%. Comparing base (f4a9ec7) to head (4114689).

Additional details and impacted files
@@            Coverage Diff            @@
##                7.0     #476   +/-   ##
=========================================
  Coverage     38.53%   38.53%           
  Complexity      925      925           
=========================================
  Files           169      169           
  Lines          3776     3776           
=========================================
  Hits           1455     1455           
  Misses         2321     2321           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Qodana for JS

It seems all right 👌

No new problems were found according to the checks applied

💡 Qodana analysis was run in the pull request mode: only the changed files were checked
☁️ View the detailed Qodana report

Contact Qodana team

Contact us at qodana-support@jetbrains.com

@alexmerlin
alexmerlin merged commit 5884408 into 7.0 Oct 30, 2026
38 of 42 checks passed
@alexmerlin
alexmerlin deleted the renovate/boundwize-structarmed-0.x branch October 30, 2026 04:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant