Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"league/flysystem-memory": "^2.0 || ^3.0",
"nette/utils": "^4.0",
"ondram/ci-detector": "^4.2",
"phpstan/phpstan": "^1.10.9",
"phpstan/phpstan": "^2.0.0",
"sebastian/diff": "^4.0 || ^5.0 || ^6.0",
"simonschaufi/pretty-xml": "^3.0.0",
"symfony/config": "^5.4 || ^6.4 || ^7.0",
Expand All @@ -36,9 +36,9 @@
"require-dev": {
"composer/composer": "^2.7",
"ergebnis/composer-normalize": "^2.42",
"phpstan/phpstan-phpunit": "^1.3",
"phpstan/phpstan-phpunit": "^2.0.0",
"phpunit/phpunit": "^10.5",
"rector/rector": "^1.2.6",
"rector/rector": "^2.0.0",
"symplify/easy-coding-standard": "^12.3",
"symplify/monorepo-builder": "^11.2",
"symplify/rule-doc-generator": "12.1.3"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public static function provideData(): Iterator
return self::yieldFilesFromDirectory(__DIR__ . '/Fixtures', '*.json.fixture');
}

public function provideConfigFilePath(): ?string
public function provideConfigFilePath(): string
{
return __DIR__ . '/config/fractor.php';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public static function provideData(): Iterator
return self::yieldFilesFromDirectory(__DIR__ . '/Fixtures', '*.json.fixture');
}

public function provideConfigFilePath(): ?string
public function provideConfigFilePath(): string
{
return __DIR__ . '/config/fractor.php';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public static function provideData(): Iterator
return self::yieldFilesFromDirectory(__DIR__ . '/Fixtures', '*.json.fixture');
}

public function provideConfigFilePath(): ?string
public function provideConfigFilePath(): string
{
return __DIR__ . '/config/fractor.php';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public static function provideData(): Iterator
return self::yieldFilesFromDirectory(__DIR__ . '/Fixtures', '*.json.fixture');
}

public function provideConfigFilePath(): ?string
public function provideConfigFilePath(): string
{
return __DIR__ . '/config/fractor.php';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public static function provideData(): Iterator
return self::yieldFilesFromDirectory(__DIR__ . '/Fixtures', '*.json.fixture');
}

public function provideConfigFilePath(): ?string
public function provideConfigFilePath(): string
{
return __DIR__ . '/config/fractor.php';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public static function provideData(): Iterator
return self::yieldFilesFromDirectory(__DIR__ . '/Fixtures', '*.json.fixture');
}

public function provideConfigFilePath(): ?string
public function provideConfigFilePath(): string
{
return __DIR__ . '/config/fractor.php';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public static function provideData(): Iterator
return self::yieldFilesFromDirectory(__DIR__ . '/Fixtures', '*.html.fixture');
}

public function provideConfigFilePath(): ?string
public function provideConfigFilePath(): string
{
return __DIR__ . '/config/fractor.php';
}
Expand Down
2 changes: 1 addition & 1 deletion packages/fractor-phpstan-rules/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"require": {
"php": "^8.2",
"a9f/fractor": "^0.5",
"phpstan/phpstan": "^1.10.9"
"phpstan/phpstan": "^2.0.0"
},
"minimum-stability": "dev",
"prefer-stable": true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
use PHPStan\Analyser\Scope;
use PHPStan\Reflection\ReflectionProvider;
use PHPStan\Rules\Rule;
use PHPStan\Rules\RuleErrorBuilder;
use PHPStan\Type\FileTypeMapper;

/**
Expand Down Expand Up @@ -72,7 +73,11 @@ public function processNode(Node $node, Scope $scope): array

$docComment = $node->getDocComment();
if (! $docComment instanceof Doc) {
return [sprintf(self::ERROR_MESSAGE, $className)];
return [
RuleErrorBuilder::message(sprintf(self::ERROR_MESSAGE, $className))
->identifier('change.docblock')
->build(),
];
}

$resolvedPhpDoc = $this->fileTypeMapper->getResolvedPhpDoc(
Expand All @@ -88,6 +93,10 @@ public function processNode(Node $node, Scope $scope): array
return [];
}

return [sprintf(self::ERROR_MESSAGE, $className)];
return [
RuleErrorBuilder::message(sprintf(self::ERROR_MESSAGE, $className))
->identifier('change.docblock')
->build(),
];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
final class AddChangelogDocBlockForFractorRuleTest extends RuleTestCase
{
/**
* @param array<int, mixed> $expectedErrorsWithLines
* @param list<array{0: string, 1: int, 2?: string|null}> $expectedErrorsWithLines
*/
#[DataProvider(methodName: 'provideData')]
#[DataProvider('provideData')]
public function testRule(string $filePath, array $expectedErrorsWithLines): void
{
$this->analyse([$filePath], $expectedErrorsWithLines);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ final class __Name__Test extends AbstractFractorTestCase
return self::yieldFilesFromDirectory(__DIR__ . '/Fixtures', '*.__FixtureFileExtension__.fixture');
}

