diff --git a/.github/workflows/testcore11.yml b/.github/workflows/testcore11.yml new file mode 100644 index 0000000..a835de1 --- /dev/null +++ b/.github/workflows/testcore11.yml @@ -0,0 +1,99 @@ +name: tests core 11 + +on: + pull_request: + workflow_dispatch: + +jobs: + code-quality: + name: "code quality with core v11" + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + php-version: [ '7.4'] + steps: + - name: "Checkout" + uses: actions/checkout@v4 + + - name: "Prepare dependencies for TYPO3 v11" + run: "Build/Scripts/runTests.sh -t 11 -p ${{ matrix.php-version }} -s composerUpdate" + +# Disabled, as latest installable version of TypoScript linter does not support the TYPO3 backend layout +# override syntax in PageTSConfig files. +# @see https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/12.0/Feature-96812-OverrideBackendTemplatesWithTSconfig.html +# - name: "Run TypoScript lint" +# run: "Build/Scripts/runTests.sh -t 11 -p ${{ matrix.php-version }} -s lintTypoScript" + + - name: "Run PHP lint" + run: "Build/Scripts/runTests.sh -t 11 -p ${{ matrix.php-version }} -s lintPhp" + + - name: "Validate CGL" + run: "Build/Scripts/runTests.sh -t 11 -p ${{ matrix.php-version }} -s cgl" + + - name: "Ensure tests methods do not start with \"test\"" + run: "Build/Scripts/runTests.sh -t 11 -p ${{ matrix.php-version }} -s checkTestMethodsPrefix" + + - name: "Ensure UTF-8 files do not contain BOM" + run: "Build/Scripts/runTests.sh -t 11 -p ${{ matrix.php-version }} -s checkBom" + + - name: "Test .rst files for integrity" + run: "Build/Scripts/runTests.sh -t 11 -p ${{ matrix.php-version }} -s checkRst" + + - name: "Find duplicate exception codes" + run: "Build/Scripts/runTests.sh -t 11 -p ${{ matrix.php-version }} -s checkExceptionCodes" + + - name: "Run PHPStan" + run: "Build/Scripts/runTests.sh -t 11 -p ${{ matrix.php-version }} -s phpstan" + + typoscript: + name: "Linting TypoScript and TSConfig files" + runs-on: ubuntu-22.04 + steps: + - name: "Checkout" + uses: actions/checkout@v4 + + - name: "Prepare dependencies for TYPO3 v11" + run: "Build/Scripts/runTests.sh -t 11 -p 8.1 -s composerUpdate" + + + testsuite: + name: all tests with core v11 + runs-on: ubuntu-22.04 + needs: + - code-quality + - typoscript + strategy: + fail-fast: false + matrix: + php-version: [ '7.4', '8.0', '8.1', '8.2', '8.3' ] + steps: + - name: "Checkout" + uses: actions/checkout@v4 + + - name: "Prepare dependencies for TYPO3 v11" + run: "Build/Scripts/runTests.sh -t 11 -p ${{ matrix.php-version }} -s composerUpdate" + + - name: "Unit" + run: "Build/Scripts/runTests.sh -t 11 -p ${{ matrix.php-version }} -s unit" + + - name: "Functional SQLite" + run: "Build/Scripts/runTests.sh -t 11 -p ${{ matrix.php-version }} -s functional -d sqlite" + + - name: "Functional MariaDB 10.5 mysqli" + run: "Build/Scripts/runTests.sh -t 11 -p ${{ matrix.php-version }} -s functional -d mariadb -a mysqli" + + - name: "Functional MariaDB 10.5 pdo_mysql" + run: "Build/Scripts/runTests.sh -t 11 -p ${{ matrix.php-version }} -s functional -d mariadb -a pdo_mysql" + + - name: "Functional MySQL 8.0 mysqli" + run: "Build/Scripts/runTests.sh -t 11 -p ${{ matrix.php-version }} -s functional -d mariadb -a mysqli" + + - name: "Functional MySQL 8.0 pdo_mysql" + run: "Build/Scripts/runTests.sh -t 11 -p ${{ matrix.php-version }} -s functional -d mariadb -a pdo_mysql" + + - name: "Functional PostgresSQL 10" + # v11 postgres functional disabled with PHP 8.2 since https://github.com/doctrine/dbal/commit/73eec6d882b99e1e2d2d937accca89c1bd91b2d7 + # is not fixed in doctrine core v11 doctrine 2.13.9 + if: ${{ matrix.php <= '8.1' }} + run: "Build/Scripts/runTests.sh -t 11 -p ${{ matrix.php-version }} -s functional -d postgres" diff --git a/Build/php-cs-fixer/php-cs-rules.php b/Build/php-cs-fixer/php-cs-rules.php new file mode 100644 index 0000000..1d62eed --- /dev/null +++ b/Build/php-cs-fixer/php-cs-rules.php @@ -0,0 +1,110 @@ + Build/Scripts/runTests.sh -s cgl + * + * Fix your current patch: + * > Build/Scripts/runTests.sh -s cglGit + */ +if (PHP_SAPI !== 'cli') { + die('This script supports command line usage only. Please check your command.'); +} + +// Return a Code Sniffing configuration using +// all sniffers needed for PER +// and additionally: +// - Remove leading slashes in use clauses. +// - PHP single-line arrays should not have trailing comma. +// - Single-line whitespace before closing semicolon are prohibited. +// - Remove unused use statements in the PHP source code +// - Ensure Concatenation to have at least one whitespace around +// - Remove trailing whitespace at the end of blank lines. +return (new \PhpCsFixer\Config()) + ->setFinder( + (new PhpCsFixer\Finder()) + ->ignoreVCSIgnored(true) + ->in(realpath(__DIR__ . '/../../')) + ) + ->setRiskyAllowed(true) + ->setRules([ + '@DoctrineAnnotation' => true, + // @todo: Switch to @PER-CS2.0 once php-cs-fixer's todo list is done: https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/7247 + '@PER-CS1.0' => true, + 'array_indentation' => true, + 'array_syntax' => ['syntax' => 'short'], + 'cast_spaces' => ['space' => 'none'], + // @todo: Can be dropped once we enable @PER-CS2.0 + 'concat_space' => ['spacing' => 'one'], + 'declare_equal_normalize' => ['space' => 'none'], + 'declare_parentheses' => true, + 'dir_constant' => true, + // @todo: Can be dropped once we enable @PER-CS2.0 + 'function_declaration' => [ + 'closure_fn_spacing' => 'none', + ], + 'function_to_constant' => ['functions' => ['get_called_class', 'get_class', 'get_class_this', 'php_sapi_name', 'phpversion', 'pi']], + 'type_declaration_spaces' => true, + 'global_namespace_import' => ['import_classes' => false, 'import_constants' => false, 'import_functions' => false], + 'list_syntax' => ['syntax' => 'short'], + // @todo: Can be dropped once we enable @PER-CS2.0 + 'method_argument_space' => true, + 'modernize_strpos' => true, + 'modernize_types_casting' => true, + 'native_function_casing' => true, + 'no_alias_functions' => true, + 'no_blank_lines_after_phpdoc' => true, + 'no_empty_phpdoc' => true, + 'no_empty_statement' => true, + 'no_extra_blank_lines' => true, + 'no_leading_namespace_whitespace' => true, + 'no_null_property_initialization' => true, + 'no_short_bool_cast' => true, + 'no_singleline_whitespace_before_semicolons' => true, + 'no_superfluous_elseif' => true, + 'no_trailing_comma_in_singleline' => true, + 'no_unneeded_control_parentheses' => true, + 'no_unused_imports' => true, + 'no_useless_else' => true, + 'no_useless_nullsafe_operator' => true, + 'ordered_imports' => ['imports_order' => ['class', 'function', 'const'], 'sort_algorithm' => 'alpha'], + 'php_unit_construct' => ['assertions' => ['assertEquals', 'assertSame', 'assertNotEquals', 'assertNotSame']], + 'php_unit_mock_short_will_return' => true, + 'php_unit_test_case_static_method_calls' => ['call_type' => 'self'], + 'phpdoc_no_access' => true, + 'phpdoc_no_empty_return' => true, + 'phpdoc_no_package' => true, + 'phpdoc_scalar' => true, + 'phpdoc_trim' => true, + 'phpdoc_types' => true, + 'phpdoc_types_order' => ['null_adjustment' => 'always_last', 'sort_algorithm' => 'none'], + 'return_type_declaration' => ['space_before' => 'none'], + 'single_quote' => true, + 'single_space_around_construct' => true, + 'single_line_comment_style' => ['comment_types' => ['hash']], + // @todo: Can be dropped once we enable @PER-CS2.0 + 'single_line_empty_body' => true, + 'trailing_comma_in_multiline' => ['elements' => ['arrays']], + 'whitespace_after_comma_in_array' => ['ensure_single_space' => true], + 'yoda_style' => ['equal' => false, 'identical' => false, 'less_and_greater' => false], + ]); diff --git a/Build/phpstan/phpstan-baseline.neon b/Build/phpstan/phpstan-baseline.neon index aab4991..2004825 100644 --- a/Build/phpstan/phpstan-baseline.neon +++ b/Build/phpstan/phpstan-baseline.neon @@ -1,2 +1,1086 @@ parameters: - ignoreErrors: [] + ignoreErrors: + - + message: "#^Call to an undefined method object\\:\\:isSimplePoll\\(\\)\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Call to an undefined method object\\:\\:setAuthor\\(\\)\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Cannot access property \\$data on TYPO3\\\\CMS\\\\Frontend\\\\ContentObject\\\\ContentObjectRenderer\\|null\\.$#" + count: 2 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Cannot call method getArgument\\(\\) on TYPO3\\\\CMS\\\\Extbase\\\\Mvc\\\\Request\\|null\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Cannot call method getPropertyValidators\\(\\) on class\\-string\\|object\\.$#" + count: 2 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Cannot call method getUid\\(\\) on FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\|null\\.$#" + count: 2 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Cannot call method getValidators\\(\\) on class\\-string\\|object\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Controller\\\\PollController\\:\\:createAction\\(\\) has no return type specified\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Controller\\\\PollController\\:\\:getContentObjectRow\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Controller\\\\PollController\\:\\:injectPersistenceManager\\(\\) has no return type specified\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Offset 'optionValues' does not exist on array\\|string\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Parameter \\#1 \\$className of static method TYPO3\\\\CMS\\\\Core\\\\Utility\\\\GeneralUtility\\:\\:makeInstance\\(\\) expects class\\-string\\, string given\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Parameter \\#1 \\$poll of class FGTCLB\\\\T3oodle\\\\Event\\\\NewPollEvent constructor expects FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll, object given\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Parameter \\#1 \\$poll of method FGTCLB\\\\T3oodle\\\\Domain\\\\Repository\\\\PollRepository\\:\\:getPollTypeByUid\\(\\) expects int, int\\|string given\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Parameter \\#1 \\$poll of method FGTCLB\\\\T3oodle\\\\Domain\\\\Repository\\\\VoteRepository\\:\\:findOneByPollAndParticipantIdent\\(\\) expects FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll, FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\|null given\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Parameter \\#1 \\$validator of method TYPO3\\\\CMS\\\\Extbase\\\\Validation\\\\Validator\\\\AbstractCompositeValidator\\:\\:removeValidator\\(\\) expects TYPO3\\\\CMS\\\\Extbase\\\\Validation\\\\Validator\\\\ValidatorInterface, object given\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Parameter \\#4 \\$view of class FGTCLB\\\\T3oodle\\\\Event\\\\EditSuggestionEvent constructor expects TYPO3Fluid\\\\Fluid\\\\View\\\\ViewInterface, TYPO3\\\\CMS\\\\Extbase\\\\Mvc\\\\View\\\\ViewInterface given\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Parameter \\#4 \\$view of class FGTCLB\\\\T3oodle\\\\Event\\\\NewSuggestionEvent constructor expects TYPO3Fluid\\\\Fluid\\\\View\\\\ViewInterface, TYPO3\\\\CMS\\\\Extbase\\\\Mvc\\\\View\\\\ViewInterface given\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Parameter \\#5 \\$view of class FGTCLB\\\\T3oodle\\\\Event\\\\NewPollEvent constructor expects TYPO3Fluid\\\\Fluid\\\\View\\\\ViewInterface, TYPO3\\\\CMS\\\\Extbase\\\\Mvc\\\\View\\\\ViewInterface given\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Controller\\\\PollController\\:\\:\\$currentUserIdent \\(string\\) does not accept string\\|null\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Strict comparison using \\=\\=\\= between TYPO3\\\\CMS\\\\Extbase\\\\Validation\\\\Validator\\\\ValidatorInterface and null will always evaluate to false\\.$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Unable to resolve the template type T in call to method static method TYPO3\\\\CMS\\\\Core\\\\Utility\\\\GeneralUtility\\:\\:makeInstance\\(\\)$#" + count: 1 + path: ../../Classes/Controller/PollController.php + + - + message: "#^Cannot call method fetch\\(\\) on Doctrine\\\\DBAL\\\\Result\\|int\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Dto/SuggestionDto.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Dto\\\\SuggestionDto\\:\\:getPoll\\(\\) should return FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll but returns FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\|null\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Dto/SuggestionDto.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Dto\\\\SuggestionDto\\:\\:getUserRow\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Dto/SuggestionDto.php + + - + message: "#^Offset mixed does not exist on array\\|null\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Dto/SuggestionDto.php + + - + message: "#^Parameter \\#1 \\$pid of method TYPO3\\\\CMS\\\\Extbase\\\\DomainObject\\\\AbstractDomainObject\\:\\:setPid\\(\\) expects int, int\\|null given\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Dto/SuggestionDto.php + + - + message: "#^Parameter \\#1 \\$uid of method FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Dto\\\\SuggestionDto\\:\\:getUserRow\\(\\) expects int, int\\|null given\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Dto/SuggestionDto.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Dto\\\\SuggestionDto\\:\\:\\$creator \\(TYPO3\\\\CMS\\\\Extbase\\\\Domain\\\\Model\\\\FrontendUser\\) does not accept TYPO3\\\\CMS\\\\Extbase\\\\Domain\\\\Model\\\\FrontendUser\\|null\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Dto/SuggestionDto.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Dto\\\\SuggestionDto\\:\\:\\$typoscriptSettings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Dto/SuggestionDto.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Dto\\\\SuggestionDto\\:\\:\\$userRowCache type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Dto/SuggestionDto.php + + - + message: "#^Cannot call method fetch\\(\\) on Doctrine\\\\DBAL\\\\Result\\|int\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Option.php + + - + message: "#^Cannot call method getSettingMaxVotesPerOption\\(\\) on FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\|null\\.$#" + count: 2 + path: ../../Classes/Domain/Model/Option.php + + - + message: "#^Cannot call method getVotes\\(\\) on FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\|null\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Option.php + + - + message: "#^Cannot call method isSettingTristateCheckbox\\(\\) on FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\|null\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Option.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Option\\:\\:getCheckboxStates\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Option.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Option\\:\\:getUserRow\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Option.php + + - + message: "#^Offset mixed does not exist on array\\|null\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Option.php + + - + message: "#^Parameter \\#1 \\$uid of method FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Option\\:\\:getUserRow\\(\\) expects int, int\\|null given\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Option.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Option\\:\\:\\$typoscriptSettings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Option.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Option\\:\\:\\$userRowCache type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Option.php + + - + message: "#^Cannot call method fetch\\(\\) on Doctrine\\\\DBAL\\\\Result\\|int\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Poll.php + + - + message: "#^Cannot call method getUid\\(\\) on FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Option\\|null\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Poll.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\:\\:getAvailableOptions\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Poll.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\:\\:getOptionTotals\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Poll.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\:\\:getOptions\\(\\) return type with generic class TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\ObjectStorage does not specify its types\\: TEntity$#" + count: 1 + path: ../../Classes/Domain/Model/Poll.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\:\\:getUserRow\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Poll.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\:\\:getVotes\\(\\) return type with generic class TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\ObjectStorage does not specify its types\\: TEntity$#" + count: 1 + path: ../../Classes/Domain/Model/Poll.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\:\\:setOptions\\(\\) has parameter \\$options with generic class TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\ObjectStorage but does not specify its types\\: TEntity$#" + count: 1 + path: ../../Classes/Domain/Model/Poll.php + + - + message: "#^Offset mixed does not exist on array\\|null\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Poll.php + + - + message: "#^PHPDoc tag @var for variable \\$options contains generic class TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\ObjectStorage but does not specify its types\\: TEntity$#" + count: 1 + path: ../../Classes/Domain/Model/Poll.php + + - + message: "#^Parameter \\#1 \\$key of function array_key_exists expects int\\|string, int\\|null given\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Poll.php + + - + message: "#^Parameter \\#1 \\$uid of method FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\:\\:getUserRow\\(\\) expects int, int\\|null given\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Poll.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\:\\:\\$availableOptionsCache type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Poll.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\:\\:\\$typoscriptSettings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Poll.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\:\\:\\$userRowCache type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Poll.php + + - + message: "#^Cannot call method fetch\\(\\) on Doctrine\\\\DBAL\\\\Result\\|int\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Vote.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Vote\\:\\:getOptionValues\\(\\) return type with generic class TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\ObjectStorage does not specify its types\\: TEntity$#" + count: 1 + path: ../../Classes/Domain/Model/Vote.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Vote\\:\\:getUserRow\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Vote.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Vote\\:\\:setOptionValues\\(\\) has parameter \\$optionValues with generic class TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\ObjectStorage but does not specify its types\\: TEntity$#" + count: 1 + path: ../../Classes/Domain/Model/Vote.php + + - + message: "#^Offset mixed does not exist on array\\|null\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Vote.php + + - + message: "#^Parameter \\#1 \\$uid of method FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Vote\\:\\:getUserRow\\(\\) expects int, int\\|null given\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Vote.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Vote\\:\\:\\$typoscriptSettings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Vote.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Vote\\:\\:\\$userRowCache type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Model/Vote.php + + - + message: "#^Cannot call method getStatus\\(\\) on FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\|null\\.$#" + count: 1 + path: ../../Classes/Domain/Permission/PollPermission.php + + - + message: "#^Cannot call method isFinished\\(\\) on FGTCLB\\\\T3oodle\\\\Domain\\\\Model\\\\Poll\\|null\\.$#" + count: 1 + path: ../../Classes/Domain/Permission/PollPermission.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Permission\\\\PollPermission\\:\\:__construct\\(\\) has parameter \\$controllerSettings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Permission/PollPermission.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Domain\\\\Permission\\\\PollPermission\\:\\:\\$controllerSettings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Permission/PollPermission.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Domain\\\\Permission\\\\PollPermission\\:\\:\\$currentUserIdent \\(string\\) does not accept string\\|null\\.$#" + count: 1 + path: ../../Classes/Domain/Permission/PollPermission.php + + - + message: "#^Class FGTCLB\\\\T3oodle\\\\Domain\\\\Repository\\\\OptionRepository extends generic class TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\Repository but does not specify its types\\: TEntityClass$#" + count: 1 + path: ../../Classes/Domain/Repository/OptionRepository.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Repository\\\\OptionRepository\\:\\:findByPollAndCreatorIdent\\(\\) return type with generic interface TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\QueryResultInterface does not specify its types\\: ModelType$#" + count: 1 + path: ../../Classes/Domain/Repository/OptionRepository.php + + - + message: "#^Cannot call method fetch\\(\\) on Doctrine\\\\DBAL\\\\Result\\|int\\.$#" + count: 1 + path: ../../Classes/Domain/Repository/PollRepository.php + + - + message: "#^Class FGTCLB\\\\T3oodle\\\\Domain\\\\Repository\\\\PollRepository extends generic class TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\Repository but does not specify its types\\: TEntityClass$#" + count: 1 + path: ../../Classes/Domain/Repository/PollRepository.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Repository\\\\PollRepository\\:\\:findPolls\\(\\) return type with generic interface TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\QueryResultInterface does not specify its types\\: ModelType$#" + count: 1 + path: ../../Classes/Domain/Repository/PollRepository.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Repository\\\\PollRepository\\:\\:setControllerSettings\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Repository/PollRepository.php + + - + message: "#^PHPDoc type array\\ of property FGTCLB\\\\T3oodle\\\\Domain\\\\Repository\\\\PollRepository\\:\\:\\$defaultOrderings is not covariant with PHPDoc type array\\ of overridden property TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\Repository\\\\:\\:\\$defaultOrderings\\.$#" + count: 1 + path: ../../Classes/Domain/Repository/PollRepository.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Domain\\\\Repository\\\\PollRepository\\:\\:\\$controllerSettings is never read, only written\\.$#" + count: 1 + path: ../../Classes/Domain/Repository/PollRepository.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Domain\\\\Repository\\\\PollRepository\\:\\:\\$controllerSettings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Repository/PollRepository.php + + - + message: "#^Variable \\$orConstraints in empty\\(\\) always exists and is not falsy\\.$#" + count: 1 + path: ../../Classes/Domain/Repository/PollRepository.php + + - + message: "#^Class FGTCLB\\\\T3oodle\\\\Domain\\\\Repository\\\\VoteRepository extends generic class TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\Repository but does not specify its types\\: TEntityClass$#" + count: 1 + path: ../../Classes/Domain/Repository/VoteRepository.php + + - + message: "#^Call to an undefined method object\\:\\:validate\\(\\)\\.$#" + count: 1 + path: ../../Classes/Domain/Validator/CustomPollValidator.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Domain\\\\Validator\\\\CustomPollValidator\\:\\:\\$supportedOptions type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Validator/CustomPollValidator.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Validator\\\\SchedulePollValidator\\:\\:__construct\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Validator/SchedulePollValidator.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Domain\\\\Validator\\\\SimplePollValidator\\:\\:__construct\\(\\) has parameter \\$options with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Validator/SimplePollValidator.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Domain\\\\Validator\\\\SimplePollValidator\\:\\:\\$supportedOptions type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Domain/Validator/SimplePollValidator.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\CreateAfterEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/CreateAfterEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\CreateAfterEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/CreateAfterEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\CreateAfterEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/CreateAfterEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\CreateBeforeEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/CreateBeforeEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\CreateBeforeEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/CreateBeforeEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\CreateBeforeEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/CreateBeforeEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\CreateSuggestionAfterEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/CreateSuggestionAfterEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\CreateSuggestionAfterEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/CreateSuggestionAfterEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\CreateSuggestionAfterEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/CreateSuggestionAfterEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\CreateSuggestionBeforeEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/CreateSuggestionBeforeEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\CreateSuggestionBeforeEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/CreateSuggestionBeforeEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\CreateSuggestionBeforeEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/CreateSuggestionBeforeEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\DeleteOwnVoteEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/DeleteOwnVoteEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\DeleteOwnVoteEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/DeleteOwnVoteEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\DeleteOwnVoteEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/DeleteOwnVoteEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\DeletePollEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/DeletePollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\DeletePollEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/DeletePollEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\DeletePollEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/DeletePollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\DeleteSuggestionEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/DeleteSuggestionEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\DeleteSuggestionEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/DeleteSuggestionEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\DeleteSuggestionEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/DeleteSuggestionEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\EditPollEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/EditPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\EditPollEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/EditPollEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\EditPollEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/EditPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\EditSuggestionEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/EditSuggestionEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\EditSuggestionEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/EditSuggestionEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\EditSuggestionEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/EditSuggestionEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\FinishPollEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/FinishPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\FinishPollEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/FinishPollEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\FinishPollEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/FinishPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\FinishSuggestionModeEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/FinishSuggestionModeEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\FinishSuggestionModeEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/FinishSuggestionModeEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\FinishSuggestionModeEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/FinishSuggestionModeEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\ListPollEvent\\:\\:__construct\\(\\) has parameter \\$polls with generic interface TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\QueryResultInterface but does not specify its types\\: ModelType$#" + count: 1 + path: ../../Classes/Event/ListPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\ListPollEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/ListPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\ListPollEvent\\:\\:getPolls\\(\\) return type with generic interface TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\QueryResultInterface does not specify its types\\: ModelType$#" + count: 1 + path: ../../Classes/Event/ListPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\ListPollEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/ListPollEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\ListPollEvent\\:\\:\\$polls with generic interface TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\QueryResultInterface does not specify its types\\: ModelType$#" + count: 1 + path: ../../Classes/Event/ListPollEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\ListPollEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/ListPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\NewPollEvent\\:\\:__construct\\(\\) has parameter \\$newOptions with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/NewPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\NewPollEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/NewPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\NewPollEvent\\:\\:getNewOptions\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/NewPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\NewPollEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/NewPollEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\NewPollEvent\\:\\:\\$newOptions type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/NewPollEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\NewPollEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/NewPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\NewSuggestionEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/NewSuggestionEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\NewSuggestionEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/NewSuggestionEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\NewSuggestionEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/NewSuggestionEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\Permission\\\\PermissionCheckEvent\\:\\:__construct\\(\\) has parameter \\$arguments with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/Permission/PermissionCheckEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\Permission\\\\PermissionCheckEvent\\:\\:__construct\\(\\) has parameter \\$caller with no type specified\\.$#" + count: 1 + path: ../../Classes/Event/Permission/PermissionCheckEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\Permission\\\\PermissionCheckEvent\\:\\:getArguments\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/Permission/PermissionCheckEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\Permission\\\\PermissionCheckEvent\\:\\:getArguments\\(\\) should return array but returns array\\|null\\.$#" + count: 1 + path: ../../Classes/Event/Permission/PermissionCheckEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\Permission\\\\PermissionCheckEvent\\:\\:setCurrentStatus\\(\\) has parameter \\$status with no type specified\\.$#" + count: 1 + path: ../../Classes/Event/Permission/PermissionCheckEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\Permission\\\\PermissionCheckEvent\\:\\:\\$arguments type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/Permission/PermissionCheckEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\PollRepository\\\\FindPollsEvent\\:\\:__construct\\(\\) has parameter \\$constraints with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/PollRepository/FindPollsEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\PollRepository\\\\FindPollsEvent\\:\\:__construct\\(\\) has parameter \\$query with generic interface TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\QueryInterface but does not specify its types\\: ModelType$#" + count: 1 + path: ../../Classes/Event/PollRepository/FindPollsEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\PollRepository\\\\FindPollsEvent\\:\\:getConstraints\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/PollRepository/FindPollsEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\PollRepository\\\\FindPollsEvent\\:\\:getQuery\\(\\) return type with generic interface TYPO3\\\\CMS\\\\Extbase\\\\Persistence\\\\QueryInterface does not specify its types\\: ModelType$#" + count: 1 + path: ../../Classes/Event/PollRepository/FindPollsEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\PollRepository\\\\FindPollsEvent\\:\\:setConstraints\\(\\) has parameter \\$constraints with no type specified\\.$#" + count: 1 + path: ../../Classes/Event/PollRepository/FindPollsEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\PollRepository\\\\FindPollsEvent\\:\\:\\$caller has no type specified\\.$#" + count: 1 + path: ../../Classes/Event/PollRepository/FindPollsEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\PollRepository\\\\FindPollsEvent\\:\\:\\$constraints has no type specified\\.$#" + count: 1 + path: ../../Classes/Event/PollRepository/FindPollsEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\PollRepository\\\\FindPollsEvent\\:\\:\\$query has no type specified\\.$#" + count: 1 + path: ../../Classes/Event/PollRepository/FindPollsEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\PublishPollEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/PublishPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\PublishPollEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/PublishPollEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\PublishPollEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/PublishPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\ResetVotesEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/ResetVotesEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\ResetVotesEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/ResetVotesEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\ResetVotesEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/ResetVotesEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\ShowFinishEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/ShowFinishEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\ShowFinishEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/ShowFinishEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\ShowFinishEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/ShowFinishEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\ShowPollEvent\\:\\:__construct\\(\\) has parameter \\$newOptionValues with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/ShowPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\ShowPollEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/ShowPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\ShowPollEvent\\:\\:getCaller\\(\\) has no return type specified\\.$#" + count: 1 + path: ../../Classes/Event/ShowPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\ShowPollEvent\\:\\:getNewOptionValues\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/ShowPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\ShowPollEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/ShowPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\ShowPollEvent\\:\\:setNewOptionValues\\(\\) has parameter \\$newOptionValues with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/ShowPollEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\ShowPollEvent\\:\\:\\$newOptionValues type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/ShowPollEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\ShowPollEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/ShowPollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\UpdateAfterEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/UpdateAfterEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\UpdateAfterEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/UpdateAfterEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\UpdateAfterEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/UpdateAfterEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\UpdateBeforeEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/UpdateBeforeEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\UpdateBeforeEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/UpdateBeforeEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\UpdateBeforeEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/UpdateBeforeEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\UpdateSuggestionAfterEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/UpdateSuggestionAfterEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\UpdateSuggestionAfterEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/UpdateSuggestionAfterEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\UpdateSuggestionAfterEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/UpdateSuggestionAfterEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\UpdateSuggestionBeforeEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/UpdateSuggestionBeforeEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\UpdateSuggestionBeforeEvent\\:\\:getSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/UpdateSuggestionBeforeEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\UpdateSuggestionBeforeEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/UpdateSuggestionBeforeEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Event\\\\VotePollEvent\\:\\:__construct\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/VotePollEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\VotePollEvent\\:\\:\\$settings is never read, only written\\.$#" + count: 1 + path: ../../Classes/Event/VotePollEvent.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Event\\\\VotePollEvent\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Event/VotePollEvent.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Extbase\\\\TypeConverter\\\\PollObjectConverter\\:\\:buildObject\\(\\) has parameter \\$possibleConstructorArgumentValues with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Extbase/TypeConverter/PollObjectConverter.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Extbase\\\\TypeConverter\\\\PollObjectConverterV9\\:\\:buildObject\\(\\) has parameter \\$possibleConstructorArgumentValues with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Extbase/TypeConverter/PollObjectConverterV9.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Service\\\\UserService\\:\\:isAdminByGroup\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Service/UserService.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Service\\\\UserService\\:\\:isAdminByUid\\(\\) has parameter \\$settings with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Service/UserService.php + + - + message: "#^Binary operation \"\\+\\=\" between Doctrine\\\\DBAL\\\\Result\\|int and Doctrine\\\\DBAL\\\\Result\\|int results in an error\\.$#" + count: 1 + path: ../../Classes/Updates/MigrateOldPollTypes.php + + - + message: "#^Cannot call method rowCount\\(\\) on Doctrine\\\\DBAL\\\\Result\\|int\\.$#" + count: 1 + path: ../../Classes/Updates/MigrateOldPollTypes.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Updates\\\\MigrateOldPollTypes\\:\\:\\$affectedRows has no type specified\\.$#" + count: 1 + path: ../../Classes/Updates/MigrateOldPollTypes.php + + - + message: "#^Cannot call method rowCount\\(\\) on Doctrine\\\\DBAL\\\\Result\\|int\\.$#" + count: 1 + path: ../../Classes/Updates/MigrateOneOptionOnlySetting.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Updates\\\\MigrateOneOptionOnlySetting\\:\\:\\$affectedRows has no type specified\\.$#" + count: 1 + path: ../../Classes/Updates/MigrateOneOptionOnlySetting.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Utility\\\\ScheduleOptionUtility\\:\\:parseOptionName\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Utility/ScheduleOptionUtility.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Utility\\\\ScheduleOptionUtility\\:\\:validateOptionName\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Utility/ScheduleOptionUtility.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Utility\\\\SettingsUtility\\:\\:getTypoScriptSettings\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Utility/SettingsUtility.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Utility\\\\SettingsUtility\\:\\:\\$settings type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Utility/SettingsUtility.php + + - + message: "#^Parameter \\#1 \\$slug of method TYPO3\\\\CMS\\\\Core\\\\DataHandling\\\\SlugHelper\\:\\:sanitize\\(\\) expects string, string\\|null given\\.$#" + count: 1 + path: ../../Classes/Utility/SlugUtility.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Utility\\\\SlugUtility\\:\\:\\$fieldName is never read, only written\\.$#" + count: 1 + path: ../../Classes/Utility/SlugUtility.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\Utility\\\\SlugUtility\\:\\:\\$tableName is never read, only written\\.$#" + count: 1 + path: ../../Classes/Utility/SlugUtility.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Utility\\\\TcaGeneratorUtility\\:\\:getItemListForEnumeration\\(\\) return type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Utility/TcaGeneratorUtility.php + + - + message: "#^Parameter \\#1 \\$callback of function call_user_func expects callable\\(\\)\\: mixed, array\\{string, 'getConstants'\\} given\\.$#" + count: 1 + path: ../../Classes/Utility/TcaGeneratorUtility.php + + - + message: "#^Parameter \\#1 \\$callback of function call_user_func expects callable\\(\\)\\: mixed, array\\{string, 'getHumanReadableName'\\} given\\.$#" + count: 1 + path: ../../Classes/Utility/TcaGeneratorUtility.php + + - + message: "#^Parameter \\#1 \\$callback of function call_user_func expects callable\\(\\)\\: mixed, array\\{string, 'getName'\\} given\\.$#" + count: 1 + path: ../../Classes/Utility/TcaGeneratorUtility.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\Utility\\\\TranslateUtility\\:\\:translate\\(\\) has parameter \\$arguments with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/Utility/TranslateUtility.php + + - + message: "#^Variable \\$translation in empty\\(\\) always exists and is not falsy\\.$#" + count: 1 + path: ../../Classes/Utility/TranslateUtility.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\ViewHelpers\\\\GetOptionValueViewHelper\\:\\:initializeArguments\\(\\) has no return type specified\\.$#" + count: 1 + path: ../../Classes/ViewHelpers/GetOptionValueViewHelper.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\ViewHelpers\\\\Math\\\\AddViewHelper\\:\\:initializeArguments\\(\\) has no return type specified\\.$#" + count: 1 + path: ../../Classes/ViewHelpers/Math/AddViewHelper.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\ViewHelpers\\\\PermissionViewHelper\\:\\:init\\(\\) has parameter \\$arguments with no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/ViewHelpers/PermissionViewHelper.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\ViewHelpers\\\\PermissionViewHelper\\:\\:initializeArguments\\(\\) has no return type specified\\.$#" + count: 1 + path: ../../Classes/ViewHelpers/PermissionViewHelper.php + + - + message: "#^Static property FGTCLB\\\\T3oodle\\\\ViewHelpers\\\\PermissionViewHelper\\:\\:\\$permission \\(FGTCLB\\\\T3oodle\\\\Domain\\\\Permission\\\\PollPermission\\) does not accept object\\.$#" + count: 1 + path: ../../Classes/ViewHelpers/PermissionViewHelper.php + + - + message: "#^Unable to resolve the template type T in call to method static method TYPO3\\\\CMS\\\\Core\\\\Utility\\\\GeneralUtility\\:\\:makeInstance\\(\\)$#" + count: 1 + path: ../../Classes/ViewHelpers/PermissionViewHelper.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\ViewHelpers\\\\Schedule\\\\ParseDayOptionViewHelper\\:\\:initializeArguments\\(\\) has no return type specified\\.$#" + count: 1 + path: ../../Classes/ViewHelpers/Schedule/ParseDayOptionViewHelper.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\ViewHelpers\\\\Schedule\\\\SplitDayOptionsViewHelper\\:\\:initializeArguments\\(\\) has no return type specified\\.$#" + count: 1 + path: ../../Classes/ViewHelpers/Schedule/SplitDayOptionsViewHelper.php + + - + message: "#^PHPDoc tag @var for variable \\$option has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/ViewHelpers/Schedule/SplitDayOptionsViewHelper.php + + - + message: "#^Call to an undefined method TYPO3Fluid\\\\Fluid\\\\Core\\\\Rendering\\\\RenderingContextInterface\\:\\:getControllerContext\\(\\)\\.$#" + count: 1 + path: ../../Classes/ViewHelpers/SvgViewHelper.php + + - + message: "#^Cannot access property \\$childNodes on DOMElement\\|null\\.$#" + count: 1 + path: ../../Classes/ViewHelpers/SvgViewHelper.php + + - + message: "#^Cannot call method getAttribute\\(\\) on DOMElement\\|null\\.$#" + count: 1 + path: ../../Classes/ViewHelpers/SvgViewHelper.php + + - + message: "#^Method FGTCLB\\\\T3oodle\\\\ViewHelpers\\\\SvgViewHelper\\:\\:initializeArguments\\(\\) has no return type specified\\.$#" + count: 1 + path: ../../Classes/ViewHelpers/SvgViewHelper.php + + - + message: "#^Parameter \\#1 \\$data of method DOMDocumentFragment\\:\\:appendXML\\(\\) expects string, string\\|false given\\.$#" + count: 1 + path: ../../Classes/ViewHelpers/SvgViewHelper.php + + - + message: "#^Parameter \\#1 \\$source of method DOMDocument\\:\\:loadXML\\(\\) expects string, string\\|false given\\.$#" + count: 1 + path: ../../Classes/ViewHelpers/SvgViewHelper.php + + - + message: "#^Property FGTCLB\\\\T3oodle\\\\ViewHelpers\\\\SvgViewHelper\\:\\:\\$cache type has no value type specified in iterable type array\\.$#" + count: 1 + path: ../../Classes/ViewHelpers/SvgViewHelper.php diff --git a/Build/phpstan/phpstan.neon b/Build/phpstan/phpstan.neon index 49f05c7..7d922cc 100644 --- a/Build/phpstan/phpstan.neon +++ b/Build/phpstan/phpstan.neon @@ -1,9 +1,6 @@ includes: - - phpstan-baseline.neon - - ../../.Build/vendor/bnf/phpstan-psr-container/extension.neon - ../../.Build/vendor/saschaegerer/phpstan-typo3/extension.neon - - ../../.Build/vendor/phpstan/phpstan-phpunit/extension.neon - - ../../.Build/vendor/jangregor/phpstan-prophecy/extension.neon + - phpstan-baseline.neon parameters: level: 8 diff --git a/composer.json b/composer.json index d939ba2..20dfa37 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,7 @@ ], "license": "GPL-2.0-or-later", "require": { - "php": "^7.4 || ^8.1", + "php": "^7.4 || ^8.0 || ^8.1 || ^8.2 || ^8.3", "ext-json": "*", "typo3/cms-core": "^10.4.6 || ^11.5", "typo3/cms-fluid-styled-content": "^11.5", @@ -31,7 +31,8 @@ "saschaegerer/phpstan-typo3": "^1.1", "ssch/typo3-rector": "^1.3", "typo3/cms-tstemplate": "^11.5", - "bk2k/bootstrap-package": "^14.0" + "bk2k/bootstrap-package": "^14.0", + "typo3/testing-framework": "^7.0" }, "autoload": { "psr-4": { @@ -48,24 +49,23 @@ }, "extra": { "typo3/cms": { + "cms-package-dir": "{$vendor-dir}/typo3/cms", + "extension-key": "t3oodle", + "ignore-as-root": false, "web-dir": ".Build/Web", - "extension-key": "t3oodle" + "app-dir": ".Build" } }, "scripts": { - "check": [ - "@ec", - "@phpcs", - "@phpstan" - ], - "fix": [ - "@ec:fix", - "@phpcs:fix" - ], - "phpcs": "php-cs-fixer fix --config Resources/Private/Build/php-cs-rules.php --ansi --verbose --diff --dry-run", - "phpcs:fix": "php-cs-fixer fix --config Resources/Private/Build/php-cs-rules.php --ansi", - "phpstan": "phpstan analyse -c Resources/Private/Build/phpstan.neon", - "ec": "ec -n -e Documentation-GENERATED -e .Build", - "ec:fix": "ec -n -e Documentation-GENERATED -e .Build --fix" + "cs": ".Build/bin/php-cs-fixer", + "tl": ".Build/bin/typoscript-lint", + "phpstan": ".Build/bin/phpstan", + "phpunit": ".Build/bin/phpunit", + "cs:check": "@cs fix --config Build/php-cs-fixer/php-cs-rules.php --ansi --diff --verbose --dry-run", + "cs:fix": "@cs fix --config Build/php-cs-fixer/php-cs-rules.php --ansi", + "analyze:php": "@phpstan analyse --ansi --no-progress --memory-limit=768M --configuration=Build/phpstan/phpstan.neon", + "analyze:baseline": "@phpstan analyse --ansi --no-progress --memory-limit=768M --configuration=Build/phpstan/phpstan.neon --generate-baseline=Build/phpstan/phpstan-baseline.neon", + "lint:typoscript": "@tl --ansi --config=./Build/typoscript-lint/typoscript-lint.yml", + "lint:php": "find .*.php *.php Classes Configuration Tests -name '*.php' -print0 | xargs -r -0 -n 1 -P 4 php -l" } }