Completed
Push — feature/security-checker-5 ( b1af27 )
by Jorijn
05:15
created

SimpleFormatter   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Test Coverage

Coverage 34.78%

Importance

Changes 0
Metric Value
eloc 24
dl 0
loc 44
ccs 8
cts 23
cp 0.3478
rs 10
c 0
b 0
f 0
wmc 8

1 Method

Rating   Name   Duplication   Size   Complexity  
B displayResults() 0 35 8
1
<?php
2
3
namespace Jorijn\LaravelSecurityChecker\Formatter;
4
5
use Symfony\Component\Console\Output\OutputInterface;
6
7
class SimpleFormatter implements FormatterInterface
8
{
9
    /**
10
     * Displays a security report as simple plain text.
11
     *
12
     * @param OutputInterface $output
13
     * @param string          $lockFilePath    The file path to the checked lock file
14
     * @param array           $vulnerabilities An array of vulnerabilities
15
     */
16 3
    public function displayResults(OutputInterface $output, $lockFilePath, array $vulnerabilities)
17
    {
18 3
        $output->writeln(sprintf('Security Check Report: <comment>%s</>', realpath($lockFilePath)));
19
20 3
        if ($count = count($vulnerabilities)) {
21
            $status = 'CRITICAL';
22
            $style = 'error';
23
        } else {
24 3
            $status = 'OK';
25 3
            $style = 'info';
26
        }
27
28 3
        $output->writeln(sprintf('<%s>[%s] %d %s known vulnerabilities</>', $style, $status, $count,
29 3
            1 === $count ? 'package has' : 'packages have'));
30
31 3
        if (0 !== $count) {
32
            $output->write("\n");
33
34
            foreach ($vulnerabilities as $dependency => $issues) {
35
                $dependencyFullName = $dependency.' ('.$issues['version'].')';
36
                $output->writeln('<info>'.$dependencyFullName."\n".str_repeat('-',
37
                        strlen($dependencyFullName))."</>\n");
38
39
                foreach ($issues['advisories'] as $issue => $details) {
40
                    $output->write(' * ');
41
                    if ($details['cve']) {
42
                        $output->write('<comment>'.$details['cve'].': </comment>');
43
                    }
44
                    $output->writeln($details['title']);
45
46
                    if ('' !== $details['link']) {
47
                        $output->writeln('   '.$details['link']);
48
                    }
49
50
                    $output->writeln('');
51
                }
52
            }
53
        }
54 3
    }
55
}
56