public function provideConfigFilePath(): ?string
public function provideConfigFilePath(): string
{
return __DIR__ . '/config/fractor.php';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
interface TypoScriptNodeVisitor
{
/**
* @param list<Statement> $statements
* @param Statement[] $statements
*/
public function beforeTraversal(File $file, array $statements): void;

Expand All @@ -25,7 +25,7 @@ public function enterNode(Statement $node): Statement|array|int;
public function leaveNode(Statement $node): void;

/**
* @param list<Statement> $statements
* @param Statement[] $statements
*/
public function afterTraversal(array $statements): void;
}
12 changes: 6 additions & 6 deletions packages/fractor-typoscript/src/TypoScriptStatementsIterator.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@
public const REMOVE_NODE = 3;

/**
* @var array<TypoScriptNodeVisitor>
* @var TypoScriptNodeVisitor[]
*/
private iterable $visitors;

/**
* @param list<TypoScriptNodeVisitor> $visitors
* @param TypoScriptNodeVisitor[] $visitors
*/
public function __construct(iterable $visitors)
{
Expand All @@ -34,8 +34,8 @@ public function __construct(iterable $visitors)
}

/**
* @param list<Statement> $statements
* @return list<Statement>
* @param Statement[] $statements
* @return Statement[]
*/
public function traverseDocument(File $file, array $statements): array
{
Expand All @@ -53,8 +53,8 @@ public function traverseDocument(File $file, array $statements): array
}

/**
* @param list<Statement> $statements
* @return list<Statement>
* @param Statement[] $statements
* @return Statement[]
*/
private function processStatementList(array $statements): array
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public static function provideData(): \Iterator
return self::yieldFilesFromDirectory(__DIR__ . '/Fixtures', '*.typoscript.fixture');
}

public function provideConfigFilePath(): ?string
public function provideConfigFilePath(): string
{
return __DIR__ . '/config/fractor.php';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public static function provideData(): \Iterator
return self::yieldFilesFromDirectory(__DIR__ . '/Fixtures', '*.typoscript.fixture');
}

