Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Mago Laravel Package

carthage-software/mago

Mago is an extremely fast PHP linter, formatter, and static analyzer written in Rust. It brings Rust-inspired speed and reliability to PHP projects with a modern toolchain and great developer experience, plus multiple install options (script, Homebrew, Composer).

View on GitHub
Deep Wiki
Context7

title: Redundancy rules outline: [2, 3]

Redundancy rules

This document details the rules available in the Redundancy category.

Rule Code
Constant Condition constant-condition
Inline Variable Return inline-variable-return
No Closing Tag no-closing-tag
No Empty Comment no-empty-comment
No Empty Loop no-empty-loop
No Is Null no-is-null
No Iterator To Array In Foreach no-iterator-to-array-in-foreach
No Noop no-noop
No Protected in Final no-protected-in-final
No Redundant Binary String Prefix no-redundant-binary-string-prefix
No Redundant Block no-redundant-block
No Redundant Continue no-redundant-continue
No Redundant File no-redundant-file
No Redundant Final no-redundant-final
No Redundant Isset no-redundant-isset
No Redundant Label no-redundant-label
No Redundant Literal Return no-redundant-literal-return
No Redundant Math no-redundant-math
No Redundant Method Override no-redundant-method-override
No Redundant Nullsafe no-redundant-nullsafe
No Redundant Parentheses no-redundant-parentheses
No Redundant Readonly no-redundant-readonly
No Redundant String Concat no-redundant-string-concat
No Redundant Use no-redundant-use
No Redundant Write Visibility no-redundant-write-visibility
No Redundant Yield From no-redundant-yield-from
No Self Assignment no-self-assignment

constant-condition

Detects if statements where the condition is a constant that always evaluates to true or false.

Such statements are redundant. If the condition is always true, the if wrapper is unnecessary. If it's always false, the enclosed code is dead and can be removed or refactored.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php
if ($variable > 10) {
    echo "Greater than 10";
}

Incorrect code

<?php
if (true) {
    echo "This will always run";
}

if (false) {
    echo "This is dead code";
}

inline-variable-return

Detects unnecessary variable assignments immediately before returning the variable.

When a variable is only used once right after being assigned, the assignment can be inlined into the return statement.

Configuration

Option Type Default
enabled boolean true
level string "warning"

Examples

Correct code

<?php

function getValue() {
    return computeResult();
}

function process() {
    $result = computeResult();
    log($result);
    return $result;
}

Incorrect code

<?php

function getValue() {
    $result = computeResult();
    return $result;
}

function getArray() {
    $arr = [1, 2, 3];
    return $arr;
}

no-closing-tag

Detects redundant closing tags ( ?> ) at the end of a file.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

echo "Hello, world!";

Incorrect code

<?php

echo "Hello, world!";

?>

no-empty-comment

Detects empty comments in the codebase. Empty comments are not useful and should be removed to keep the codebase clean and maintainable.

Configuration

Option Type Default
enabled boolean true
level string "note"
preserve-single-line-comments boolean false

Examples

Correct code

<?php

// This is a useful comment.
//
// And so is this whole single line comment block, including the enclosed empty line.
# This is also a useful comment.
/**
 * This is a docblock.
 */

Incorrect code

<?php

//
#
/**/

no-empty-loop

Detects loops (for, foreach, while, do-while) that have an empty body. An empty loop body does not perform any actions and is likely a mistake or redundant code.

Configuration

Option Type Default
enabled boolean true
level string "note"

Examples

Correct code

<?php

foreach ($items as $item) {
    process($item);
}

Incorrect code

<?php

while (should_wait()) {
    // Empty loop body
}

no-is-null

Detects usage of the is_null() function and suggests using a strict === null comparison instead.

The is_null() function is redundant because === null achieves the same result with clearer intent and without the overhead of a function call.

Configuration

Option Type Default
enabled boolean false
level string "note"

Examples

Correct code

<?php

if ($value === null) {
    // ...
}

Incorrect code

<?php

if (is_null($value)) {
    // ...
}

no-iterator-to-array-in-foreach

Detects iterator_to_array() calls used directly as a foreach expression.

Since foreach natively supports any Traversable, wrapping an iterator in iterator_to_array() is redundant and causes unnecessary memory allocation.

Configuration

Option Type Default
enabled boolean false
level string "warning"

Examples

Correct code

<?php

foreach ($iterator as $value) {
    // ...
}

Incorrect code

<?php

foreach (iterator_to_array($iterator) as $value) {
    // ...
}

no-noop

Detects redundant noop statements.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

echo "Hello, world!";

Incorrect code

<?php

;

no-protected-in-final

Detects protected items in final classes or enums.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

final class Foo {
    private string $foo;
    private(set) string $bar;
    private string $baz;

    private function fun(): void {
        // ...
    }
}

Incorrect code

<?php

final class Foo {
    protected string $foo;
    protected(set) string $bar;
    protected private(set) string $baz;

    protected function fun(): void {
        // ...
    }
}

no-redundant-binary-string-prefix

Detects the redundant b/B prefix on string literals. The binary string prefix has no effect in PHP and can be safely removed.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

$foo = 'hello';
$bar = "world";

Incorrect code

<?php

$foo = b'hello';
$bar = b"world";

no-redundant-block

Detects redundant blocks around statements.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

echo "Hello, world!";

Incorrect code

<?php

{
    echo "Hello, world!";
}

no-redundant-continue

Detects redundant continue statements in loops.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

while (true) {
    echo "Hello, world!";
}

Incorrect code

<?php

while (true) {
    echo "Hello, world!";
    continue; // Redundant `continue` statement
}

no-redundant-file

Detects redundant files that contain no executable code or declarations.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

declare(strict_types=1);

function foo(): void {
    return 42;
}

