jaroslavtyc/drd-plus-therugist-spells

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

Summary

Maintainability
D
1 day
Test Coverage

Modifier has 51 functions (exceeds 20 allowed). Consider refactoring.
Open

class Modifier extends StrictObject
{
    use ToFlatArrayTrait;

    /** @var ModifierCode */
Severity: Major
Found in DrdPlus/Theurgist/Spells/Modifier.php - About 7 hrs to fix

    File Modifier.php has 375 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/Modifier.php - About 5 hrs to fix

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

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

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

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

        Method getDifficultyChange has 32 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

            public function getDifficultyChange(): DifficultyChange
            {
                $modifierParameters = [
                    $this->getAttackWithAddition(),
                    $this->getNumberOfConditionsWithAddition(),
        Severity: Minor
        Found in DrdPlus/Theurgist/Spells/Modifier.php - About 1 hr to fix

          The class Modifier has 49 public methods and attributes. Consider reducing the number of public items to less than 45.
          Open

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

          ExcessivePublicCount

          Since: 0.1

          A large number of public methods and attributes declared in a class can indicate the class may need to be broken up as increased effort will be required to thoroughly test it.

          Example

          public class Foo {
              public $value;
              public $something;
              public $var;
              // [... more more public attributes ...]
          
              public function doWork() {}
              public function doMoreWork() {}
              public function doWorkAgain() {}
              // [... more more public methods ...]
          }

          Source https://phpmd.org/rules/codesize.html#excessivepubliccount

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

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

          Cognitive Complexity

          Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

          A method's cognitive complexity is based on a few simple rules:

          • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
          • Code is considered more complex for each "break in the linear flow of the code"
          • Code is considered more complex when "flow breaking structures are nested"

          Further reading

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

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

          CouplingBetweenObjects

          Since: 1.1.0

          A class with too many dependencies has negative impacts on several quality aspects of a class. This includes quality criteria like stability, maintainability and understandability

          Example

          class Foo {
              /**
               * @var \foo\bar\X
               */
              private $x = null;
          
              /**
               * @var \foo\bar\Y
               */
              private $y = null;
          
              /**
               * @var \foo\bar\Z
               */
              private $z = null;
          
              public function setFoo(\Foo $foo) {}
              public function setBar(\Bar $bar) {}
              public function setBaz(\Baz $baz) {}
          
              /**
               * @return \SplObjectStorage
               * @throws \OutOfRangeException
               * @throws \InvalidArgumentException
               * @throws \ErrorException
               */
              public function process(\Iterator $it) {}
          
              // ...
          }

          Source https://phpmd.org/rules/design.html#couplingbetweenobjects

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

                      $getBaseParameter = StringTools::assembleGetterForName('base_' . $mutableSpellParameter);
          Severity: Minor
          Found in DrdPlus/Theurgist/Spells/Modifier.php by phpmd

          StaticAccess

          Since: 1.4.0

          Static access causes unexchangeable dependencies to other classes and leads to hard to test code. Avoid using static access at all costs and instead inject dependencies through the constructor. The only case when static access is acceptable is when used for factory methods.

          Example

          class Foo
          {
              public function bar()
              {
                  Bar::baz();
              }
          }

          Source https://phpmd.org/rules/cleancode.html#staticaccess

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

                              . ', so given spell parameter value ' . ValueDescriber::describe($spellParameterValues[$mutableSpellParameter])
          Severity: Minor
          Found in DrdPlus/Theurgist/Spells/Modifier.php by phpmd

          StaticAccess

          Since: 1.4.0

          Static access causes unexchangeable dependencies to other classes and leads to hard to test code. Avoid using static access at all costs and instead inject dependencies through the constructor. The only case when static access is acceptable is when used for factory methods.

          Example

          class Foo
          {
              public function bar()
              {
                  Bar::baz();
              }
          }

          Source https://phpmd.org/rules/cleancode.html#staticaccess

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

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

          StaticAccess

          Since: 1.4.0

          Static access causes unexchangeable dependencies to other classes and leads to hard to test code. Avoid using static access at all costs and instead inject dependencies through the constructor. The only case when static access is acceptable is when used for factory methods.

          Example

          class Foo
          {
              public function bar()
              {
                  Bar::baz();
              }
          }

          Source https://phpmd.org/rules/cleancode.html#staticaccess

          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/Modifier.php by phpmd

          StaticAccess

          Since: 1.4.0

          Static access causes unexchangeable dependencies to other classes and leads to hard to test code. Avoid using static access at all costs and instead inject dependencies through the constructor. The only case when static access is acceptable is when used for factory methods.

          Example

          class Foo
          {
              public function bar()
              {
                  Bar::baz();
              }
          }

          Source https://phpmd.org/rules/cleancode.html#staticaccess

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

                          . implode(', ', ModifierMutableSpellParameterCode::getPossibleValues())
          Severity: Minor
          Found in DrdPlus/Theurgist/Spells/Modifier.php by phpmd

          StaticAccess

          Since: 1.4.0

          Static access causes unexchangeable dependencies to other classes and leads to hard to test code. Avoid using static access at all costs and instead inject dependencies through the constructor. The only case when static access is acceptable is when used for factory methods.

          Example

          class Foo
          {
              public function bar()
              {
                  Bar::baz();
              }
          }

          Source https://phpmd.org/rules/cleancode.html#staticaccess

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

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

          StaticAccess

          Since: 1.4.0

          Static access causes unexchangeable dependencies to other classes and leads to hard to test code. Avoid using static access at all costs and instead inject dependencies through the constructor. The only case when static access is acceptable is when used for factory methods.

          Example

          class Foo
          {
              public function bar()
              {
                  Bar::baz();
              }
          }

          Source https://phpmd.org/rules/cleancode.html#staticaccess

          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/Modifier.php by phpmd

          StaticAccess

          Since: 1.4.0

          Static access causes unexchangeable dependencies to other classes and leads to hard to test code. Avoid using static access at all costs and instead inject dependencies through the constructor. The only case when static access is acceptable is when used for factory methods.

          Example

          class Foo
          {
              public function bar()
              {
                  Bar::baz();
              }
          }

          Source https://phpmd.org/rules/cleancode.html#staticaccess

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

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

          LongVariable

          Since: 0.2

          Detects when a field, formal or local variable is declared with a long name.

          Example

          class Something {
              protected $reallyLongIntName = -3; // VIOLATION - Field
              public static function main( array $interestingArgumentsList[] ) { // VIOLATION - Formal
                  $otherReallyLongName = -5; // VIOLATION - Local
                  for ($interestingIntIndex = 0; // VIOLATION - For
                       $interestingIntIndex < 10;
                       $interestingIntIndex++ ) {
                  }
              }
          }

          Source https://phpmd.org/rules/naming.html#longvariable

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

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

          LongVariable

          Since: 0.2

          Detects when a field, formal or local variable is declared with a long name.

          Example

          class Something {
              protected $reallyLongIntName = -3; // VIOLATION - Field
              public static function main( array $interestingArgumentsList[] ) { // VIOLATION - Formal
                  $otherReallyLongName = -5; // VIOLATION - Local
                  for ($interestingIntIndex = 0; // VIOLATION - For
                       $interestingIntIndex < 10;
                       $interestingIntIndex++ ) {
                  }
              }
          }

          Source https://phpmd.org/rules/naming.html#longvariable

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

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

          LongVariable

          Since: 0.2

          Detects when a field, formal or local variable is declared with a long name.

          Example

          class Something {
              protected $reallyLongIntName = -3; // VIOLATION - Field
              public static function main( array $interestingArgumentsList[] ) { // VIOLATION - Formal
                  $otherReallyLongName = -5; // VIOLATION - Local
                  for ($interestingIntIndex = 0; // VIOLATION - For
                       $interestingIntIndex < 10;
                       $interestingIntIndex++ ) {
                  }
              }
          }

          Source https://phpmd.org/rules/naming.html#longvariable

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

                  $baseNumberOfWaypoints = $this->getBaseNumberOfWaypoints();
          Severity: Minor
          Found in DrdPlus/Theurgist/Spells/Modifier.php by phpmd

          LongVariable

          Since: 0.2

          Detects when a field, formal or local variable is declared with a long name.

          Example

          class Something {
              protected $reallyLongIntName = -3; // VIOLATION - Field
              public static function main( array $interestingArgumentsList[] ) { // VIOLATION - Formal
                  $otherReallyLongName = -5; // VIOLATION - Local
                  for ($interestingIntIndex = 0; // VIOLATION - For
                       $interestingIntIndex < 10;
                       $interestingIntIndex++ ) {
                  }
              }
          }

          Source https://phpmd.org/rules/naming.html#longvariable

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

                  $baseNumberOfSituations = $this->getBaseNumberOfSituations();
          Severity: Minor
          Found in DrdPlus/Theurgist/Spells/Modifier.php by phpmd

          LongVariable

          Since: 0.2

          Detects when a field, formal or local variable is declared with a long name.

          Example

          class Something {
              protected $reallyLongIntName = -3; // VIOLATION - Field
              public static function main( array $interestingArgumentsList[] ) { // VIOLATION - Formal
                  $otherReallyLongName = -5; // VIOLATION - Local
                  for ($interestingIntIndex = 0; // VIOLATION - For
                       $interestingIntIndex < 10;
                       $interestingIntIndex++ ) {
                  }
              }
          }

          Source https://phpmd.org/rules/naming.html#longvariable

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

                  array $modifierSpellParameterValues,
          Severity: Minor
          Found in DrdPlus/Theurgist/Spells/Modifier.php by phpmd

          LongVariable

          Since: 0.2

          Detects when a field, formal or local variable is declared with a long name.

          Example

          class Something {
              protected $reallyLongIntName = -3; // VIOLATION - Field
              public static function main( array $interestingArgumentsList[] ) { // VIOLATION - Formal
                  $otherReallyLongName = -5; // VIOLATION - Local
                  for ($interestingIntIndex = 0; // VIOLATION - For
                       $interestingIntIndex < 10;
                       $interestingIntIndex++ ) {
                  }
              }
          }

          Source https://phpmd.org/rules/naming.html#longvariable

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

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

          LongVariable

          Since: 0.2

          Detects when a field, formal or local variable is declared with a long name.

          Example

          class Something {
              protected $reallyLongIntName = -3; // VIOLATION - Field
              public static function main( array $interestingArgumentsList[] ) { // VIOLATION - Formal
                  $otherReallyLongName = -5; // VIOLATION - Local
                  for ($interestingIntIndex = 0; // VIOLATION - For
                       $interestingIntIndex < 10;
                       $interestingIntIndex++ ) {
                  }
              }
          }

          Source https://phpmd.org/rules/naming.html#longvariable

          There are no issues that match your filters.

          Category
          Status