Skip to content

Released: StructArmed 0.15.0

Choose a tag to compare

@samsonasik samsonasik released this 19 Jul 05:17
· 647 commits to main since this release
0.15.0
f11addd

ci build PHPStan

This release introduces Boundwize\StructArmed\Rule\ExtendedClassAwareRuleInterface.

A marker that lets a rule know whether the class it's evaluating is extended by another scanned class, and applies it to Boundwize\StructArmed\Rule\Rules\Class_\MustBeFinalRule.

Using interface in custom rule:

use Boundwize\StructArmed\Analyser\ClassNode;
use Boundwize\StructArmed\Rule\ExtendedClassAwareRuleInterface;
use Boundwize\StructArmed\Rule\RuleViolation;

final readonly class MyRule implements ExtendedClassAwareRuleInterface
{
    public function appliesTo(ClassNode $classNode): bool
    {
        return $classNode->isClass();
    }

    public function evaluate(ClassNode $classNode): ?RuleViolation
    {
        // Skip classes that another scanned class extends.
        if ($classNode->isExtended) {
            return null;
        }

        // other check ...

        return new RuleViolation(
            ...
        );
    }
}

What's Changed

  • feat: add ExtendedClassAwareRuleInterface to detect extended classes by @samsonasik in #219

Full Changelog: 0.14.20...0.15.0