Test Setup Failed
Push — master ( f5019c...2203ff )
by Benjamin
04:49
created

Evaluate   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 12
c 1
b 0
f 0
dl 0
loc 29
rs 10
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A name() 0 3 1
A analyze() 0 17 2
1
<?php
2
declare(strict_types=1);
3
4
namespace Bdelespierre\LaravelBladeLinter\Backend;
5
6
use Bdelespierre\LaravelBladeLinter\Backend;
7
use Bdelespierre\LaravelBladeLinter\ErrorRecord;
8
9
final class Evaluate implements Backend
10
{
11
    /**
12
     * @param \SplFileInfo $file
13
     * @param string $code
14
     * @return list<ErrorRecord>
0 ignored issues
show
Bug introduced by
The type Bdelespierre\LaravelBladeLinter\Backend\list was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
15
     */
16
    public function analyze(\SplFileInfo $file, string $code): array
17
    {
18
        $code = 'function() { ?>' . $code . '<?php };';
19
20
        try {
21
            eval($code);
0 ignored issues
show
introduced by
The use of eval() is discouraged.
Loading history...
22
        } catch (\ParseError $e) {
0 ignored issues
show
Unused Code introduced by
catch (\ParseError $e) is not reachable.

This check looks for unreachable code. It uses sophisticated control flow analysis techniques to find statements which will never be executed.

Unreachable code is most often the result of return, die or exit statements that have been added for debug purposes.

function fx() {
    try {
        doSomething();
        return true;
    }
    catch (\Exception $e) {
        return false;
    }

    return false;
}

In the above example, the last return false will never be executed, because a return statement has already been met in every possible execution path.

Loading history...
23
            return [
24
                new ErrorRecord(
25
                    'Parse error: ' . $e->getMessage(),
26
                    $file->getPathname(),
27
                    $e->getLine()
28
                )
29
            ];
30
        }
31
32
        return [];
0 ignored issues
show
Bug Best Practice introduced by
The expression return array() returns the type array which is incompatible with the documented return type Bdelespierre\LaravelBladeLinter\Backend\list.
Loading history...
33
    }
34
35
    public static function name(): string
36
    {
37
        return 'eval';
38
    }
39
}
40