mirror of
https://github.com/nextcloud/server.git
synced 2026-06-09 08:44:07 -04:00
build(psalm): Enforce named attribute arguments
Signed-off-by: provokateurin <kate@provokateurin.de>
This commit is contained in:
parent
212a621697
commit
a94249d1d5
2 changed files with 54 additions and 0 deletions
53
build/psalm/AttributeNamedParameters.php
Normal file
53
build/psalm/AttributeNamedParameters.php
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
use PhpParser\Node\Attribute;
|
||||
use Psalm\CodeLocation;
|
||||
use Psalm\FileSource;
|
||||
use Psalm\Issue\InvalidDocblock;
|
||||
use Psalm\IssueBuffer;
|
||||
use Psalm\Plugin\EventHandler\Event\AfterClassLikeVisitEvent;
|
||||
|
||||
class AttributeNamedParameters implements Psalm\Plugin\EventHandler\AfterClassLikeVisitInterface {
|
||||
public static function afterClassLikeVisit(AfterClassLikeVisitEvent $event): void {
|
||||
$stmt = $event->getStmt();
|
||||
$statementsSource = $event->getStatementsSource();
|
||||
|
||||
foreach ($stmt->attrGroups as $attrGroup) {
|
||||
foreach ($attrGroup->attrs as $attr) {
|
||||
self::checkAttribute($attr, $statementsSource);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($stmt->getMethods() as $method) {
|
||||
foreach ($method->attrGroups as $attrGroup) {
|
||||
foreach ($attrGroup->attrs as $attr) {
|
||||
self::checkAttribute($attr, $statementsSource);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static function checkAttribute(Attribute $stmt, FileSource $statementsSource): void {
|
||||
if ($stmt->name->getLast() === 'Attribute') {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($stmt->args as $arg) {
|
||||
if ($arg->name === null) {
|
||||
IssueBuffer::maybeAdd(
|
||||
new InvalidDocblock(
|
||||
'Attribute arguments must be named.',
|
||||
new CodeLocation($statementsSource, $stmt)
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -16,6 +16,7 @@
|
|||
>
|
||||
<plugins>
|
||||
<plugin filename="build/psalm/AppFrameworkTainter.php" />
|
||||
<plugin filename="build/psalm/AttributeNamedParameters.php" />
|
||||
</plugins>
|
||||
<projectFiles>
|
||||
<directory name="apps/admin_audit"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue