webshell-analyzer 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- webshell_analyzer/__init__.py +0 -0
- webshell_analyzer/cli/__init__.py +0 -0
- webshell_analyzer/cli/cli.py +151 -0
- webshell_analyzer/extractor/ast_extraction/composer.json +5 -0
- webshell_analyzer/extractor/ast_extraction/composer.lock +77 -0
- webshell_analyzer/extractor/ast_extraction/src/NodeVisitor.php +85 -0
- webshell_analyzer/extractor/ast_extraction/src/astBuilder.php +50 -0
- webshell_analyzer/extractor/ast_extraction/src/astExtractor.php +50 -0
- webshell_analyzer/extractor/ast_extraction/src/featuresDeclare.php +36 -0
- webshell_analyzer/extractor/ast_extraction/vendor/autoload.php +25 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/ClassLoader.php +579 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/InstalledVersions.php +378 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_classmap.php +10 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_namespaces.php +9 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_psr4.php +10 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_real.php +38 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_static.php +36 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/installed.json +67 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/installed.php +32 -0
- webshell_analyzer/extractor/ast_extraction/vendor/composer/platform_check.php +26 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +150 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php +151 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php +50 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php +86 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.php +116 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php +73 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php +67 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php +94 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php +147 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php +45 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php +171 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php +223 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php +65 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php +145 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php +83 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php +49 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder.php +12 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php +375 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php +338 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php +6 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Comment.php +209 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php +6 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php +237 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Error.php +173 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php +43 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php +17 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php +12 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php +31 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php +178 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php +71 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php +237 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php +282 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php +108 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +230 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php +93 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php +49 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php +26 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php +45 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +60 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php +19 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php +60 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PipeOperatorEmulator.php +45 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PropertyTokenEmulator.php +19 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php +31 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php +31 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php +30 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/VoidCastEmulator.php +98 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer.php +116 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Modifiers.php +85 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NameContext.php +284 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php +44 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php +43 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php +27 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php +36 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php +13 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php +36 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php +34 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php +84 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pipe.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php +60 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php +16 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Void_.php +11 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php +25 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php +36 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php +86 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php +30 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php +30 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php +38 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php +38 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php +35 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php +34 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php +32 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php +45 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php +40 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php +45 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php +35 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php +35 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php +30 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php +45 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php +36 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php +8 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php +40 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php +85 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php +32 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php +27 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php +49 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php +49 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php +278 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php +123 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/PropertyHook.php +105 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php +17 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php +78 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php +82 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php +34 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Property.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php +27 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php +161 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php +6 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/StaticVar.php +39 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php +40 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php +77 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php +109 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php +154 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php +94 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php +17 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php +34 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php +36 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php +44 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php +32 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php +47 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php +50 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php +81 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php +30 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php +41 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php +46 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php +40 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php +30 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php +16 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php +121 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php +17 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php +15 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php +30 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php +12 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php +34 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php +37 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php +29 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php +17 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php +47 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php +33 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php +8 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php +27 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/UseItem.php +55 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php +16 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php +27 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node.php +150 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php +181 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php +299 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php +90 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php +287 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php +26 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php +19 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php +82 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php +47 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php +49 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php +269 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php +73 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php +51 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor.php +124 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php +24 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php +2919 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Parser/Php8.php +2917 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Parser.php +24 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php +1335 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php +42 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PhpVersion.php +175 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +1232 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter.php +51 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +1706 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Token.php +18 -0
- webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/compatibility_tokens.php +71 -0
- webshell_analyzer/extractor/extractor.py +73 -0
- webshell_analyzer/extractor/lexical_extraction/lexicalExtractor.py +31 -0
- webshell_analyzer/extractor/statistical_extraction/statisticalExtractor.py +60 -0
- webshell_analyzer/model/features_selected.json +1 -0
- webshell_analyzer/model/model_loader.py +19 -0
- webshell_analyzer/model/rf_webshell_model.joblib +0 -0
- webshell_analyzer/modules/__init__.py +0 -0
- webshell_analyzer/modules/detector.py +174 -0
- webshell_analyzer/modules/scanner.py +68 -0
- webshell_analyzer-1.0.0.dist-info/METADATA +105 -0
- webshell_analyzer-1.0.0.dist-info/RECORD +304 -0
- webshell_analyzer-1.0.0.dist-info/WHEEL +5 -0
- webshell_analyzer-1.0.0.dist-info/entry_points.txt +2 -0
- webshell_analyzer-1.0.0.dist-info/licenses/LICENSE +21 -0
- webshell_analyzer-1.0.0.dist-info/top_level.txt +1 -0
webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php
ADDED
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
<?php declare(strict_types=1);
|
|
2
|
+
|
|
3
|
+
namespace PhpParser;
|
|
4
|
+
|
|
5
|
+
use PhpParser\Node\Arg;
|
|
6
|
+
use PhpParser\Node\Expr;
|
|
7
|
+
use PhpParser\Node\Expr\BinaryOp\Concat;
|
|
8
|
+
use PhpParser\Node\Identifier;
|
|
9
|
+
use PhpParser\Node\Name;
|
|
10
|
+
use PhpParser\Node\Scalar\String_;
|
|
11
|
+
use PhpParser\Node\Stmt\Use_;
|
|
12
|
+
|
|
13
|
+
class BuilderFactory {
|
|
14
|
+
/**
|
|
15
|
+
* Creates an attribute node.
|
|
16
|
+
*
|
|
17
|
+
* @param string|Name $name Name of the attribute
|
|
18
|
+
* @param array $args Attribute named arguments
|
|
19
|
+
*/
|
|
20
|
+
public function attribute($name, array $args = []): Node\Attribute {
|
|
21
|
+
return new Node\Attribute(
|
|
22
|
+
BuilderHelpers::normalizeName($name),
|
|
23
|
+
$this->args($args)
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Creates a namespace builder.
|
|
29
|
+
*
|
|
30
|
+
* @param null|string|Node\Name $name Name of the namespace
|
|
31
|
+
*
|
|
32
|
+
* @return Builder\Namespace_ The created namespace builder
|
|
33
|
+
*/
|
|
34
|
+
public function namespace($name): Builder\Namespace_ {
|
|
35
|
+
return new Builder\Namespace_($name);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Creates a class builder.
|
|
40
|
+
*
|
|
41
|
+
* @param string $name Name of the class
|
|
42
|
+
*
|
|
43
|
+
* @return Builder\Class_ The created class builder
|
|
44
|
+
*/
|
|
45
|
+
public function class(string $name): Builder\Class_ {
|
|
46
|
+
return new Builder\Class_($name);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Creates an interface builder.
|
|
51
|
+
*
|
|
52
|
+
* @param string $name Name of the interface
|
|
53
|
+
*
|
|
54
|
+
* @return Builder\Interface_ The created interface builder
|
|
55
|
+
*/
|
|
56
|
+
public function interface(string $name): Builder\Interface_ {
|
|
57
|
+
return new Builder\Interface_($name);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Creates a trait builder.
|
|
62
|
+
*
|
|
63
|
+
* @param string $name Name of the trait
|
|
64
|
+
*
|
|
65
|
+
* @return Builder\Trait_ The created trait builder
|
|
66
|
+
*/
|
|
67
|
+
public function trait(string $name): Builder\Trait_ {
|
|
68
|
+
return new Builder\Trait_($name);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Creates an enum builder.
|
|
73
|
+
*
|
|
74
|
+
* @param string $name Name of the enum
|
|
75
|
+
*
|
|
76
|
+
* @return Builder\Enum_ The created enum builder
|
|
77
|
+
*/
|
|
78
|
+
public function enum(string $name): Builder\Enum_ {
|
|
79
|
+
return new Builder\Enum_($name);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Creates a trait use builder.
|
|
84
|
+
*
|
|
85
|
+
* @param Node\Name|string ...$traits Trait names
|
|
86
|
+
*
|
|
87
|
+
* @return Builder\TraitUse The created trait use builder
|
|
88
|
+
*/
|
|
89
|
+
public function useTrait(...$traits): Builder\TraitUse {
|
|
90
|
+
return new Builder\TraitUse(...$traits);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Creates a trait use adaptation builder.
|
|
95
|
+
*
|
|
96
|
+
* @param Node\Name|string|null $trait Trait name
|
|
97
|
+
* @param Node\Identifier|string $method Method name
|
|
98
|
+
*
|
|
99
|
+
* @return Builder\TraitUseAdaptation The created trait use adaptation builder
|
|
100
|
+
*/
|
|
101
|
+
public function traitUseAdaptation($trait, $method = null): Builder\TraitUseAdaptation {
|
|
102
|
+
if ($method === null) {
|
|
103
|
+
$method = $trait;
|
|
104
|
+
$trait = null;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return new Builder\TraitUseAdaptation($trait, $method);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Creates a method builder.
|
|
112
|
+
*
|
|
113
|
+
* @param string $name Name of the method
|
|
114
|
+
*
|
|
115
|
+
* @return Builder\Method The created method builder
|
|
116
|
+
*/
|
|
117
|
+
public function method(string $name): Builder\Method {
|
|
118
|
+
return new Builder\Method($name);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Creates a parameter builder.
|
|
123
|
+
*
|
|
124
|
+
* @param string $name Name of the parameter
|
|
125
|
+
*
|
|
126
|
+
* @return Builder\Param The created parameter builder
|
|
127
|
+
*/
|
|
128
|
+
public function param(string $name): Builder\Param {
|
|
129
|
+
return new Builder\Param($name);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Creates a property builder.
|
|
134
|
+
*
|
|
135
|
+
* @param string $name Name of the property
|
|
136
|
+
*
|
|
137
|
+
* @return Builder\Property The created property builder
|
|
138
|
+
*/
|
|
139
|
+
public function property(string $name): Builder\Property {
|
|
140
|
+
return new Builder\Property($name);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Creates a function builder.
|
|
145
|
+
*
|
|
146
|
+
* @param string $name Name of the function
|
|
147
|
+
*
|
|
148
|
+
* @return Builder\Function_ The created function builder
|
|
149
|
+
*/
|
|
150
|
+
public function function(string $name): Builder\Function_ {
|
|
151
|
+
return new Builder\Function_($name);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Creates a namespace/class use builder.
|
|
156
|
+
*
|
|
157
|
+
* @param Node\Name|string $name Name of the entity (namespace or class) to alias
|
|
158
|
+
*
|
|
159
|
+
* @return Builder\Use_ The created use builder
|
|
160
|
+
*/
|
|
161
|
+
public function use($name): Builder\Use_ {
|
|
162
|
+
return new Builder\Use_($name, Use_::TYPE_NORMAL);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Creates a function use builder.
|
|
167
|
+
*
|
|
168
|
+
* @param Node\Name|string $name Name of the function to alias
|
|
169
|
+
*
|
|
170
|
+
* @return Builder\Use_ The created use function builder
|
|
171
|
+
*/
|
|
172
|
+
public function useFunction($name): Builder\Use_ {
|
|
173
|
+
return new Builder\Use_($name, Use_::TYPE_FUNCTION);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Creates a constant use builder.
|
|
178
|
+
*
|
|
179
|
+
* @param Node\Name|string $name Name of the const to alias
|
|
180
|
+
*
|
|
181
|
+
* @return Builder\Use_ The created use const builder
|
|
182
|
+
*/
|
|
183
|
+
public function useConst($name): Builder\Use_ {
|
|
184
|
+
return new Builder\Use_($name, Use_::TYPE_CONSTANT);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Creates a class constant builder.
|
|
189
|
+
*
|
|
190
|
+
* @param string|Identifier $name Name
|
|
191
|
+
* @param Node\Expr|bool|null|int|float|string|array $value Value
|
|
192
|
+
*
|
|
193
|
+
* @return Builder\ClassConst The created use const builder
|
|
194
|
+
*/
|
|
195
|
+
public function classConst($name, $value): Builder\ClassConst {
|
|
196
|
+
return new Builder\ClassConst($name, $value);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Creates an enum case builder.
|
|
201
|
+
*
|
|
202
|
+
* @param string|Identifier $name Name
|
|
203
|
+
*
|
|
204
|
+
* @return Builder\EnumCase The created use const builder
|
|
205
|
+
*/
|
|
206
|
+
public function enumCase($name): Builder\EnumCase {
|
|
207
|
+
return new Builder\EnumCase($name);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Creates node a for a literal value.
|
|
212
|
+
*
|
|
213
|
+
* @param Expr|bool|null|int|float|string|array|\UnitEnum $value $value
|
|
214
|
+
*/
|
|
215
|
+
public function val($value): Expr {
|
|
216
|
+
return BuilderHelpers::normalizeValue($value);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Creates variable node.
|
|
221
|
+
*
|
|
222
|
+
* @param string|Expr $name Name
|
|
223
|
+
*/
|
|
224
|
+
public function var($name): Expr\Variable {
|
|
225
|
+
if (!\is_string($name) && !$name instanceof Expr) {
|
|
226
|
+
throw new \LogicException('Variable name must be string or Expr');
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
return new Expr\Variable($name);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Normalizes an argument list.
|
|
234
|
+
*
|
|
235
|
+
* Creates Arg nodes for all arguments and converts literal values to expressions.
|
|
236
|
+
*
|
|
237
|
+
* @param array $args List of arguments to normalize
|
|
238
|
+
*
|
|
239
|
+
* @return list<Arg>
|
|
240
|
+
*/
|
|
241
|
+
public function args(array $args): array {
|
|
242
|
+
$normalizedArgs = [];
|
|
243
|
+
foreach ($args as $key => $arg) {
|
|
244
|
+
if (!($arg instanceof Arg)) {
|
|
245
|
+
$arg = new Arg(BuilderHelpers::normalizeValue($arg));
|
|
246
|
+
}
|
|
247
|
+
if (\is_string($key)) {
|
|
248
|
+
$arg->name = BuilderHelpers::normalizeIdentifier($key);
|
|
249
|
+
}
|
|
250
|
+
$normalizedArgs[] = $arg;
|
|
251
|
+
}
|
|
252
|
+
return $normalizedArgs;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Creates a function call node.
|
|
257
|
+
*
|
|
258
|
+
* @param string|Name|Expr $name Function name
|
|
259
|
+
* @param array $args Function arguments
|
|
260
|
+
*/
|
|
261
|
+
public function funcCall($name, array $args = []): Expr\FuncCall {
|
|
262
|
+
return new Expr\FuncCall(
|
|
263
|
+
BuilderHelpers::normalizeNameOrExpr($name),
|
|
264
|
+
$this->args($args)
|
|
265
|
+
);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Creates a method call node.
|
|
270
|
+
*
|
|
271
|
+
* @param Expr $var Variable the method is called on
|
|
272
|
+
* @param string|Identifier|Expr $name Method name
|
|
273
|
+
* @param array $args Method arguments
|
|
274
|
+
*/
|
|
275
|
+
public function methodCall(Expr $var, $name, array $args = []): Expr\MethodCall {
|
|
276
|
+
return new Expr\MethodCall(
|
|
277
|
+
$var,
|
|
278
|
+
BuilderHelpers::normalizeIdentifierOrExpr($name),
|
|
279
|
+
$this->args($args)
|
|
280
|
+
);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Creates a static method call node.
|
|
285
|
+
*
|
|
286
|
+
* @param string|Name|Expr $class Class name
|
|
287
|
+
* @param string|Identifier|Expr $name Method name
|
|
288
|
+
* @param array $args Method arguments
|
|
289
|
+
*/
|
|
290
|
+
public function staticCall($class, $name, array $args = []): Expr\StaticCall {
|
|
291
|
+
return new Expr\StaticCall(
|
|
292
|
+
BuilderHelpers::normalizeNameOrExpr($class),
|
|
293
|
+
BuilderHelpers::normalizeIdentifierOrExpr($name),
|
|
294
|
+
$this->args($args)
|
|
295
|
+
);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Creates an object creation node.
|
|
300
|
+
*
|
|
301
|
+
* @param string|Name|Expr $class Class name
|
|
302
|
+
* @param array $args Constructor arguments
|
|
303
|
+
*/
|
|
304
|
+
public function new($class, array $args = []): Expr\New_ {
|
|
305
|
+
return new Expr\New_(
|
|
306
|
+
BuilderHelpers::normalizeNameOrExpr($class),
|
|
307
|
+
$this->args($args)
|
|
308
|
+
);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Creates a constant fetch node.
|
|
313
|
+
*
|
|
314
|
+
* @param string|Name $name Constant name
|
|
315
|
+
*/
|
|
316
|
+
public function constFetch($name): Expr\ConstFetch {
|
|
317
|
+
return new Expr\ConstFetch(BuilderHelpers::normalizeName($name));
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Creates a property fetch node.
|
|
322
|
+
*
|
|
323
|
+
* @param Expr $var Variable holding object
|
|
324
|
+
* @param string|Identifier|Expr $name Property name
|
|
325
|
+
*/
|
|
326
|
+
public function propertyFetch(Expr $var, $name): Expr\PropertyFetch {
|
|
327
|
+
return new Expr\PropertyFetch($var, BuilderHelpers::normalizeIdentifierOrExpr($name));
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Creates a class constant fetch node.
|
|
332
|
+
*
|
|
333
|
+
* @param string|Name|Expr $class Class name
|
|
334
|
+
* @param string|Identifier|Expr $name Constant name
|
|
335
|
+
*/
|
|
336
|
+
public function classConstFetch($class, $name): Expr\ClassConstFetch {
|
|
337
|
+
return new Expr\ClassConstFetch(
|
|
338
|
+
BuilderHelpers::normalizeNameOrExpr($class),
|
|
339
|
+
BuilderHelpers::normalizeIdentifierOrExpr($name)
|
|
340
|
+
);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* Creates nested Concat nodes from a list of expressions.
|
|
345
|
+
*
|
|
346
|
+
* @param Expr|string ...$exprs Expressions or literal strings
|
|
347
|
+
*/
|
|
348
|
+
public function concat(...$exprs): Concat {
|
|
349
|
+
$numExprs = count($exprs);
|
|
350
|
+
if ($numExprs < 2) {
|
|
351
|
+
throw new \LogicException('Expected at least two expressions');
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
$lastConcat = $this->normalizeStringExpr($exprs[0]);
|
|
355
|
+
for ($i = 1; $i < $numExprs; $i++) {
|
|
356
|
+
$lastConcat = new Concat($lastConcat, $this->normalizeStringExpr($exprs[$i]));
|
|
357
|
+
}
|
|
358
|
+
return $lastConcat;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* @param string|Expr $expr
|
|
363
|
+
*/
|
|
364
|
+
private function normalizeStringExpr($expr): Expr {
|
|
365
|
+
if ($expr instanceof Expr) {
|
|
366
|
+
return $expr;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
if (\is_string($expr)) {
|
|
370
|
+
return new String_($expr);
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
throw new \LogicException('Expected string or Expr');
|
|
374
|
+
}
|
|
375
|
+
}
|
webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php
ADDED
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
<?php declare(strict_types=1);
|
|
2
|
+
|
|
3
|
+
namespace PhpParser;
|
|
4
|
+
|
|
5
|
+
use PhpParser\Node\ComplexType;
|
|
6
|
+
use PhpParser\Node\Expr;
|
|
7
|
+
use PhpParser\Node\Identifier;
|
|
8
|
+
use PhpParser\Node\Name;
|
|
9
|
+
use PhpParser\Node\Name\FullyQualified;
|
|
10
|
+
use PhpParser\Node\NullableType;
|
|
11
|
+
use PhpParser\Node\Scalar;
|
|
12
|
+
use PhpParser\Node\Stmt;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* This class defines helpers used in the implementation of builders. Don't use it directly.
|
|
16
|
+
*
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
final class BuilderHelpers {
|
|
20
|
+
/**
|
|
21
|
+
* Normalizes a node: Converts builder objects to nodes.
|
|
22
|
+
*
|
|
23
|
+
* @param Node|Builder $node The node to normalize
|
|
24
|
+
*
|
|
25
|
+
* @return Node The normalized node
|
|
26
|
+
*/
|
|
27
|
+
public static function normalizeNode($node): Node {
|
|
28
|
+
if ($node instanceof Builder) {
|
|
29
|
+
return $node->getNode();
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if ($node instanceof Node) {
|
|
33
|
+
return $node;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
throw new \LogicException('Expected node or builder object');
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Normalizes a node to a statement.
|
|
41
|
+
*
|
|
42
|
+
* Expressions are wrapped in a Stmt\Expression node.
|
|
43
|
+
*
|
|
44
|
+
* @param Node|Builder $node The node to normalize
|
|
45
|
+
*
|
|
46
|
+
* @return Stmt The normalized statement node
|
|
47
|
+
*/
|
|
48
|
+
public static function normalizeStmt($node): Stmt {
|
|
49
|
+
$node = self::normalizeNode($node);
|
|
50
|
+
if ($node instanceof Stmt) {
|
|
51
|
+
return $node;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if ($node instanceof Expr) {
|
|
55
|
+
return new Stmt\Expression($node);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
throw new \LogicException('Expected statement or expression node');
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Normalizes strings to Identifier.
|
|
63
|
+
*
|
|
64
|
+
* @param string|Identifier $name The identifier to normalize
|
|
65
|
+
*
|
|
66
|
+
* @return Identifier The normalized identifier
|
|
67
|
+
*/
|
|
68
|
+
public static function normalizeIdentifier($name): Identifier {
|
|
69
|
+
if ($name instanceof Identifier) {
|
|
70
|
+
return $name;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (\is_string($name)) {
|
|
74
|
+
return new Identifier($name);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
throw new \LogicException('Expected string or instance of Node\Identifier');
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Normalizes strings to Identifier, also allowing expressions.
|
|
82
|
+
*
|
|
83
|
+
* @param string|Identifier|Expr $name The identifier to normalize
|
|
84
|
+
*
|
|
85
|
+
* @return Identifier|Expr The normalized identifier or expression
|
|
86
|
+
*/
|
|
87
|
+
public static function normalizeIdentifierOrExpr($name) {
|
|
88
|
+
if ($name instanceof Identifier || $name instanceof Expr) {
|
|
89
|
+
return $name;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (\is_string($name)) {
|
|
93
|
+
return new Identifier($name);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
throw new \LogicException('Expected string or instance of Node\Identifier or Node\Expr');
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Normalizes a name: Converts string names to Name nodes.
|
|
101
|
+
*
|
|
102
|
+
* @param Name|string $name The name to normalize
|
|
103
|
+
*
|
|
104
|
+
* @return Name The normalized name
|
|
105
|
+
*/
|
|
106
|
+
public static function normalizeName($name): Name {
|
|
107
|
+
if ($name instanceof Name) {
|
|
108
|
+
return $name;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (is_string($name)) {
|
|
112
|
+
if (!$name) {
|
|
113
|
+
throw new \LogicException('Name cannot be empty');
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if ($name[0] === '\\') {
|
|
117
|
+
return new Name\FullyQualified(substr($name, 1));
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (0 === strpos($name, 'namespace\\')) {
|
|
121
|
+
return new Name\Relative(substr($name, strlen('namespace\\')));
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return new Name($name);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
throw new \LogicException('Name must be a string or an instance of Node\Name');
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Normalizes a name: Converts string names to Name nodes, while also allowing expressions.
|
|
132
|
+
*
|
|
133
|
+
* @param Expr|Name|string $name The name to normalize
|
|
134
|
+
*
|
|
135
|
+
* @return Name|Expr The normalized name or expression
|
|
136
|
+
*/
|
|
137
|
+
public static function normalizeNameOrExpr($name) {
|
|
138
|
+
if ($name instanceof Expr) {
|
|
139
|
+
return $name;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (!is_string($name) && !($name instanceof Name)) {
|
|
143
|
+
throw new \LogicException(
|
|
144
|
+
'Name must be a string or an instance of Node\Name or Node\Expr'
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return self::normalizeName($name);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Normalizes a type: Converts plain-text type names into proper AST representation.
|
|
153
|
+
*
|
|
154
|
+
* In particular, builtin types become Identifiers, custom types become Names and nullables
|
|
155
|
+
* are wrapped in NullableType nodes.
|
|
156
|
+
*
|
|
157
|
+
* @param string|Name|Identifier|ComplexType $type The type to normalize
|
|
158
|
+
*
|
|
159
|
+
* @return Name|Identifier|ComplexType The normalized type
|
|
160
|
+
*/
|
|
161
|
+
public static function normalizeType($type) {
|
|
162
|
+
if (!is_string($type)) {
|
|
163
|
+
if (
|
|
164
|
+
!$type instanceof Name && !$type instanceof Identifier &&
|
|
165
|
+
!$type instanceof ComplexType
|
|
166
|
+
) {
|
|
167
|
+
throw new \LogicException(
|
|
168
|
+
'Type must be a string, or an instance of Name, Identifier or ComplexType'
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
return $type;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
$nullable = false;
|
|
175
|
+
if (strlen($type) > 0 && $type[0] === '?') {
|
|
176
|
+
$nullable = true;
|
|
177
|
+
$type = substr($type, 1);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
$builtinTypes = [
|
|
181
|
+
'array',
|
|
182
|
+
'callable',
|
|
183
|
+
'bool',
|
|
184
|
+
'int',
|
|
185
|
+
'float',
|
|
186
|
+
'string',
|
|
187
|
+
'iterable',
|
|
188
|
+
'void',
|
|
189
|
+
'object',
|
|
190
|
+
'null',
|
|
191
|
+
'false',
|
|
192
|
+
'mixed',
|
|
193
|
+
'never',
|
|
194
|
+
'true',
|
|
195
|
+
];
|
|
196
|
+
|
|
197
|
+
$lowerType = strtolower($type);
|
|
198
|
+
if (in_array($lowerType, $builtinTypes)) {
|
|
199
|
+
$type = new Identifier($lowerType);
|
|
200
|
+
} else {
|
|
201
|
+
$type = self::normalizeName($type);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
$notNullableTypes = [
|
|
205
|
+
'void', 'mixed', 'never',
|
|
206
|
+
];
|
|
207
|
+
if ($nullable && in_array((string) $type, $notNullableTypes)) {
|
|
208
|
+
throw new \LogicException(sprintf('%s type cannot be nullable', $type));
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
return $nullable ? new NullableType($type) : $type;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Normalizes a value: Converts nulls, booleans, integers,
|
|
216
|
+
* floats, strings and arrays into their respective nodes
|
|
217
|
+
*
|
|
218
|
+
* @param Node\Expr|bool|null|int|float|string|array|\UnitEnum $value The value to normalize
|
|
219
|
+
*
|
|
220
|
+
* @return Expr The normalized value
|
|
221
|
+
*/
|
|
222
|
+
public static function normalizeValue($value): Expr {
|
|
223
|
+
if ($value instanceof Node\Expr) {
|
|
224
|
+
return $value;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
if (is_null($value)) {
|
|
228
|
+
return new Expr\ConstFetch(
|
|
229
|
+
new Name('null')
|
|
230
|
+
);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
if (is_bool($value)) {
|
|
234
|
+
return new Expr\ConstFetch(
|
|
235
|
+
new Name($value ? 'true' : 'false')
|
|
236
|
+
);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
if (is_int($value)) {
|
|
240
|
+
return new Scalar\Int_($value);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
if (is_float($value)) {
|
|
244
|
+
return new Scalar\Float_($value);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
if (is_string($value)) {
|
|
248
|
+
return new Scalar\String_($value);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
if (is_array($value)) {
|
|
252
|
+
$items = [];
|
|
253
|
+
$lastKey = -1;
|
|
254
|
+
foreach ($value as $itemKey => $itemValue) {
|
|
255
|
+
// for consecutive, numeric keys don't generate keys
|
|
256
|
+
if (null !== $lastKey && ++$lastKey === $itemKey) {
|
|
257
|
+
$items[] = new Node\ArrayItem(
|
|
258
|
+
self::normalizeValue($itemValue)
|
|
259
|
+
);
|
|
260
|
+
} else {
|
|
261
|
+
$lastKey = null;
|
|
262
|
+
$items[] = new Node\ArrayItem(
|
|
263
|
+
self::normalizeValue($itemValue),
|
|
264
|
+
self::normalizeValue($itemKey)
|
|
265
|
+
);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
return new Expr\Array_($items);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
if ($value instanceof \UnitEnum) {
|
|
273
|
+
return new Expr\ClassConstFetch(new FullyQualified(\get_class($value)), new Identifier($value->name));
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
throw new \LogicException('Invalid value');
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Normalizes a doc comment: Converts plain strings to PhpParser\Comment\Doc.
|
|
281
|
+
*
|
|
282
|
+
* @param Comment\Doc|string $docComment The doc comment to normalize
|
|
283
|
+
*
|
|
284
|
+
* @return Comment\Doc The normalized doc comment
|
|
285
|
+
*/
|
|
286
|
+
public static function normalizeDocComment($docComment): Comment\Doc {
|
|
287
|
+
if ($docComment instanceof Comment\Doc) {
|
|
288
|
+
return $docComment;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
if (is_string($docComment)) {
|
|
292
|
+
return new Comment\Doc($docComment);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
throw new \LogicException('Doc comment must be a string or an instance of PhpParser\Comment\Doc');
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Normalizes a attribute: Converts attribute to the Attribute Group if needed.
|
|
300
|
+
*
|
|
301
|
+
* @param Node\Attribute|Node\AttributeGroup $attribute
|
|
302
|
+
*
|
|
303
|
+
* @return Node\AttributeGroup The Attribute Group
|
|
304
|
+
*/
|
|
305
|
+
public static function normalizeAttribute($attribute): Node\AttributeGroup {
|
|
306
|
+
if ($attribute instanceof Node\AttributeGroup) {
|
|
307
|
+
return $attribute;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
if (!($attribute instanceof Node\Attribute)) {
|
|
311
|
+
throw new \LogicException('Attribute must be an instance of PhpParser\Node\Attribute or PhpParser\Node\AttributeGroup');
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
return new Node\AttributeGroup([$attribute]);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* Adds a modifier and returns new modifier bitmask.
|
|
319
|
+
*
|
|
320
|
+
* @param int $modifiers Existing modifiers
|
|
321
|
+
* @param int $modifier Modifier to set
|
|
322
|
+
*
|
|
323
|
+
* @return int New modifiers
|
|
324
|
+
*/
|
|
325
|
+
public static function addModifier(int $modifiers, int $modifier): int {
|
|
326
|
+
Modifiers::verifyModifier($modifiers, $modifier);
|
|
327
|
+
return $modifiers | $modifier;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Adds a modifier and returns new modifier bitmask.
|
|
332
|
+
* @return int New modifiers
|
|
333
|
+
*/
|
|
334
|
+
public static function addClassModifier(int $existingModifiers, int $modifierToSet): int {
|
|
335
|
+
Modifiers::verifyClassModifier($existingModifiers, $modifierToSet);
|
|
336
|
+
return $existingModifiers | $modifierToSet;
|
|
337
|
+
}
|
|
338
|
+
}
|