librenms/librenms

View on GitHub
LibreNMS/Alerting/QueryBuilderFluentParser.php

Summary

Maintainability
B
4 hrs
Test Coverage

Method parseRuleToQuery has 41 lines of code (exceeds 25 allowed). Consider refactoring.
Open

    protected function parseRuleToQuery($query, $rule, $condition)
    {
        [$field, $op, $value] = $this->expandRule($rule);

        switch ($op) {
Severity: Minor
Found in LibreNMS/Alerting/QueryBuilderFluentParser.php - About 1 hr to fix

    Avoid too many return statements within this method.
    Open

            return $query;
    Severity: Major
    Found in LibreNMS/Alerting/QueryBuilderFluentParser.php - About 30 mins to fix

      Avoid too many return statements within this method.
      Open

                      return $query->whereBetween($field, $value, $condition, $op == 'not_between');
      Severity: Major
      Found in LibreNMS/Alerting/QueryBuilderFluentParser.php - About 30 mins to fix

        Avoid too many return statements within this method.
        Open

                        return $query->where($field, self::$operators[$op], '');
        Severity: Major
        Found in LibreNMS/Alerting/QueryBuilderFluentParser.php - About 30 mins to fix

          Avoid too many return statements within this method.
          Open

                          return $query->whereNull($field, $condition, $op == 'is_not_null');
          Severity: Major
          Found in LibreNMS/Alerting/QueryBuilderFluentParser.php - About 30 mins to fix

            Avoid too many return statements within this method.
            Open

                                return $query->whereIn($field, $values, $condition, $op == 'not_in');
            Severity: Major
            Found in LibreNMS/Alerting/QueryBuilderFluentParser.php - About 30 mins to fix

              The method parseRuleToQuery() has a Cyclomatic Complexity of 24. The configured cyclomatic complexity threshold is 10.
              Open

                  protected function parseRuleToQuery($query, $rule, $condition)
                  {
                      [$field, $op, $value] = $this->expandRule($rule);
              
                      switch ($op) {

              CyclomaticComplexity

              Since: 0.1

              Complexity is determined by the number of decision points in a method plus one for the method entry. The decision points are 'if', 'while', 'for', and 'case labels'. Generally, 1-4 is low complexity, 5-7 indicates moderate complexity, 8-10 is high complexity, and 11+ is very high complexity.

              Example

              // Cyclomatic Complexity = 11
              class Foo {
              1   public function example() {
              2       if ($a == $b) {
              3           if ($a1 == $b1) {
                              fiddle();
              4           } elseif ($a2 == $b2) {
                              fiddle();
                          } else {
                              fiddle();
                          }
              5       } elseif ($c == $d) {
              6           while ($c == $d) {
                              fiddle();
                          }
              7        } elseif ($e == $f) {
              8           for ($n = 0; $n < $h; $n++) {
                              fiddle();
                          }
                      } else {
                          switch ($z) {
              9               case 1:
                                  fiddle();
                                  break;
              10              case 2:
                                  fiddle();
                                  break;
              11              case 3:
                                  fiddle();
                                  break;
                              default:
                                  fiddle();
                                  break;
                          }
                      }
                  }
              }

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

              Avoid using undefined variables such as '::$operators' which will lead to PHP notices.
              Open

                              return $query->where($field, self::$operators[$op], $value, $condition);

              UndefinedVariable

              Since: 2.8.0

              Detects when a variable is used that has not been defined before.

              Example

              class Foo
              {
                  private function bar()
                  {
                      // $message is undefined
                      echo $message;
                  }
              }

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

              Avoid using undefined variables such as '::$operators' which will lead to PHP notices.
              Open

                              return $query->where($field, self::$operators[$op], "$value%", $condition);

              UndefinedVariable

              Since: 2.8.0

              Detects when a variable is used that has not been defined before.

              Example

              class Foo
              {
                  private function bar()
                  {
                      // $message is undefined
                      echo $message;
                  }
              }

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

              Avoid using undefined variables such as '::$operators' which will lead to PHP notices.
              Open

                              return $query->where($field, self::$operators[$op], "%$value", $condition);

              UndefinedVariable

              Since: 2.8.0

              Detects when a variable is used that has not been defined before.

              Example

              class Foo
              {
                  private function bar()
                  {
                      // $message is undefined
                      echo $message;
                  }
              }

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

              Avoid using undefined variables such as '::$operators' which will lead to PHP notices.
              Open

                              return $query->where($field, self::$operators[$op], '');

              UndefinedVariable

              Since: 2.8.0

              Detects when a variable is used that has not been defined before.

              Example

              class Foo
              {
                  private function bar()
                  {
                      // $message is undefined
                      echo $message;
                  }
              }

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

              Avoid using undefined variables such as '::$operators' which will lead to PHP notices.
              Open

                              return $query->where($field, self::$operators[$op], "%$value%", $condition);

              UndefinedVariable

              Since: 2.8.0

              Detects when a variable is used that has not been defined before.

              Example

              class Foo
              {
                  private function bar()
                  {
                      // $message is undefined
                      echo $message;
                  }
              }

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

              The method parseGroupToQuery uses an else expression. Else clauses are basically not necessary and you can simplify the code by not using them.
              Open

                              } else {
                                  $this->parseRuleToQuery($query, $group_rule, $rule['condition']);
                              }

              ElseExpression

              Since: 1.4.0

              An if expression with an else branch is basically not necessary. You can rewrite the conditions in a way that the else clause is not necessary and the code becomes simpler to read. To achieve this, use early return statements, though you may need to split the code it several smaller methods. For very simple assignments you could also use the ternary operations.

              Example

              class Foo
              {
                  public function bar($flag)
                  {
                      if ($flag) {
                          // one branch
                      } else {
                          // another branch
                      }
                  }
              }

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

              Avoid unused local variables such as '$leftKey'.
              Open

                              [$leftTable, $leftKey] = explode('.', $left);

              UnusedLocalVariable

              Since: 0.2

              Detects when a local variable is declared and/or assigned, but not used.

              Example

              class Foo {
                  public function doSomething()
                  {
                      $i = 5; // Unused
                  }
              }

              Source https://phpmd.org/rules/unusedcode.html#unusedlocalvariable

              Avoid unused local variables such as '$rightKey'.
              Open

                              [$rightTable, $rightKey] = explode('.', $right);

              UnusedLocalVariable

              Since: 0.2

              Detects when a local variable is declared and/or assigned, but not used.

              Example

              class Foo {
                  public function doSomething()
                  {
                      $i = 5; // Unused
                  }
              }

              Source https://phpmd.org/rules/unusedcode.html#unusedlocalvariable

              Avoid variables with short names like $op. Configured minimum length is 3.
              Open

                      [$field, $op, $value] = $this->expandRule($rule);

              ShortVariable

              Since: 0.2

              Detects when a field, local, or parameter has a very short name.

              Example

              class Something {
                  private $q = 15; // VIOLATION - Field
                  public static function main( array $as ) { // VIOLATION - Formal
                      $r = 20 + $this->q; // VIOLATION - Local
                      for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                          $r += $this->q;
                      }
                  }
              }

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

              Avoid variables with short names like $op. Configured minimum length is 3.
              Open

                      $op = $rule['operator'];

              ShortVariable

              Since: 0.2

              Detects when a field, local, or parameter has a very short name.

              Example

              class Something {
                  private $q = 15; // VIOLATION - Field
                  public static function main( array $as ) { // VIOLATION - Formal
                      $r = 20 + $this->q; // VIOLATION - Local
                      for (int $i = 0; $i < 10; $i++) { // Not a Violation (inside FOR)
                          $r += $this->q;
                      }
                  }
              }

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

              There are no issues that match your filters.

              Category
              Status