jaroslavtyc/drd-plus-therugist-spells

View on GitHub
DrdPlus/Theurgist/Spells/Formula.php

Summary

Maintainability
D
2 days
Test Coverage

Showing 36 of 36 total issues

File Formula.php has 410 lines of code (exceeds 250 allowed). Consider refactoring.
Open

<?php
declare(strict_types=1);
 
namespace DrdPlus\Theurgist\Spells;
 
 
Severity: Minor
Found in DrdPlus/Theurgist/Spells/Formula.php - About 5 hrs to fix

    Formula has 32 functions (exceeds 20 allowed). Consider refactoring.
    Open

    class Formula extends StrictObject
    {
    use ToFlatArrayTrait;
     
    /** @var FormulaCode */
    Severity: Minor
    Found in DrdPlus/Theurgist/Spells/Formula.php - About 4 hrs to fix

      The class Formula has an overall complexity of 79 which is very high. The configured complexity threshold is 50.
      Open

      class Formula extends StrictObject
      {
      use ToFlatArrayTrait;
       
      /** @var FormulaCode */
      Severity: Minor
      Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

      Function getParameterBonusFromModifiers has a Cognitive Complexity of 15 (exceeds 5 allowed). Consider refactoring.
      Open

      private function getParameterBonusFromModifiers(string $parameterName)
      {
      $bonusParts = [];
      foreach ($this->modifiers as $modifier) {
      if ($modifier->getModifierCode()->getValue() === ModifierCode::GATE) {
      Severity: Minor
      Found in DrdPlus/Theurgist/Spells/Formula.php - About 1 hr to fix

      Method getCurrentDifficulty has 35 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

      public function getCurrentDifficulty(): FormulaDifficulty
      {
      $formulaParameters = [
      $this->getAttackWithAddition(),
      $this->getBrightnessWithAddition(),
      Severity: Minor
      Found in DrdPlus/Theurgist/Spells/Formula.php - About 1 hr to fix

        Method sanitizeSpellParameterChanges has 34 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

        private function sanitizeSpellParameterChanges(array $spellParameterValues): array
        {
        $sanitizedChanges = [];
        foreach (FormulaMutableSpellParameterCode::getPossibleValues() as $mutableSpellParameter) {
        if (!\array_key_exists($mutableSpellParameter, $spellParameterValues)) {
        Severity: Minor
        Found in DrdPlus/Theurgist/Spells/Formula.php - About 1 hr to fix

          Method getParameterBonusFromModifiers has 31 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

          private function getParameterBonusFromModifiers(string $parameterName)
          {
          $bonusParts = [];
          foreach ($this->modifiers as $modifier) {
          if ($modifier->getModifierCode()->getValue() === ModifierCode::GATE) {
          Severity: Minor
          Found in DrdPlus/Theurgist/Spells/Formula.php - About 1 hr to fix

            Function sanitizeSpellParameterChanges has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
            Open

            private function sanitizeSpellParameterChanges(array $spellParameterValues): array
            {
            $sanitizedChanges = [];
            foreach (FormulaMutableSpellParameterCode::getPossibleValues() as $mutableSpellParameter) {
            if (!\array_key_exists($mutableSpellParameter, $spellParameterValues)) {
            Severity: Minor
            Found in DrdPlus/Theurgist/Spells/Formula.php - About 55 mins to fix

            Method __construct has 6 arguments (exceeds 4 allowed). Consider refactoring.
            Open

            FormulaCode $formulaCode,
            FormulasTable $formulasTable,
            DistanceTable $distanceTable,
            array $formulaSpellParameterValues = [],
            array $modifiers = [],
            Severity: Minor
            Found in DrdPlus/Theurgist/Spells/Formula.php - About 45 mins to fix

              Function getRealmsAffectionsSum has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
              Open

              private function getRealmsAffectionsSum(): array
              {
              $baseRealmsAffection = $this->formulasTable->getRealmsAffection($this->getFormulaCode());
              $realmsAffectionsSum = [
              // like daily => -2
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php - About 25 mins to fix

              The class Formula has a coupling between objects value of 38. Consider to reduce the number of dependencies under 13.
              Open

              class Formula extends StrictObject
              {
              use ToFlatArrayTrait;
               
              /** @var FormulaCode */
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid using static access to class '\Granam\String\StringTools' in method 'getParameterBonusFromModifiers'.
              Open

              $getParameterWithAddition = StringTools::assembleGetterForName($parameterName . 'WithAddition');
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid using static access to class '\Granam\Tools\ValueDescriber' in method 'sanitizeSpellParameterChanges'.
              Open

              'Expected integer, got ' . ValueDescriber::describe($spellParameterValues[$mutableSpellParameter])
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid using static access to class '\Granam\Tools\ValueDescriber' in method 'getCheckedSpellTraits'.
              Open

              'Expected instance of ' . Modifier::class . ', got ' . ValueDescriber::describe($spellTrait)
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid using static access to class '\Granam\Tools\ValueDescriber' in method 'getCheckedModifiers'.
              Open

              'Expected instance of ' . Modifier::class . ', got ' . ValueDescriber::describe($modifier)
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid using static access to class '\DrdPlus\Codes\Theurgist\FormulaMutableSpellParameterCode' in method 'sanitizeSpellParameterChanges'.
              Open

              foreach (FormulaMutableSpellParameterCode::getPossibleValues() as $mutableSpellParameter) {
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid using static access to class '\Granam\String\StringTools' in method 'sanitizeSpellParameterChanges'.
              Open

              $getParameter = StringTools::assembleGetterForName($mutableSpellParameter);
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid using static access to class '\Granam\Integer\Tools\ToInteger' in method 'sanitizeSpellParameterChanges'.
              Open

              $sanitizedValue = ToInteger::toInteger($spellParameterValues[$mutableSpellParameter]);
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid using static access to class '\DrdPlus\Codes\Theurgist\FormulaMutableSpellParameterCode' in method 'sanitizeSpellParameterChanges'.
              Open

              . \implode(', ', FormulaMutableSpellParameterCode::getPossibleValues())
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid using static access to class '\Granam\Tools\ValueDescriber' in method 'sanitizeSpellParameterChanges'.
              Open

              . ', so given non-zero addition ' . ValueDescriber::describe($spellParameterValues[$mutableSpellParameter])
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Similar blocks of code found in 2 locations. Consider refactoring.
              Open

              public function getCurrentSpellSpeed(): ?SpellSpeed
              {
              $spellSpeedWithAddition = $this->getSpellSpeedWithAddition();
              $spellSpeedBonus = $this->getParameterBonusFromModifiers(ModifierMutableSpellParameterCode::SPELL_SPEED);
              if (!$spellSpeedWithAddition && $spellSpeedBonus === false) {
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php and 1 other location - About 30 mins to fix
              DrdPlus/Theurgist/Spells/Formula.php on lines 406..421

              Similar blocks of code found in 2 locations. Consider refactoring.
              Open

              public function getCurrentPower(): ?Power
              {
              $powerWithAddition = $this->getPowerWithAddition();
              $powerBonus = $this->getParameterBonusFromModifiers(ModifierMutableSpellParameterCode::POWER);
              if (!$powerWithAddition && $powerBonus === false) {
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php and 1 other location - About 30 mins to fix
              DrdPlus/Theurgist/Spells/Formula.php on lines 522..537

              Avoid excessively long variable names like $modifierRealmsAffection. Keep variable name length under 20.
              Open

              $modifierRealmsAffection = $modifier->getRealmsAffection();
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid excessively long variable names like $epicenterShiftByModifiers. Keep variable name length under 20.
              Open

              $epicenterShiftByModifiers = $this->getParameterBonusFromModifiers(ModifierMutableSpellParameterCode::EPICENTER_SHIFT);
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid excessively long variable names like $getParameterWithAddition. Keep variable name length under 20.
              Open

              $getParameterWithAddition = StringTools::assembleGetterForName($parameterName . 'WithAddition');
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid excessively long variable names like $formulaSpellParameterChanges. Keep variable name length under 20.
              Open

              private $formulaSpellParameterChanges;
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid excessively long variable names like $parametersDifficultyChangeSum. Keep variable name length under 20.
              Open

              $parametersDifficultyChangeSum = 0;
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid excessively long variable names like $radiusModifiersChange. Keep variable name length under 20.
              Open

              $radiusModifiersChange = $this->getParameterBonusFromModifiers(ModifierMutableSpellParameterCode::RADIUS);
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid excessively long variable names like $spellSpeedWithAddition. Keep variable name length under 20.
              Open

              $spellSpeedWithAddition = $this->getSpellSpeedWithAddition();
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid excessively long variable names like $formulaSpellParameterValues. Keep variable name length under 20.
              Open

              array $formulaSpellParameterValues = [],
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid excessively long variable names like $mutableSpellParameter. Keep variable name length under 20.
              Open

              foreach (FormulaMutableSpellParameterCode::getPossibleValues() as $mutableSpellParameter) {
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid excessively long variable names like $modifierRealmsAffectionPeriod. Keep variable name length under 20.
              Open

              $modifierRealmsAffectionPeriod = $modifierRealmsAffection->getAffectionPeriod()->getValue();
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid excessively long variable names like $epicenterShiftWithAddition. Keep variable name length under 20.
              Open

              $epicenterShiftWithAddition = $this->getEpicenterShiftWithAddition();
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid excessively long variable names like $spellTraitsDifficultyChangeSum. Keep variable name length under 20.
              Open

              $spellTraitsDifficultyChangeSum = 0;
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid excessively long variable names like $byModifierRequiredRealm. Keep variable name length under 20.
              Open

              $byModifierRequiredRealm = $modifier->getRequiredRealm();
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd

              Avoid excessively long variable names like $modifiersDifficultyChangeSum. Keep variable name length under 20.
              Open

              $modifiersDifficultyChangeSum = 0;
              Severity: Minor
              Found in DrdPlus/Theurgist/Spells/Formula.php by phpmd
              Category
              Status