mirror of
https://github.com/rectorphp/rector.git
synced 2025-04-20 23:41:57 +02:00
add removed nodes collector
This commit is contained in:
parent
e5c0c5df03
commit
0f60135b08
@ -7,6 +7,7 @@ use Rector\Application\FileSystem\RemovedAndAddedFilesCollector;
|
||||
use Rector\ConsoleDiffer\DifferAndFormatter;
|
||||
use Rector\Error\ExceptionCorrector;
|
||||
use Rector\Reporting\FileDiff;
|
||||
use Rector\Reporting\RemovedNodesCollector;
|
||||
use Symplify\PackageBuilder\FileSystem\SmartFileInfo;
|
||||
use Throwable;
|
||||
|
||||
@ -42,16 +43,23 @@ final class ErrorAndDiffCollector
|
||||
*/
|
||||
private $removedAndAddedFilesCollector;
|
||||
|
||||
/**
|
||||
* @var RemovedNodesCollector
|
||||
*/
|
||||
private $removedNodesCollector;
|
||||
|
||||
public function __construct(
|
||||
DifferAndFormatter $differAndFormatter,
|
||||
AppliedRectorCollector $appliedRectorCollector,
|
||||
ExceptionCorrector $exceptionCorrector,
|
||||
RemovedAndAddedFilesCollector $removedAndAddedFilesCollector
|
||||
RemovedAndAddedFilesCollector $removedAndAddedFilesCollector,
|
||||
RemovedNodesCollector $removedNodesCollector
|
||||
) {
|
||||
$this->differAndFormatter = $differAndFormatter;
|
||||
$this->appliedRectorCollector = $appliedRectorCollector;
|
||||
$this->exceptionCorrector = $exceptionCorrector;
|
||||
$this->removedAndAddedFilesCollector = $removedAndAddedFilesCollector;
|
||||
$this->removedNodesCollector = $removedNodesCollector;
|
||||
}
|
||||
|
||||
public function addError(Error $error): void
|
||||
@ -72,6 +80,11 @@ final class ErrorAndDiffCollector
|
||||
return $this->removedAndAddedFilesCollector->getAffectedFilesCount();
|
||||
}
|
||||
|
||||
public function getRemovedNodeCount(): int
|
||||
{
|
||||
return $this->removedNodesCollector->getCount();
|
||||
}
|
||||
|
||||
public function addFileDiff(SmartFileInfo $smartFileInfo, string $newContent, string $oldContent): void
|
||||
{
|
||||
if ($newContent === $oldContent) {
|
||||
|
@ -29,6 +29,7 @@ final class ConsoleOutputFormatter implements OutputFormatterInterface
|
||||
{
|
||||
$this->reportFileDiffs($errorAndDiffCollector->getFileDiffs());
|
||||
$this->reportErrors($errorAndDiffCollector->getErrors());
|
||||
$this->reportRemovedFilesAndNodes($errorAndDiffCollector);
|
||||
|
||||
if ($errorAndDiffCollector->getErrors() !== []) {
|
||||
return;
|
||||
@ -100,4 +101,17 @@ final class ConsoleOutputFormatter implements OutputFormatterInterface
|
||||
$this->symfonyStyle->error($message);
|
||||
}
|
||||
}
|
||||
|
||||
private function reportRemovedFilesAndNodes(ErrorAndDiffCollector $errorAndDiffCollector): void
|
||||
{
|
||||
if ($errorAndDiffCollector->getRemovedAndAddedFilesCount()) {
|
||||
$this->symfonyStyle->note(
|
||||
sprintf('%d files were added/removed', $errorAndDiffCollector->getRemovedAndAddedFilesCount())
|
||||
);
|
||||
}
|
||||
|
||||
if ($errorAndDiffCollector->getRemovedNodeCount()) {
|
||||
$this->symfonyStyle->note(sprintf('%d nodes were removed', $errorAndDiffCollector->getRemovedNodeCount()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -48,6 +48,7 @@ final class JsonOutputFormatter implements OutputFormatterInterface
|
||||
'totals' => [
|
||||
'changed_files' => count($fileDiffs),
|
||||
'removed_and_added_files_count' => $errorAndDiffCollector->getRemovedAndAddedFilesCount(),
|
||||
'removed_node_count' => $errorAndDiffCollector->getRemovedNodeCount(),
|
||||
],
|
||||
];
|
||||
|
||||
|
@ -51,7 +51,7 @@ abstract class AbstractRector extends NodeVisitorAbstract implements PhpRectorIn
|
||||
/**
|
||||
* @required
|
||||
*/
|
||||
public function setAbstractRectorDependencies(
|
||||
public function autowireAbstractRectorDependencies(
|
||||
SymfonyStyle $symfonyStyle,
|
||||
RemovedAndAddedFilesCollector $removedAndAddedFilesCollector,
|
||||
PhpVersionProvider $phpVersionProvider,
|
||||
|
@ -10,6 +10,7 @@ use Rector\PhpParser\Node\Commander\NodeAddingCommander;
|
||||
use Rector\PhpParser\Node\Commander\NodeRemovingCommander;
|
||||
use Rector\PhpParser\Node\Commander\PropertyAddingCommander;
|
||||
use Rector\PhpParser\Node\VariableInfo;
|
||||
use Rector\Reporting\RemovedNodesCollector;
|
||||
|
||||
/**
|
||||
* This could be part of @see AbstractRector, but decopuling to trait
|
||||
@ -39,19 +40,26 @@ trait NodeCommandersTrait
|
||||
*/
|
||||
private $useAddingCommander;
|
||||
|
||||
/**
|
||||
* @var RemovedNodesCollector
|
||||
*/
|
||||
private $removedNodesCollector;
|
||||
|
||||
/**
|
||||
* @required
|
||||
*/
|
||||
public function setRequiredCommanders(
|
||||
public function autowireNodeCommandersTrait(
|
||||
NodeRemovingCommander $nodeRemovingCommander,
|
||||
NodeAddingCommander $nodeAddingCommander,
|
||||
PropertyAddingCommander $propertyAddingCommander,
|
||||
UseAddingCommander $useAddingCommander
|
||||
UseAddingCommander $useAddingCommander,
|
||||
RemovedNodesCollector $removedNodesCollector
|
||||
): void {
|
||||
$this->nodeRemovingCommander = $nodeRemovingCommander;
|
||||
$this->nodeAddingCommander = $nodeAddingCommander;
|
||||
$this->propertyAddingCommander = $propertyAddingCommander;
|
||||
$this->useAddingCommander = $useAddingCommander;
|
||||
$this->removedNodesCollector = $removedNodesCollector;
|
||||
}
|
||||
|
||||
protected function addNodeAfterNode(Node $newNode, Node $positionNode): void
|
||||
@ -81,6 +89,8 @@ trait NodeCommandersTrait
|
||||
$this->nodeRemovingCommander->addNode($node);
|
||||
|
||||
$this->notifyNodeChangeFileInfo($node);
|
||||
|
||||
$this->removedNodesCollector->collect($node);
|
||||
}
|
||||
|
||||
protected function isNodeRemoved(Node $node): bool
|
||||
|
23
src/Reporting/RemovedNodesCollector.php
Normal file
23
src/Reporting/RemovedNodesCollector.php
Normal file
@ -0,0 +1,23 @@
|
||||
<?php declare(strict_types=1);
|
||||
|
||||
namespace Rector\Reporting;
|
||||
|
||||
use PhpParser\Node;
|
||||
|
||||
final class RemovedNodesCollector
|
||||
{
|
||||
/**
|
||||
* @var Node[]
|
||||
*/
|
||||
private $removedNodes = [];
|
||||
|
||||
public function collect(Node $node): void
|
||||
{
|
||||
$this->removedNodes[] = $node;
|
||||
}
|
||||
|
||||
public function getCount(): int
|
||||
{
|
||||
return count($this->removedNodes);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user