GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.

ErrorHandler::renderException()   C
last analyzed

Complexity

Conditions 17
Paths 102

Size

Total Lines 49
Code Lines 38

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 306

Importance

Changes 0
Metric Value
cc 17
eloc 38
nc 102
nop 1
dl 0
loc 49
ccs 0
cts 35
cp 0
crap 306
rs 5.2
c 0
b 0
f 0

How to fix   Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
/**
3
 * @link https://www.yiiframework.com/
4
 * @copyright Copyright (c) 2008 Yii Software LLC
5
 * @license https://www.yiiframework.com/license/
6
 */
7
8
namespace yii\console;
9
10
use Yii;
11
use yii\base\ErrorException;
12
use yii\base\UserException;
13
use yii\helpers\Console;
14
15
/**
16
 * ErrorHandler handles uncaught PHP errors and exceptions.
17
 *
18
 * ErrorHandler is configured as an application component in [[\yii\base\Application]] by default.
19
 * You can access that instance via `Yii::$app->errorHandler`.
20
 *
21
 * @author Carsten Brandt <[email protected]>
22
 * @since 2.0
23
 */
24
class ErrorHandler extends \yii\base\ErrorHandler
25
{
26
    /**
27
     * Renders an exception using ansi format for console output.
28
     * @param \Throwable $exception the exception to be rendered.
29
     */
30
    protected function renderException($exception)
31
    {
32
        $previous = $exception->getPrevious();
33
        if ($exception instanceof UnknownCommandException) {
34
            // display message and suggest alternatives in case of unknown command
35
            $message = $this->formatMessage($exception->getName() . ': ') . $exception->command;
36
            $alternatives = $exception->getSuggestedAlternatives();
37
            if (count($alternatives) === 1) {
38
                $message .= "\n\nDid you mean \"" . reset($alternatives) . '"?';
39
            } elseif (count($alternatives) > 1) {
40
                $message .= "\n\nDid you mean one of these?\n    - " . implode("\n    - ", $alternatives);
41
            }
42
        } elseif ($exception instanceof UserException && ($exception instanceof Exception || !YII_DEBUG)) {
43
            $message = $this->formatMessage($exception->getName() . ': ') . $exception->getMessage();
44
        } elseif (YII_DEBUG) {
45
            if ($exception instanceof Exception) {
46
                $message = $this->formatMessage("Exception ({$exception->getName()})");
47
            } elseif ($exception instanceof ErrorException) {
48
                $message = $this->formatMessage($exception->getName());
49
            } else {
50
                $message = $this->formatMessage('Exception');
51
            }
52
            $message .= $this->formatMessage(" '" . get_class($exception) . "'", [Console::BOLD, Console::FG_BLUE])
53
                . ' with message ' . $this->formatMessage("'{$exception->getMessage()}'", [Console::BOLD]) //. "\n"
54
                . "\n\nin " . dirname($exception->getFile()) . DIRECTORY_SEPARATOR . $this->formatMessage(basename($exception->getFile()), [Console::BOLD])
55
                . ':' . $this->formatMessage($exception->getLine(), [Console::BOLD, Console::FG_YELLOW]) . "\n";
56
            if ($exception instanceof \yii\db\Exception && !empty($exception->errorInfo)) {
57
                $message .= "\n" . $this->formatMessage("Error Info:\n", [Console::BOLD]) . print_r($exception->errorInfo, true);
0 ignored issues
show
Bug introduced by
Are you sure print_r($exception->errorInfo, true) of type string|true can be used in concatenation? ( Ignorable by Annotation )

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

57
                $message .= "\n" . $this->formatMessage("Error Info:\n", [Console::BOLD]) . /** @scrutinizer ignore-type */ print_r($exception->errorInfo, true);
Loading history...
58
            }
59
            if ($previous === null) {
60
                $message .= "\n" . $this->formatMessage("Stack trace:\n", [Console::BOLD]) . $exception->getTraceAsString();
61
            }
62
        } else {
63
            $message = $this->formatMessage('Error: ') . $exception->getMessage();
64
        }
65
66
        if (PHP_SAPI === 'cli') {
67
            Console::stderr($message . "\n");
68
        } else {
69
            echo $message . "\n";
70
        }
71
        if (YII_DEBUG && $previous !== null) {
72
            $causedBy = $this->formatMessage('Caused by: ', [Console::BOLD]);
73
            if (PHP_SAPI === 'cli') {
74
                Console::stderr($causedBy);
75
            } else {
76
                echo $causedBy;
77
            }
78
            $this->renderException($previous);
79
        }
80
    }
81
82
    /**
83
     * Colorizes a message for console output.
84
     * @param string $message the message to colorize.
85
     * @param array $format the message format.
86
     * @return string the colorized message.
87
     * @see Console::ansiFormat() for details on how to specify the message format.
88
     */
89
    protected function formatMessage($message, $format = [Console::FG_RED, Console::BOLD])
90
    {
91
        $stream = (PHP_SAPI === 'cli') ? \STDERR : \STDOUT;
92
        // try controller first to allow check for --color switch
93
        if (
94
            Yii::$app->controller instanceof \yii\console\Controller && Yii::$app->controller->isColorEnabled($stream)
0 ignored issues
show
introduced by
Consider adding parentheses for clarity. Current Interpretation: (Yii::app->controller in...ortsAnsiColors($stream), Probably Intended Meaning: Yii::app->controller ins...rtsAnsiColors($stream))
Loading history...
95
            || Yii::$app instanceof \yii\console\Application && Console::streamSupportsAnsiColors($stream)
96
        ) {
97
            $message = Console::ansiFormat($message, $format);
98
        }
99
100
        return $message;
101
    }
102
}
103