Skip to content

Commit 7dc90f4

Browse files
Merge pull request #5 from DeGraciaMathieu/added-component-analyze
Added component command
2 parents af2727c + 803eb61 commit 7dc90f4

File tree

109 files changed

+2023
-433
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

109 files changed

+2023
-433
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
3+
namespace App\Application\Analyze;
4+
5+
class AnalyzeMetric
6+
{
7+
public function __construct(
8+
private readonly array $metric,
9+
) {}
10+
11+
public function name(): string
12+
{
13+
return $this->metric['name'];
14+
}
15+
16+
public function dependencies(): array
17+
{
18+
return $this->metric['dependencies'];
19+
}
20+
21+
public function abstract(): bool
22+
{
23+
return $this->metric['abstract'];
24+
}
25+
26+
public function efferentCoupling(): float
27+
{
28+
return $this->metric['coupling']['efferent'];
29+
}
30+
31+
public function afferentCoupling(): float
32+
{
33+
return $this->metric['coupling']['afferent'];
34+
}
35+
36+
public function instability(): float
37+
{
38+
return $this->metric['coupling']['instability'];
39+
}
40+
41+
public function numberOfAbstractDependencies(): int
42+
{
43+
return $this->metric['abstractness']['numberOfAbstractDependencies'];
44+
}
45+
46+
public function abstractnessRatio(): float
47+
{
48+
return $this->metric['abstractness']['ratio'];
49+
}
50+
}

app/Application/Analyze/AnalyzeResponseMapper.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,14 @@ public function from(DependencyAggregator $dependencyAggregator): AnalyzeRespons
1111
{
1212
return new AnalyzeResponse(
1313
count: $dependencyAggregator->count(),
14-
metrics: $dependencyAggregator->toArray(),
14+
metrics: $this->map($dependencyAggregator),
1515
);
1616
}
17-
}
17+
18+
private function map(DependencyAggregator $dependencyAggregator): array
19+
{
20+
return array_map(function (array $metric) {
21+
return new AnalyzeMetric($metric);
22+
}, $dependencyAggregator->toArray());
23+
}
24+
}

app/Commands/AbstractCommand.php

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,22 @@
66

77
abstract class AbstractCommand extends Command
88
{
9-
public function stringToList(string $key): array
9+
public function optionToList(string $key): array
1010
{
1111
$value = $this->option($key);
1212

13+
return $this->stringToList($value);
14+
}
15+
16+
public function argumentToList(string $key): array
17+
{
18+
$value = $this->argument($key);
19+
20+
return $this->stringToList($value);
21+
}
22+
23+
private function stringToList(?string $value): array
24+
{
1325
return $value === null ? [] : explode(',', $value);
1426
}
1527
}

app/Commands/Analyze/AnalyzeCommand.php renamed to app/Commands/Analyze/Class/AnalyzeCommand.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace App\Commands\Analyze;
3+
namespace App\Commands\Analyze\Class;
44

55
use App\Commands\AbstractCommand;
66
use App\Application\Analyze\AnalyzeAction;
@@ -9,8 +9,7 @@
99

