phpmd / phpmd

PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD. PHPMD can be seen as an user friendly frontend application for the raw metrics stream measured by PHP Depend.

Home Page:https://phpmd.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Valid enum with keys public/protected/private causes error

TheCelavi opened this issue · comments

  • PHPMD version: 2.13.0
  • PHP Version: 8.2
  • Installation type: composer
  • Operating System / Distribution & Version: MacOS X Ventura, Docker Debian

Current Behavior

Explained here: pdepend/pdepend#640

enum Acces {
    case PUBLIC;
    case PROTECTED;
}

yields error.

Expected Behavior

Should not yield error

Steps To Reproduce:

Create enum and run analysis.

Notes

I assume that issue is related to PDEPEND, and fixing issue there and bumping dependency version here would fix it. Issue added for completeness.

I have very similar error but with:
case BREAK = 'break';

That should be also fixed. (same version)

Steps:

  1. Unpack attachment
  2. Run ./vendor/bin/phpmd src/ text rulesets/codesize.xml

Expected result

Works without fatal errors

Actual result

./vendor/bin/phpmd src/ text rulesets/codesize.xml 
        -       Unexpected token: NEW, line: 5, col: 10, file: /Users/u/projects/phpmd/src/Test1.php.
#0 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(7966): PDepend\Source\Parser\UnexpectedTokenException->__construct(Object(PDepend\Source\Tokenizer\Token), Object(PDepend\Source\AST\ASTCompilationUnit))
#1 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(8116): PDepend\Source\Language\PHP\AbstractPHPParser->getUnexpectedTokenException()
#2 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(1099): PDepend\Source\Language\PHP\AbstractPHPParser->parseEnumCase()
#3 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/PHPParserVersion81.php(164): PDepend\Source\Language\PHP\AbstractPHPParser->parseTypeBody(Object(PDepend\Source\AST\ASTEnum))
#4 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(6578): PDepend\Source\Language\PHP\PHPParserVersion81->parseEnumDeclaration()
#5 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(516): PDepend\Source\Language\PHP\AbstractPHPParser->parseOptionalStatement()
#6 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Engine.php(606): PDepend\Source\Language\PHP\AbstractPHPParser->parse()
#7 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Engine.php(351): PDepend\Engine->performParseProcess()
#8 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/main/php/PHPMD/Parser.php(99): PDepend\Engine->analyze()
#9 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/main/php/PHPMD/PHPMD.php(240): PHPMD\Parser->parse(Object(PHPMD\Report))
#10 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/main/php/PHPMD/TextUI/Command.php(136): PHPMD\PHPMD->processFiles('src/', 'rulesets/codesi...', Array, Object(PHPMD\RuleSetFactory), Object(PHPMD\Report))
#11 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/main/php/PHPMD/TextUI/Command.php(184): PHPMD\TextUI\Command->run(Object(PHPMD\TextUI\CommandLineOptions), Object(PHPMD\RuleSetFactory))
#12 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/bin/phpmd(61): PHPMD\TextUI\Command::main(Array)
#13 /Users/u/projects/phpmd/vendor/bin/phpmd(120): include('/Users/u/projec...')
#14 {main}
        -       Unexpected token: PUBLIC, line: 5, col: 10, file: /Users/u/projects/phpmd/src/Test2.php.
#0 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(7966): PDepend\Source\Parser\UnexpectedTokenException->__construct(Object(PDepend\Source\Tokenizer\Token), Object(PDepend\Source\AST\ASTCompilationUnit))
#1 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(8116): PDepend\Source\Language\PHP\AbstractPHPParser->getUnexpectedTokenException()
#2 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(1099): PDepend\Source\Language\PHP\AbstractPHPParser->parseEnumCase()
#3 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/PHPParserVersion81.php(164): PDepend\Source\Language\PHP\AbstractPHPParser->parseTypeBody(Object(PDepend\Source\AST\ASTEnum))
#4 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(6578): PDepend\Source\Language\PHP\PHPParserVersion81->parseEnumDeclaration()
#5 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Source/Language/PHP/AbstractPHPParser.php(516): PDepend\Source\Language\PHP\AbstractPHPParser->parseOptionalStatement()
#6 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Engine.php(606): PDepend\Source\Language\PHP\AbstractPHPParser->parse()
#7 /Users/u/projects/phpmd/vendor/pdepend/pdepend/src/main/php/PDepend/Engine.php(351): PDepend\Engine->performParseProcess()
#8 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/main/php/PHPMD/Parser.php(99): PDepend\Engine->analyze()
#9 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/main/php/PHPMD/PHPMD.php(240): PHPMD\Parser->parse(Object(PHPMD\Report))
#10 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/main/php/PHPMD/TextUI/Command.php(136): PHPMD\PHPMD->processFiles('src/', 'rulesets/codesi...', Array, Object(PHPMD\RuleSetFactory), Object(PHPMD\Report))
#11 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/main/php/PHPMD/TextUI/Command.php(184): PHPMD\TextUI\Command->run(Object(PHPMD\TextUI\CommandLineOptions), Object(PHPMD\RuleSetFactory))
#12 /Users/u/projects/phpmd/vendor/phpmd/phpmd/src/bin/phpmd(61): PHPMD\TextUI\Command::main(Array)
#13 /Users/u/projects/phpmd/vendor/bin/phpmd(120): include('/Users/u/projec...')
#14 {main}

phpmd-issue.zip

Please see pdepend/pdepend#635 for the status on this issue