public function provideConfigFilePath(): ?string
public function provideConfigFilePath(): string
{
return __DIR__ . '/config/fractor.php';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

final class DummyTypoScriptFractorRule extends AbstractTypoScriptFractor
{
public function refactor(Statement $statement): null|Statement|int
public function refactor(Statement $statement): null|int
{
if (! $statement instanceof Assignment) {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
final class ReturnMultipleStatementsRule extends AbstractTypoScriptFractor
{
/**
* @return null|Statement|int|list<Statement>
* @return null|list<Statement>
*/
public function refactor(Statement $statement): null|Statement|int|array
public function refactor(Statement $statement): null|array
{
if (! $statement instanceof Copy) {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public static function provideData(): \Iterator
return self::yieldFilesFromDirectory(__DIR__ . '/Fixtures', '*.typoscript.fixture');
}

public function provideConfigFilePath(): ?string
public function provideConfigFilePath(): string
{
return __DIR__ . '/config/fractor.php';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public static function provideData(): \Iterator
];
}

public function provideConfigFilePath(): ?string
public function provideConfigFilePath(): string
{
return __DIR__ . '/config/fractor.php';
}
Expand Down
4 changes: 4 additions & 0 deletions packages/fractor-xml/src/XmlFileProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
use a9f\Fractor\Caching\Detector\ChangedFilesDetector;
use a9f\Fractor\Exception\ShouldNotHappenException;
use a9f\Fractor\ValueObject\Indent;
use a9f\FractorXml\Contract\DomNodeVisitor;
use a9f\FractorXml\Contract\Formatter;
use a9f\FractorXml\Contract\XmlFractor;
use a9f\FractorXml\ValueObjectFactory\DomDocumentFactory;
Expand All @@ -35,6 +36,9 @@ public function canHandle(File $file): bool
return $file->getFileExtension() === 'xml';
}

/**
* @param list<DomNodeVisitor> $appliedRules
*/
public function handle(File $file, iterable $appliedRules): void
{
$fileHasChanged = \false;
Expand Down
2 changes: 1 addition & 1 deletion packages/fractor-xml/tests/AbstractXmlFractorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public function canHandle(\DOMNode $node): bool
return $node->nodeName === 'Child';
}

public function refactor(\DOMNode $node): \DOMNode|int|null
public function refactor(\DOMNode $node): \DOMNode
{
if ($node->ownerDocument === null) {
throw new \RuntimeException('Node does not have an ownerDocument, cannot create element');
Expand Down
6 changes: 3 additions & 3 deletions packages/fractor-xml/tests/DomDocumentIteratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ public function enterNode(\DOMNode $node): \DOMNode|int
public function nodeIsReplacedIfVisitorReturnsNewDomNode(): void
{
$nodeRemovingVisitor = new class() extends CollectingDomNodeVisitor {
public function enterNode(\DOMNode $node): \DOMNode|int
public function enterNode(\DOMNode $node): \DOMNode
{
parent::enterNode($node);
if ($node->nodeName === 'Child') {
Expand Down Expand Up @@ -217,7 +217,7 @@ private function getCollectingDomNodeVisitor(): CollectingDomNodeVisitor
}

/**
* @param list<string> $recorder
* @param list<non-empty-string> $recorder
*/
private function getCallRecordingDomNodeVisitor(string $visitorName, array &$recorder): DomNodeVisitor
{
Expand All @@ -236,7 +236,7 @@ public function beforeTraversal(File $file, \DOMDocument $rootNode): void
$this->calls[] = sprintf('%s:beforeTraversal:%s', $this->visitorName, $rootNode->nodeName);
}

public function enterNode(\DOMNode $node): \DOMNode|int
public function enterNode(\DOMNode $node): \DOMNode
{
$this->calls[] = sprintf('%s:enterNode:%s', $this->visitorName, $node->nodeName);
return $node;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public static function provideData(): Iterator
return self::yieldFilesFromDirectory(__DIR__ . '/Fixtures', '*.yaml.fixture');
}

public function provideConfigFilePath(): ?string
public function provideConfigFilePath(): string
{
return __DIR__ . '/config/fractor.php';
}
Expand Down
1 change: 0 additions & 1 deletion packages/fractor/src/Application/RuleSkipper.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ public function shouldSkip(string $rule, string $filePath): bool
}

if (array_key_exists($rule, $configuredSkip)) {
/** @var string|list<string> $skippedPaths */
$skippedPaths = $configuredSkip[$rule];

if (is_string($skippedPaths)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,6 @@ class ConsoleOutputFormatter implements OutputFormatterInterface
*/
public const NAME = 'console';

/**
* @readonly
*/
private SymfonyStyle $symfonyStyle;

public function setSymfonyStyle(SymfonyStyle $symfonyStyle): void
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public function __construct(
}

/**
* @return list<non-empty-string>
* @return array<int<0, max>, non-empty-string>
*/
public function resolve(): array
{
Expand Down
2 changes: 1 addition & 1 deletion packages/fractor/src/Configuration/ConfigResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

final class ConfigResolver
{
public static function resolveConfigsFromInput(ArgvInput $input): ?string
public static function resolveConfigsFromInput(ArgvInput $input): string
{
return self::getOptionValue($input) ?? getcwd() . '/fractor.php';
}
Expand Down
7 changes: 5 additions & 2 deletions packages/fractor/src/Configuration/ConfigurationFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,12 @@ public function __construct(

public function createFromInput(InputInterface $input): Configuration
{
/** @var list<non-empty-string> $paths */
$paths = (array) $this->parameterBag->get(Option::PATHS);

return new Configuration(
$this->allowedFileExtensionsResolver->resolve(),
(array) $this->parameterBag->get(Option::PATHS),
$paths,
(array) $this->parameterBag->get(Option::SKIP),
(bool) $input->getOption(Option::DRY_RUN),
(bool) $input->getOption(Option::QUIET)
Expand All @@ -30,7 +33,7 @@ public function createFromInput(InputInterface $input): Configuration

/**
* @api used in tests
* @param string[] $paths
* @param list<non-empty-string> $paths
*/
public function createForTests(array $paths): Configuration
{
Expand Down
Loading