From 488072b0337b2c17a631a4b0e1cd03207a9e5081 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20B=C3=B6sing?= <2189546+boesing@users.noreply.github.com> Date: Thu, 26 Sep 2024 17:31:38 +0200 Subject: [PATCH] refactor: move some tools to dedicated files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Due to the new PHPStan tool, we exceeded the line-length limit of 100 lines per file. Signed-off-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com> --- src/tools.ts | 98 ++++++----------------------- src/tools/codeception.ts | 9 +++ src/tools/codesniffer.ts | 10 +++ src/tools/composerRequireChecker.ts | 9 +++ src/tools/infection.ts | 21 +++++++ src/tools/phpCsFixer.ts | 9 +++ src/tools/phpbench.ts | 9 +++ src/tools/phpstan.ts | 9 +++ src/tools/phpunit.ts | 10 +++ src/tools/psalm.ts | 10 +++ 10 files changed, 115 insertions(+), 79 deletions(-) create mode 100644 src/tools/codeception.ts create mode 100644 src/tools/codesniffer.ts create mode 100644 src/tools/composerRequireChecker.ts create mode 100644 src/tools/infection.ts create mode 100644 src/tools/phpCsFixer.ts create mode 100644 src/tools/phpbench.ts create mode 100644 src/tools/phpstan.ts create mode 100644 src/tools/phpunit.ts create mode 100644 src/tools/psalm.ts diff --git a/src/tools.ts b/src/tools.ts index b2f8d69..8d00e2f 100644 --- a/src/tools.ts +++ b/src/tools.ts @@ -1,8 +1,15 @@ import fs, {PathLike} from 'fs'; import {Config} from './config/app'; -import {ComposerJson} from './config/composer'; -import parseJsonFile from './json'; import {CONTAINER_DEFAULT_PHP_VERSION} from './config/php'; +import {PHPUnitTool} from './tools/phpunit'; +import {InfectionTool} from './tools/infection'; +import {PhpCodeSnifferTool} from './tools/codesniffer'; +import {PsalmTool} from './tools/psalm'; +import {ComposerRequireCheckerTool} from './tools/composerRequireChecker'; +import {PhpBenchTool} from './tools/phpbench'; +import {CodeceptionTool} from './tools/codeception'; +import {PhpCsFixerTool} from './tools/phpCsFixer'; +import {PHPStanTool} from './tools/phpstan'; export enum ToolExecutionType { /** @@ -18,7 +25,7 @@ export enum ToolExecutionType { STATIC = 'static', } -enum ToolType { +export enum ToolType { LINTER = 'linter', CODE_CHECK = 'code_check', } @@ -36,16 +43,6 @@ export type ToolRunningContainerDefaultPhpVersion = Tool & { php: typeof CONTAINER_DEFAULT_PHP_VERSION, } -function detectInfectionCommand(): string { - const composerJson: ComposerJson = parseJsonFile('composer.json', true) as ComposerJson; - - if (composerJson['require-dev']?.['roave/infection-static-analysis-plugin'] !== undefined) { - return 'phpdbg -qrr ./vendor/bin/roave-infection-static-analysis-plugin'; - } - - return 'phpdbg -qrr ./vendor/bin/infection'; -} - function backwardCompatibilityCheckTool(config: Config): ToolRunningContainerDefaultPhpVersion | null { if (!config.backwardCompatibilityCheck) { return null; @@ -95,72 +92,15 @@ export default function createTools(config: Config): Array { filesToCheck : [ 'README.md' ], toolType : ToolType.LINTER, }, - { - executionType : ToolExecutionType.MATRIX, - name : 'PHPUnit', - command : './vendor/bin/phpunit', - filesToCheck : [ 'phpunit.xml.dist', 'phpunit.xml' ], - toolType : ToolType.CODE_CHECK, - lintConfigCommand : 'xmllint --schema vendor/phpunit/phpunit/phpunit.xsd', - }, - { - executionType : ToolExecutionType.STATIC, - name : 'Infection', - command : detectInfectionCommand(), - filesToCheck : [ 'infection.json', 'infection.json.dist' ], - toolType : ToolType.CODE_CHECK, - }, - { - executionType : ToolExecutionType.STATIC, - name : 'PHPCodeSniffer', - command : './vendor/bin/phpcs -q --report=checkstyle | cs2pr', - filesToCheck : [ 'phpcs.xml', 'phpcs.xml.dist' ], - toolType : ToolType.CODE_CHECK, - lintConfigCommand : 'xmllint --schema vendor/squizlabs/php_codesniffer/phpcs.xsd', - }, - { - executionType : ToolExecutionType.STATIC, - name : 'Psalm', - command : './vendor/bin/psalm --shepherd --stats --output-format=github --no-cache', - filesToCheck : [ 'psalm.xml.dist', 'psalm.xml' ], - toolType : ToolType.CODE_CHECK, - lintConfigCommand : 'xmllint --schema vendor/vimeo/psalm/config.xsd', - }, - { - executionType : ToolExecutionType.STATIC, - name : 'Composer Require Checker', - command : './vendor/bin/composer-require-checker check --config-file=composer-require-checker.json -n -v composer.json', - filesToCheck : [ 'composer-require-checker.json' ], - toolType : ToolType.CODE_CHECK, - }, - { - executionType : ToolExecutionType.STATIC, - name : 'PHPBench', - command : './vendor/bin/phpbench run --revs=2 --iterations=2 --report=aggregate', - filesToCheck : [ 'phpbench.json' ], - toolType : ToolType.CODE_CHECK, - }, - { - executionType : ToolExecutionType.STATIC, - name : 'Codeception', - command : './vendor/bin/codecept run', - filesToCheck : [ 'codeception.yml.dist', 'codeception.yml' ], - toolType : ToolType.CODE_CHECK, - }, - { - executionType : ToolExecutionType.STATIC, - name : 'PHP CS Fixer', - command : './vendor/bin/php-cs-fixer fix -v --diff --dry-run', - filesToCheck : [ '.php-cs-fixer.php', '.php-cs-fixer.dist.php' ], - toolType : ToolType.CODE_CHECK, - }, - { - executionType : ToolExecutionType.STATIC, - name : 'PHPStan', - command : './vendor/bin/phpstan analyse --error-format=github --ansi --no-progress', - filesToCheck : [ 'phpstan.neon', 'phpstan.neon.dist', 'phpstan.dist.neon' ], - toolType : ToolType.CODE_CHECK, - }, + PHPUnitTool, + InfectionTool, + PhpCodeSnifferTool, + PsalmTool, + ComposerRequireCheckerTool, + PhpBenchTool, + CodeceptionTool, + PhpCsFixerTool, + PHPStanTool, backwardCompatibilityCheckTool(config), ].filter((tool) => tool !== null) as Tool[]; diff --git a/src/tools/codeception.ts b/src/tools/codeception.ts new file mode 100644 index 0000000..8649442 --- /dev/null +++ b/src/tools/codeception.ts @@ -0,0 +1,9 @@ +import {ToolExecutionType, ToolType} from '../tools'; + +export const CodeceptionTool = { + executionType : ToolExecutionType.STATIC, + name : 'Codeception', + command : './vendor/bin/codecept run', + filesToCheck : [ 'codeception.yml.dist', 'codeception.yml' ], + toolType : ToolType.CODE_CHECK, +}; diff --git a/src/tools/codesniffer.ts b/src/tools/codesniffer.ts new file mode 100644 index 0000000..6386415 --- /dev/null +++ b/src/tools/codesniffer.ts @@ -0,0 +1,10 @@ +import {ToolExecutionType, ToolType} from '../tools'; + +export const PhpCodeSnifferTool = { + executionType : ToolExecutionType.STATIC, + name : 'PHPCodeSniffer', + command : './vendor/bin/phpcs -q --report=checkstyle | cs2pr', + filesToCheck : [ 'phpcs.xml', 'phpcs.xml.dist' ], + toolType : ToolType.CODE_CHECK, + lintConfigCommand : 'xmllint --schema vendor/squizlabs/php_codesniffer/phpcs.xsd', +}; diff --git a/src/tools/composerRequireChecker.ts b/src/tools/composerRequireChecker.ts new file mode 100644 index 0000000..f813548 --- /dev/null +++ b/src/tools/composerRequireChecker.ts @@ -0,0 +1,9 @@ +import {ToolExecutionType, ToolType} from '../tools'; + +export const ComposerRequireCheckerTool = { + executionType : ToolExecutionType.STATIC, + name : 'Composer Require Checker', + command : './vendor/bin/composer-require-checker check --config-file=composer-require-checker.json -n -v composer.json', + filesToCheck : [ 'composer-require-checker.json' ], + toolType : ToolType.CODE_CHECK, +}; diff --git a/src/tools/infection.ts b/src/tools/infection.ts new file mode 100644 index 0000000..4f639db --- /dev/null +++ b/src/tools/infection.ts @@ -0,0 +1,21 @@ +import {ToolExecutionType, ToolType} from '../tools'; +import {ComposerJson} from '../config/composer'; +import parseJsonFile from '../json'; + +export const InfectionTool = { + executionType : ToolExecutionType.STATIC, + name : 'Infection', + command : detectInfectionCommand(), + filesToCheck : [ 'infection.json', 'infection.json.dist' ], + toolType : ToolType.CODE_CHECK, +}; + +function detectInfectionCommand(): string { + const composerJson: ComposerJson = parseJsonFile('composer.json', true) as ComposerJson; + + if (composerJson['require-dev']?.['roave/infection-static-analysis-plugin'] !== undefined) { + return 'phpdbg -qrr ./vendor/bin/roave-infection-static-analysis-plugin'; + } + + return 'phpdbg -qrr ./vendor/bin/infection'; +} diff --git a/src/tools/phpCsFixer.ts b/src/tools/phpCsFixer.ts new file mode 100644 index 0000000..b0af44d --- /dev/null +++ b/src/tools/phpCsFixer.ts @@ -0,0 +1,9 @@ +import {ToolExecutionType, ToolType} from '../tools'; + +export const PhpCsFixerTool = { + executionType : ToolExecutionType.STATIC, + name : 'PHP CS Fixer', + command : './vendor/bin/php-cs-fixer fix -v --diff --dry-run', + filesToCheck : [ '.php-cs-fixer.php', '.php-cs-fixer.dist.php' ], + toolType : ToolType.CODE_CHECK, +}; diff --git a/src/tools/phpbench.ts b/src/tools/phpbench.ts new file mode 100644 index 0000000..e344730 --- /dev/null +++ b/src/tools/phpbench.ts @@ -0,0 +1,9 @@ +import {ToolExecutionType, ToolType} from '../tools'; + +export const PhpBenchTool = { + executionType : ToolExecutionType.STATIC, + name : 'PHPBench', + command : './vendor/bin/phpbench run --revs=2 --iterations=2 --report=aggregate', + filesToCheck : [ 'phpbench.json' ], + toolType : ToolType.CODE_CHECK, +}; diff --git a/src/tools/phpstan.ts b/src/tools/phpstan.ts new file mode 100644 index 0000000..84c021c --- /dev/null +++ b/src/tools/phpstan.ts @@ -0,0 +1,9 @@ +import {ToolExecutionType, ToolType} from '../tools'; + +export const PHPStanTool = { + executionType : ToolExecutionType.STATIC, + name : 'PHPStan', + command : './vendor/bin/phpstan analyse --error-format=github --ansi --no-progress', + filesToCheck : [ 'phpstan.neon', 'phpstan.neon.dist', 'phpstan.dist.neon' ], + toolType : ToolType.CODE_CHECK, +}; diff --git a/src/tools/phpunit.ts b/src/tools/phpunit.ts new file mode 100644 index 0000000..ce996a3 --- /dev/null +++ b/src/tools/phpunit.ts @@ -0,0 +1,10 @@ +import {ToolExecutionType, ToolType} from '../tools'; + +export const PHPUnitTool = { + executionType : ToolExecutionType.MATRIX, + name : 'PHPUnit', + command : './vendor/bin/phpunit', + filesToCheck : [ 'phpunit.xml.dist', 'phpunit.xml' ], + toolType : ToolType.CODE_CHECK, + lintConfigCommand : 'xmllint --schema vendor/phpunit/phpunit/phpunit.xsd', +}; diff --git a/src/tools/psalm.ts b/src/tools/psalm.ts new file mode 100644 index 0000000..bd872c6 --- /dev/null +++ b/src/tools/psalm.ts @@ -0,0 +1,10 @@ +import {ToolExecutionType, ToolType} from '../tools'; + +export const PsalmTool = { + executionType : ToolExecutionType.STATIC, + name : 'Psalm', + command : './vendor/bin/psalm --shepherd --stats --output-format=github --no-cache', + filesToCheck : [ 'psalm.xml.dist', 'psalm.xml' ], + toolType : ToolType.CODE_CHECK, + lintConfigCommand : 'xmllint --schema vendor/vimeo/psalm/config.xsd', +};