Skip to content

Commit 08bf5a3

Browse files
committed
feat(rules): Add configuration for ForbiddenSideEffectsRule
- Introduced rules.php to define services for ForbiddenSideEffectsRule. - Updated rules.neon to include conditional tags for the new rule. - Excluded ForbiddenSideEffectsRule.php from PHPStan scanning.
1 parent 087c5cd commit 08bf5a3

File tree

4 files changed

+59
-19
lines changed

4 files changed

+59
-19
lines changed

config/rules.neon

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,8 @@
11
# https://github.com/ergebnis/phpstan-rules/blob/main/rules.neon
22
# https://github.com/symplify/phpstan-rules/tree/main/config/
33

4-
conditionalTags:
5-
Guanguans\PHPStanRules\Rule\Class_\ExceptionMustImplementNativeThrowableRule:
6-
phpstan.rules.rule: %guanguans.exceptionMustImplementNativeThrowable.enabled%
7-
Guanguans\PHPStanRules\Rule\File\ForbiddenSideEffectsRule:
8-
phpstan.rules.rule: %guanguans.forbiddenSideEffects.enabled%
9-
10-
parameters:
11-
guanguans:
12-
allRules: true
13-
exceptionMustImplementNativeThrowable:
14-
nativeThrowable: \Throwable
15-
enabled: %guanguans.allRules%
16-
forbiddenSideEffects:
17-
enabled: false
4+
includes:
5+
- rules.php
186

197
parametersSchema:
208
guanguans: structure([
@@ -28,13 +16,27 @@ parametersSchema:
2816
])
2917
])
3018

31-
services:
32-
-
33-
class: staabm\SideEffectsDetector\SideEffectsDetector
19+
parameters:
20+
guanguans:
21+
allRules: true
22+
exceptionMustImplementNativeThrowable:
23+
nativeThrowable: \Throwable
24+
enabled: %guanguans.allRules%
25+
forbiddenSideEffects:
26+
enabled: %guanguans.allRules%
3427

28+
conditionalTags:
29+
Guanguans\PHPStanRules\Rule\Class_\ExceptionMustImplementNativeThrowableRule:
30+
phpstan.rules.rule: %guanguans.exceptionMustImplementNativeThrowable.enabled%
31+
# Guanguans\PHPStanRules\Rule\File\ForbiddenSideEffectsRule:
32+
# phpstan.rules.rule: %guanguans.forbiddenSideEffects.enabled%
33+
34+
services:
3535
-
3636
class: Guanguans\PHPStanRules\Rule\Class_\ExceptionMustImplementNativeThrowableRule
3737
arguments:
3838
nativeThrowable: %guanguans.exceptionMustImplementNativeThrowable.nativeThrowable%
39-
-
40-
class: Guanguans\PHPStanRules\Rule\File\ForbiddenSideEffectsRule
39+
# -
40+
# class: staabm\SideEffectsDetector\SideEffectsDetector
41+
# -
42+
# class: Guanguans\PHPStanRules\Rule\File\ForbiddenSideEffectsRule

config/rules.php

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/**
6+
* Copyright (c) 2026 guanguans<ityaozm@gmail.com>
7+
*
8+
* For the full copyright and license information, please view
9+
* the LICENSE file that was distributed with this source code.
10+
*
11+
* @see https://github.com/guanguans/phpstan-rules
12+
*/
13+
14+
use Guanguans\PHPStanRules\Rule\File\ForbiddenSideEffectsRule;
15+
use staabm\SideEffectsDetector\SideEffectsDetector;
16+
17+
if (!class_exists(SideEffectsDetector::class)) {
18+
return [];
19+
}
20+
21+
return [
22+
'conditionalTags' => [
23+
ForbiddenSideEffectsRule::class => [
24+
'phpstan.rules.rule' => '%guanguans.forbiddenSideEffects.enabled%',
25+
],
26+
],
27+
'services' => [
28+
[
29+
'class' => SideEffectsDetector::class,
30+
],
31+
[
32+
'class' => ForbiddenSideEffectsRule::class,
33+
],
34+
],
35+
];

phpstan.neon.dist

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ parameters:
3737
scanFiles:
3838
- vendor/composer/InstalledVersions.php
3939
excludePaths:
40+
# - src/Rule/File/ForbiddenSideEffectsRule.php
4041
- src/Support/ComposerScripts.php
4142
- tests/Fixtures/
4243
tmpDir: .build/phpstan/

src/Rule/File/ForbiddenSideEffectsRule.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,11 @@
3131
*/
3232
final class ForbiddenSideEffectsRule extends AbstractRule
3333
{
34+
/** @see \staabm\SideEffectsDetector\SideEffect */
3435
private const IGNORED_SIDE_EFFECTS = [
3536
'maybe_has_side_effects',
3637
'scope_pollution',
38+
// 'unknown_class',
3739
];
3840
private SideEffectsDetector $sideEffectsDetector;
3941

0 commit comments

Comments
 (0)