Completed
Branch master (446cf6)
by Guillaume
04:16 queued 01:26
created

BaseCommand::isSupported()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 3
c 0
b 0
f 0
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
namespace App\Commands;
4
5
use Illuminate\Support\Str;
6
use App\Services\DocsetBuilder;
7
use LaravelZero\Framework\Commands\Command;
8
9
abstract class BaseCommand extends Command
10
{
11
    public function handle()
12
    {
13
        $docset = $this->requestedDocset();
14
        $action = $this->requestedAction();
15
16
        if ($this->isSupported($docset)) {
0 ignored issues
show
Unused Code introduced by
The call to App\Commands\BaseCommand::isSupported() has too many arguments starting with $docset. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

16
        if ($this->/** @scrutinizer ignore-call */ isSupported($docset)) {

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
17
            $this->info(Str::ucfirst("$action started"));
18
            (new DocsetBuilder(new $docset(), $this))->$action();
19
            $this->info(Str::ucfirst("$action finished"));
20
21
            return;
22
        }
23
24
        $this->warn('The doc requested does not seem to be supported.');
25
26
        return 1;
27
    }
28
29
    protected function requestedDocset()
30
    {
31
        $classBasename = Str::camel($this->argument('doc'));
0 ignored issues
show
Bug introduced by
It seems like $this->argument('doc') can also be of type string[]; however, parameter $value of Illuminate\Support\Str::camel() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

31
        $classBasename = Str::camel(/** @scrutinizer ignore-type */ $this->argument('doc'));
Loading history...
32
33
        return "App\\Docsets\\$classBasename";
34
    }
35
36
    protected function requestedAction()
37
    {
38
        return $this->getName();
39
    }
40
41
    protected function isSupported()
42
    {
43
        return class_exists($this->requestedDocset());
44
    }
45
}
46