From 0084ebc6ced7830a555f0168aaeb20f603b55fc6 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 24 Jul 2023 01:28:43 +0200 Subject: [PATCH 1/4] remove progress bar on debug anyway --- src/Console/Style/EasyCodingStandardStyle.php | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/Console/Style/EasyCodingStandardStyle.php b/src/Console/Style/EasyCodingStandardStyle.php index 2f081c23351..bcd7ce7f61f 100644 --- a/src/Console/Style/EasyCodingStandardStyle.php +++ b/src/Console/Style/EasyCodingStandardStyle.php @@ -4,14 +4,11 @@ namespace Symplify\EasyCodingStandard\Console\Style; -use Symfony\Component\Console\Helper\ProgressBar; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\Console\Terminal; use Symplify\EasyCodingStandard\SniffRunner\ValueObject\Error\CodingStandardError; -use Symplify\PackageBuilder\Reflection\PrivatesAccessor; -use Symplify\PackageBuilder\Reflection\PrivatesCaller; final class EasyCodingStandardStyle extends SymfonyStyle { @@ -52,15 +49,6 @@ public function printErrors(array $codingStandardErrors): void } } - public function enableDebugProgressBar(): void - { - $privatesAccessor = new PrivatesAccessor(); - $progressBar = $privatesAccessor->getPrivatePropertyOfClass($this, 'progressBar', ProgressBar::class); - - $privatesCaller = new PrivatesCaller(); - $privatesCaller->callPrivateMethod($progressBar, 'setRealFormat', ['debug']); - } - private function separator(): void { $separator = str_repeat('-', $this->getTerminalWidth()); From d99d6a29e80e16d907a43d181b30b9b4298fc0cb Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 24 Jul 2023 01:29:19 +0200 Subject: [PATCH 2/4] make ECS Style factory easy --- src/Console/Style/EasyCodingStandardStyleFactory.php | 8 -------- src/Console/Style/SymfonyStyleFactory.php | 12 ------------ 2 files changed, 20 deletions(-) diff --git a/src/Console/Style/EasyCodingStandardStyleFactory.php b/src/Console/Style/EasyCodingStandardStyleFactory.php index dcfb7c43173..d72d95994a5 100644 --- a/src/Console/Style/EasyCodingStandardStyleFactory.php +++ b/src/Console/Style/EasyCodingStandardStyleFactory.php @@ -4,21 +4,16 @@ namespace Symplify\EasyCodingStandard\Console\Style; -use Symfony\Component\Console\Application; use Symfony\Component\Console\Input\ArgvInput; use Symfony\Component\Console\Output\ConsoleOutput; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Terminal; -use Symplify\PackageBuilder\Reflection\PrivatesCaller; final class EasyCodingStandardStyleFactory { - private readonly PrivatesCaller $privatesCaller; - public function __construct( private readonly Terminal $terminal ) { - $this->privatesCaller = new PrivatesCaller(); } /** @@ -29,9 +24,6 @@ public function create(): EasyCodingStandardStyle $argvInput = new ArgvInput(); $consoleOutput = new ConsoleOutput(); - // to configure all -v, -vv, -vvv options without memory-lock to Application run() arguments - $this->privatesCaller->callPrivateMethod(new Application(), 'configureIO', [$argvInput, $consoleOutput]); - // --debug is called if ($argvInput->hasParameterOption('--debug')) { $consoleOutput->setVerbosity(OutputInterface::VERBOSITY_DEBUG); diff --git a/src/Console/Style/SymfonyStyleFactory.php b/src/Console/Style/SymfonyStyleFactory.php index 03634741141..620f0bb0b9a 100644 --- a/src/Console/Style/SymfonyStyleFactory.php +++ b/src/Console/Style/SymfonyStyleFactory.php @@ -4,25 +4,16 @@ namespace Symplify\EasyCodingStandard\Console\Style; -use Symfony\Component\Console\Application; use Symfony\Component\Console\Input\ArgvInput; use Symfony\Component\Console\Output\ConsoleOutput; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; -use Symplify\PackageBuilder\Reflection\PrivatesCaller; /** * @api */ final class SymfonyStyleFactory { - private readonly PrivatesCaller $privatesCaller; - - public function __construct() - { - $this->privatesCaller = new PrivatesCaller(); - } - public function create(): SymfonyStyle { // to prevent missing argv indexes @@ -33,9 +24,6 @@ public function create(): SymfonyStyle $argvInput = new ArgvInput(); $consoleOutput = new ConsoleOutput(); - // to configure all -v, -vv, -vvv options without memory-lock to Application run() arguments - $this->privatesCaller->callPrivateMethod(new Application(), 'configureIO', [$argvInput, $consoleOutput]); - // --debug is called if ($argvInput->hasParameterOption('--debug')) { $consoleOutput->setVerbosity(OutputInterface::VERBOSITY_DEBUG); From 05b8377462d1a1a82f1970a15e709b5da71e942c Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 24 Jul 2023 01:32:51 +0200 Subject: [PATCH 3/4] add class-leak --- .github/workflows/code_analysis.yaml | 2 +- composer.json | 1 + packages/Caching/CacheFactory.php | 3 +++ packages/FixerRunner/WhitespacesFixerConfigFactory.php | 3 +++ src/Application/EasyCodingStandardApplication.php | 5 ----- src/Console/Style/EasyCodingStandardStyleFactory.php | 3 +++ .../EasyCodingStandardContainerFactory.php | 3 +++ src/ValueObject/Set/SetList.php | 3 +++ 8 files changed, 17 insertions(+), 6 deletions(-) diff --git a/.github/workflows/code_analysis.yaml b/.github/workflows/code_analysis.yaml index c7677f7f751..4de27f17d3a 100644 --- a/.github/workflows/code_analysis.yaml +++ b/.github/workflows/code_analysis.yaml @@ -42,7 +42,7 @@ jobs: - name: 'Check Active Classes' - run: vendor/bin/easy-ci check-active-class src packages --ansi + run: vendor/bin/class-leak check src packages --ansi name: ${{ matrix.actions.name }} runs-on: ubuntu-latest diff --git a/composer.json b/composer.json index 253f48af310..0827dfa0047 100644 --- a/composer.json +++ b/composer.json @@ -35,6 +35,7 @@ "rector/rector": "^0.17.1", "symplify/easy-ci": "^11.1", "symplify/phpstan-extensions": "^11.2", + "tomasvotruba/class-leak": "0.0.22.72", "tracy/tracy": "^2.9" }, "autoload": { diff --git a/packages/Caching/CacheFactory.php b/packages/Caching/CacheFactory.php index 24e776d5468..805cb53b689 100644 --- a/packages/Caching/CacheFactory.php +++ b/packages/Caching/CacheFactory.php @@ -9,6 +9,9 @@ use Symplify\EasyCodingStandard\DependencyInjection\SimpleParameterProvider; use Symplify\EasyCodingStandard\ValueObject\Option; +/** + * @api + */ final class CacheFactory { public function __construct( diff --git a/packages/FixerRunner/WhitespacesFixerConfigFactory.php b/packages/FixerRunner/WhitespacesFixerConfigFactory.php index d30b05548e0..b01e74cc043 100644 --- a/packages/FixerRunner/WhitespacesFixerConfigFactory.php +++ b/packages/FixerRunner/WhitespacesFixerConfigFactory.php @@ -10,6 +10,9 @@ use Symplify\EasyCodingStandard\FixerRunner\ValueObject\Spacing; use Symplify\EasyCodingStandard\ValueObject\Option; +/** + * @api + */ final class WhitespacesFixerConfigFactory { /** diff --git a/src/Application/EasyCodingStandardApplication.php b/src/Application/EasyCodingStandardApplication.php index 64ceabd6416..ccea3445a38 100644 --- a/src/Application/EasyCodingStandardApplication.php +++ b/src/Application/EasyCodingStandardApplication.php @@ -169,11 +169,6 @@ private function outputProgressBarAndDebugInfo(int $fileInfoCount, Configuration } $this->easyCodingStandardStyle->progressStart($fileInfoCount); - - // show more data on progress bar - if ($this->easyCodingStandardStyle->isVerbose()) { - $this->easyCodingStandardStyle->enableDebugProgressBar(); - } } /** diff --git a/src/Console/Style/EasyCodingStandardStyleFactory.php b/src/Console/Style/EasyCodingStandardStyleFactory.php index d72d95994a5..7789d8e311e 100644 --- a/src/Console/Style/EasyCodingStandardStyleFactory.php +++ b/src/Console/Style/EasyCodingStandardStyleFactory.php @@ -9,6 +9,9 @@ use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Terminal; +/** + * @api + */ final class EasyCodingStandardStyleFactory { public function __construct( diff --git a/src/DependencyInjection/EasyCodingStandardContainerFactory.php b/src/DependencyInjection/EasyCodingStandardContainerFactory.php index bfc28789393..2ebbde641b1 100644 --- a/src/DependencyInjection/EasyCodingStandardContainerFactory.php +++ b/src/DependencyInjection/EasyCodingStandardContainerFactory.php @@ -10,6 +10,9 @@ use Symplify\EasyCodingStandard\Caching\ChangedFilesDetector; use Symplify\EasyCodingStandard\Kernel\EasyCodingStandardKernel; +/** + * @api + */ final class EasyCodingStandardContainerFactory { public function createFromFromInput(ArgvInput $argvInput): ContainerInterface diff --git a/src/ValueObject/Set/SetList.php b/src/ValueObject/Set/SetList.php index 9ac1d965f1e..14bb4e5b697 100644 --- a/src/ValueObject/Set/SetList.php +++ b/src/ValueObject/Set/SetList.php @@ -4,6 +4,9 @@ namespace Symplify\EasyCodingStandard\ValueObject\Set; +/** + * @api + */ final class SetList { /** From 935ed4817452372e463dc664d567ce010d39991d Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 24 Jul 2023 01:40:16 +0200 Subject: [PATCH 4/4] make warning escalation part of core --- .../Application/SniffFileProcessor.php | 19 +++++++++++++++++-- src/ValueObject/Configuration.php | 1 - 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/SniffRunner/Application/SniffFileProcessor.php b/packages/SniffRunner/Application/SniffFileProcessor.php index 3771175ef4e..8c415bbe1e3 100644 --- a/packages/SniffRunner/Application/SniffFileProcessor.php +++ b/packages/SniffRunner/Application/SniffFileProcessor.php @@ -7,6 +7,11 @@ use Nette\Utils\FileSystem; use PHP_CodeSniffer\Fixer; use PHP_CodeSniffer\Sniffs\Sniff; +use PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis\AssignmentInConditionSniff; +use PHP_CodeSniffer\Standards\Generic\Sniffs\CodeAnalysis\UnusedFunctionParameterSniff; +use PHP_CodeSniffer\Standards\PSR2\Sniffs\Classes\PropertyDeclarationSniff; +use PHP_CodeSniffer\Standards\PSR2\Sniffs\Methods\MethodDeclarationSniff; +use PHP_CodeSniffer\Standards\Squiz\Sniffs\PHP\CommentedOutCodeSniff; use PHP_CodeSniffer\Util\Tokens; use PhpCsFixer\Differ\DifferInterface; use Symfony\Component\DependencyInjection\Argument\RewindableGenerator; @@ -31,6 +36,17 @@ final class SniffFileProcessor implements FileProcessorInterface */ private array $sniffs = []; + /** + * @var array + */ + private const ESCALATE_WARNINGS_SNIFF = [ + AssignmentInConditionSniff::class, + PropertyDeclarationSniff::class, + MethodDeclarationSniff::class, + CommentedOutCodeSniff::class, + UnusedFunctionParameterSniff::class, + ]; + /** * @var array */ @@ -76,8 +92,7 @@ public function processFile(string $filePath, Configuration $configuration): arr $errorsAndDiffs = []; $file = $this->fileFactory->createFromFile($filePath); - $reportSniffClassesWarnings = $configuration->getReportSniffClassesWarnings(); - $this->fixFile($file, $this->fixer, $filePath, $this->tokenListeners, $reportSniffClassesWarnings); + $this->fixFile($file, $this->fixer, $filePath, $this->tokenListeners, self::ESCALATE_WARNINGS_SNIFF); // add coding standard errors $codingStandardErrors = $this->sniffMetadataCollector->getCodingStandardErrors(); diff --git a/src/ValueObject/Configuration.php b/src/ValueObject/Configuration.php index 205d221657d..fea00b4cef6 100644 --- a/src/ValueObject/Configuration.php +++ b/src/ValueObject/Configuration.php @@ -21,7 +21,6 @@ public function __construct( private readonly array $sources = [], private readonly string $outputFormat = ConsoleOutputFormatter::NAME, private readonly bool $isParallel = false, - private readonly array $reportSniffClassesWarnings = [], private readonly ?string $config = null, private readonly string | null $parallelPort = null, private readonly string | null $parallelIdentifier = null,