Skip to content

Commit 33f492f

Browse files
committed
feat: extended exception name detection with extensions
1 parent c49ce4f commit 33f492f

2 files changed

Lines changed: 68 additions & 2 deletions

File tree

src/Sniff/ExceptionNameSniff.php

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,50 @@ final class ExceptionNameSniff extends AbstractSniff implements Fixable
3131
];
3232

3333
/** @var list<string> */
34-
private const array UNCONVENTIONAL_EXCEPTION_NAMES = [
34+
private const array UNCONVENTIONAL_BUILT_IN_EXCEPTION_NAMES = [
3535
'com_exception',
3636
'mysqli_sql_exception',
3737
'SoapFault',
3838
];
3939

40+
/** @var list<string> */
41+
private const array UNCONVENTIONAL_EXTENSION_EXCEPTION_NAMES = [
42+
'parallel\\Channel\\Error\\Closed',
43+
'parallel\\Channel\\Error\\Existence',
44+
'parallel\\Channel\\Error\\IllegalValue',
45+
'parallel\\Events\\Error\\Existence',
46+
'parallel\\Events\\Error\\Timeout',
47+
'parallel\\Events\\Input\\Error\\Existence',
48+
'parallel\\Events\\Input\\Error\\IllegalValue',
49+
'parallel\\Future\\Error\\Cancelled',
50+
'parallel\\Future\\Error\\Foreign',
51+
'parallel\\Future\\Error\\Killed',
52+
'parallel\\Runtime\\Error\\Bootstrap',
53+
'parallel\\Runtime\\Error\\Closed',
54+
'parallel\\Runtime\\Error\\IllegalFunction',
55+
'parallel\\Runtime\\Error\\IllegalInstruction',
56+
'parallel\\Runtime\\Error\\IllegalParameter',
57+
'parallel\\Runtime\\Error\\IllegalReturn',
58+
'parallel\\Runtime\\Error\\IllegalVariable',
59+
'parallel\\Runtime\\Error\\Killed',
60+
'parallel\\Sync\\Error\\IllegalValue',
61+
'svmexception',
62+
'Swoole\\Exception\\ArrayKeyNotExists',
63+
'Yaf\\Exception\\DispatchFailed',
64+
'Yaf\\Exception\\LoadFailed',
65+
'Yaf\\Exception\\LoadFailed\\Action',
66+
'Yaf\\Exception\\LoadFailed\\Controller',
67+
'Yaf\\Exception\\LoadFailed\\Module',
68+
'Yaf\\Exception\\LoadFailed\\View',
69+
'Yaf\\Exception\\RouterFailed',
70+
];
71+
72+
/** @var list<string> */
73+
private const array UNCONVENTIONAL_EXCEPTION_NAMES = [
74+
...self::UNCONVENTIONAL_BUILT_IN_EXCEPTION_NAMES,
75+
...self::UNCONVENTIONAL_EXTENSION_EXCEPTION_NAMES,
76+
];
77+
4078
private const string CLASSNAME_PATTERN = '/<classname\b[^>]*>([^<]*)<\/classname>/';
4179

4280
public static function getCode(): string

tests/Unit/Sniff/ExceptionNameSniffTest.php

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public function itDoesNotFlagRegularClassnames(): void
6666
}
6767

6868
#[Test, DataProvider('knownExceptionNameProvider')]
69-
public function itRecognisesAllExceptionNames(string $name): void
69+
public function itRecognisesAllKnownExceptionNames(string $name): void
7070
{
7171
self::assertTrue(ExceptionNameSniff::looksLikeException($name));
7272
}
@@ -288,6 +288,25 @@ public static function knownExceptionNameProvider(): iterable
288288
'ParseError',
289289
'PDOException',
290290
'PharException',
291+
'parallel\\Channel\\Error\\Closed',
292+
'parallel\\Channel\\Error\\Existence',
293+
'parallel\\Channel\\Error\\IllegalValue',
294+
'parallel\\Events\\Error\\Existence',
295+
'parallel\\Events\\Error\\Timeout',
296+
'parallel\\Events\\Input\\Error\\Existence',
297+
'parallel\\Events\\Input\\Error\\IllegalValue',
298+
'parallel\\Future\\Error\\Cancelled',
299+
'parallel\\Future\\Error\\Foreign',
300+
'parallel\\Future\\Error\\Killed',
301+
'parallel\\Runtime\\Error\\Bootstrap',
302+
'parallel\\Runtime\\Error\\Closed',
303+
'parallel\\Runtime\\Error\\IllegalFunction',
304+
'parallel\\Runtime\\Error\\IllegalInstruction',
305+
'parallel\\Runtime\\Error\\IllegalParameter',
306+
'parallel\\Runtime\\Error\\IllegalReturn',
307+
'parallel\\Runtime\\Error\\IllegalVariable',
308+
'parallel\\Runtime\\Error\\Killed',
309+
'parallel\\Sync\\Error\\IllegalValue',
291310
'Random\\BrokenRandomEngineError',
292311
'Random\\RandomError',
293312
'Random\\RandomException',
@@ -299,6 +318,8 @@ public static function knownExceptionNameProvider(): iterable
299318
'SoapFault',
300319
'SodiumException',
301320
'SQLite3Exception',
321+
'svmexception',
322+
'Swoole\\Exception\\ArrayKeyNotExists',
302323
'TypeError',
303324
'UnderflowException',
304325
'UnexpectedValueException',
@@ -308,6 +329,13 @@ public static function knownExceptionNameProvider(): iterable
308329
'Uri\\UriException',
309330
'Uri\\WhatWg\\InvalidUrlException',
310331
'ValueError',
332+
'Yaf\\Exception\\DispatchFailed',
333+
'Yaf\\Exception\\LoadFailed',
334+
'Yaf\\Exception\\LoadFailed\\Action',
335+
'Yaf\\Exception\\LoadFailed\\Controller',
336+
'Yaf\\Exception\\LoadFailed\\Module',
337+
'Yaf\\Exception\\LoadFailed\\View',
338+
'Yaf\\Exception\\RouterFailed',
311339
];
312340

313341
foreach ($names as $name) {

0 commit comments

Comments
 (0)