1010
class AnalyzeCommand extends AbstractCommand
1111
{
12-
protected $signature = 'analyze {path}
13-
{--components=}
12+
protected $signature = 'analyze:class {path}
1413
{--graph}
1514
{--only=}
1615
{--exclude=}
@@ -35,8 +34,8 @@ private function makeRequest(): AnalyzeRequest
3534
{
3635
return new AnalyzeRequest(
3736
path: $this->argument('path'),
38-
only: $this->stringToList('only'),
39-
exclude: $this->stringToList('exclude'),
37+
only: $this->optionToList('only'),
38+
exclude: $this->optionToList('exclude'),
4039
);
4140
}
4241

app/Commands/Analyze/Graph/GraphPresenterFactory.php renamed to app/Commands/Analyze/Class/Graph/GraphPresenterFactory.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
<?php
22

3-
namespace App\Commands\Analyze\Graph;
3+
namespace App\Commands\Analyze\Class\Graph;
44

5-
use App\Presenter\Analyze\Graph\GraphView;
65
use LaravelZero\Framework\Commands\Command;
7-
use App\Commands\Analyze\TransformerFactory;
8-
use App\Presenter\Analyze\Graph\GraphPresenter;
9-
use App\Presenter\Analyze\Graph\Ports\GraphMapper;
10-
use App\Commands\Analyze\Graph\GraphSettingsFactory;
6+
use App\Presenter\Analyze\Class\Graph\GraphView;
7+
use App\Commands\Analyze\Class\TransformerFactory;
8+
use App\Presenter\Analyze\Class\Graph\GraphMapper;
9+
use App\Presenter\Analyze\Class\Graph\GraphPresenter;
10+
use App\Commands\Analyze\Class\Graph\GraphSettingsFactory;
1111

1212
class GraphPresenterFactory
1313
{

app/Commands/Analyze/Graph/GraphSettingsFactory.php renamed to app/Commands/Analyze/Class/Graph/GraphSettingsFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?php
22

3-
namespace App\Commands\Analyze\Graph;
3+
namespace App\Commands\Analyze\Class\Graph;
44

55
use LaravelZero\Framework\Commands\Command;
6-
use App\Presenter\Analyze\Graph\GraphSettings;
6+
use App\Presenter\Analyze\Class\Graph\GraphSettings;
77

88
class GraphSettingsFactory
99
{
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
namespace App\Commands\Analyze\Class;
4+
5+
use Illuminate\Console\Command;
6+
use App\Application\Analyze\AnalyzePresenter;
7+
use App\Commands\Analyze\Class\Graph\GraphPresenterFactory;
8+
use App\Commands\Analyze\Class\Summary\SummaryPresenterFactory;
9+
10+
class PresenterFactory
11+
{
12+
public function __construct(
13+
private readonly GraphPresenterFactory $graphPresenterFactory,
14+
private readonly SummaryPresenterFactory $summaryPresenterFactory,
15+
) {}
16+
17+
public function make(Command $command): AnalyzePresenter
18+
{
19+
return $command->option('graph')
20+
? $this->makeGraphPresenter($command)
21+
: $this->makeSummaryPresenter($command);
22+
}
23+
24+
private function makeGraphPresenter(Command $command): AnalyzePresenter
25+
{
26+
return $this->graphPresenterFactory->make($command);
27+
}
28+
29+
private function makeSummaryPresenter(Command $command): AnalyzePresenter
30+
{
31+
return $this->summaryPresenterFactory->make($command);
32+
}
33+
}

app/Commands/Analyze/Summary/SummaryPresenterFactory.php renamed to app/Commands/Analyze/Class/Summary/SummaryPresenterFactory.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
<?php
22

3-
namespace App\Commands\Analyze\Summary;
3+
namespace App\Commands\Analyze\Class\Summary;
44

55
use LaravelZero\Framework\Commands\Command;
6-
use App\Commands\Analyze\TransformerFactory;
7-
use App\Presenter\Analyze\Summary\SummaryView;
8-
use App\Presenter\Analyze\Summary\SummaryMapper;
9-
use App\Presenter\Analyze\Summary\SummaryPresenter;
10-
use App\Commands\Analyze\Summary\SummarySettingsFactory;
6+
use App\Commands\Analyze\Class\TransformerFactory;
7+
use App\Presenter\Analyze\Class\Summary\SummaryView;
8+
use App\Presenter\Analyze\Class\Summary\SummaryMapper;
9+
use App\Presenter\Analyze\Class\Summary\SummaryPresenter;
10+
use App\Commands\Analyze\Class\Summary\SummarySettingsFactory;
1111

1212
class SummaryPresenterFactory
1313
{

app/Commands/Analyze/Summary/SummarySettingsFactory.php renamed to app/Commands/Analyze/Class/Summary/SummarySettingsFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?php
22

3-
namespace App\Commands\Analyze\Summary;
3+
namespace App\Commands\Analyze\Class\Summary;
44

55
use LaravelZero\Framework\Commands\Command;
6-
use App\Presenter\Analyze\Summary\SummarySettings;
6+
use App\Presenter\Analyze\Class\Summary\SummarySettings;
77

88
class SummarySettingsFactory
99
{

app/Commands/Analyze/TransformerFactory.php renamed to app/Commands/Analyze/Class/TransformerFactory.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<?php
22

3-
namespace App\Commands\Analyze;
3+
namespace App\Commands\Analyze\Class;
44

55
use LaravelZero\Framework\Commands\Command;
6-
use App\Presenter\Analyze\Filters\Contracts\Transformer;
7-
use App\Presenter\Analyze\Filters\Transformers\NullTransformer;
8-
use App\Presenter\Analyze\Filters\Transformers\TargetTransformer;
6+
use App\Presenter\Analyze\Shared\Filters\Contracts\Transformer;
7+
use App\Presenter\Analyze\Shared\Filters\Transformers\NullTransformer;
8+
use App\Presenter\Analyze\Shared\Filters\Transformers\TargetTransformer;
99

1010
class TransformerFactory
1111
{

0 commit comments

Comments
 (0)