Released: StructArmed 0.15.0
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