Incorrect code

<?php

declare(strict_types=1);
// This file is redundant.

no-redundant-final

Detects redundant final modifiers on methods in final classes or enum methods.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

final class Foo {
    public function bar(): void {
        // ...
    }
}

Incorrect code

<?php

final class Foo {
    final public function bar(): void {
        // ...
    }
}

no-redundant-isset

Detects redundant arguments in isset() calls where a nested access already implies the parent checks.

For example, isset($d, $d['first'], $d['first']['second']) can be simplified to isset($d['first']['second']) because checking a nested array access or property access implicitly verifies that all parent levels exist.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

if (isset($d['first']['second'])) {
    echo 'all present';
}

Incorrect code

<?php

if (isset($d, $d['first'], $d['first']['second'])) {
    echo 'all present';
}

no-redundant-label

Detects redundant goto labels that are declared but not used.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

goto end;
echo "Hello, world!";
end:

Incorrect code

<?php

label:
echo "Hello, world!";

no-redundant-literal-return

Detects redundant literal guard patterns where an if statement checks if a variable equals a literal and returns that same literal, followed by returning the variable.

This pattern is redundant because if the variable equals the literal, returning the variable would return the same value anyway.

This includes patterns with else clauses and elseif chains where all branches follow the same redundant pattern.

Configuration

Option Type Default
enabled boolean true
level string "warning"

Examples

Correct code

<?php

function getValue($x) {
    return $x;
}

function getValueOrDefault($x, $default) {
    if ($x === null) {
        return $default;
    }
    return $x;
}

Incorrect code

<?php

function getValue($x) {
    if ($x === null) {
        return null;
    }
    return $x;
}

function getWithElse($x) {
    if ($x === null) {
        return null;
    } else {
        return $x;
    }
}

function getWithElseIf($x) {
    if ($x === null) {
        return null;
    } elseif ($x === '') {
        return '';
    }
    return $x;
}

no-redundant-math

Detects redundant mathematical operations that can be simplified or removed. Includes operations like multiplying by 1/-1, adding 0, modulo 1/-1, etc.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

$result = $value * 2;
$sum = 1 + $total;
$difference = $value - 1;
$remainder = $x % 2;

Incorrect code

<?php

$result = $value * 1;
$sum = 0 + $total;
$difference = $value - 0;
$remainder = $x % 1;
$negative = $value * -1;

no-redundant-method-override

Detects methods that override a parent method but only call the parent method with the same arguments.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

class Parent
{
    public function foo(): void
    {
        // ...
    }
}

class Child extends Parent
{
    public function foo(): void
    {
        parent::foo();

        echo 'Additional logic here';
    }
}

Incorrect code

<?php

class Parent
{
    public function foo(): void
    {
        // ...
    }
}

class Child extends Parent
{
    public function foo(): void
    {
        parent::foo();
    }
}

no-redundant-nullsafe

Flags the use of the nullsafe operator (?->) in contexts where its null-checking behavior is redundant.

This occurs in two common situations:

  1. When an expression using ?-> is immediately followed by the null coalescing operator (??).
  2. When an expression using ?-> is checked with isset().

In both scenarios, the surrounding language construct (?? or isset()) already handles null values safely, making the ?-> operator superfluous and the code unnecessarily verbose.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

$name = $user->name ?? 'Guest';

if (isset($user->profile)) {
    // Do something with $user->profile
}

Incorrect code

<?php

$name = $user?->name ?? 'Guest';

if (isset($user?->profile)) {
    // Do something with $user->profile
}

no-redundant-parentheses

Detects redundant parentheses around expressions.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

$foo = 42;

Incorrect code

<?php

$foo = (42);

no-redundant-readonly

Detects redundant readonly modifiers on properties.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

readonly class User
{
    public $name;
}

Incorrect code

<?php

readonly class User
{
    public readonly $name;
}

no-redundant-string-concat

Detects redundant string concatenation expressions.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

$foo = "Hello World";

Incorrect code

<?php

$foo = "Hello" . " World";

no-redundant-use

Detects use statements that import items that are never used or are redundant because they import from the same namespace.

Configuration

Option Type Default
enabled boolean true
level string "warning"

Examples

Correct code

<?php
namespace App;

use App\Helpers\ArrayHelper;

$result = ArrayHelper::combine([]);

Incorrect code

<?php
namespace App;

use App\Helpers\ArrayHelper;
use App\Helpers\StringHelper; // StringHelper is not used.

$result = ArrayHelper::combine([]);

no-redundant-write-visibility

Detects redundant write visibility modifiers on properties.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

final class User
{
    public $name;
}

Incorrect code

<?php

final class User
{
    public public(set) $name;
}

no-redundant-yield-from

Detects redundant use of yield from with single-element array literals.

Using yield from with a single-element array literal creates unnecessary overhead in the generated opcodes. Direct yield is simpler and more efficient.

Configuration

Option Type Default
enabled boolean true
level string "help"

Examples

Correct code

<?php

function gen(): Generator {
    yield 1;
    yield 'foo' => new stdClass();
}

Incorrect code

<?php

function gen(): Generator {
    yield from [1];
    yield from ['foo' => new stdClass()];
}

no-self-assignment

Detects and removes self-assignments where a variable or property is assigned to itself.

Self-assignments have no effect and are typically mistakes or leftover from refactoring. For object properties, the fix is marked as potentially unsafe because reading or writing properties may have side effects through magic methods (__get, __set) or property hooks (PHP 8.4+).

Configuration

Option Type Default
enabled boolean true
level string "warning"

Examples

Correct code

<?php

$a = $b;
$this->x = $other->x;
$foo->bar = $baz->bar;

Incorrect code

<?php

$a = $a;
$this->x = $this->x;
$foo->bar = $foo->bar;
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport