forked from JustSteveKing/kit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreadalizer.php
More file actions
108 lines (91 loc) · 3.43 KB
/
readalizer.php
File metadata and controls
108 lines (91 loc) · 3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
declare(strict_types=1);
use Readalizer\Readalizer\Rules\NoArrayReturnRule;
use Readalizer\Readalizer\Rules\NoBOMRule;
use Readalizer\Readalizer\Rules\NoExecutableCodeInFilesRule;
use Readalizer\Readalizer\Rules\NoPhpCloseTagRule;
use Readalizer\Readalizer\Rules\ParameterTypeRequiredRule;
use Readalizer\Readalizer\Rules\RequireNamespaceDeclarationFirstRule;
use Readalizer\Readalizer\Rules\RequireNamespaceRule;
use Readalizer\Readalizer\Rules\ReturnTypeRequiredRule;
use Readalizer\Readalizer\Rules\SingleClassPerFileRule;
use Readalizer\Readalizer\Rules\SingleNamespacePerFileRule;
use Readalizer\Readalizer\Rules\StrictTypesDeclarationRule;
/**
* Copy this to readalizer.php in your project root and configure your rules.
*
* Each rule is a class implementing RuleInterface (node-level) or
* FileRuleInterface (file-level). Rules can live anywhere.
*
* ── Suppressing violations ───────────────────────────────────────────────────
*
* PHP attribute on a class, method, property, or parameter:
*
* use Readalizer\Readalizer\Attributes\Suppress;
*
* #[Suppress] // suppress ALL rules
* #[Suppress(NoLongMethodsRule::class)] // suppress one rule
* #[Suppress(RuleA::class, RuleB::class)] // suppress multiple
*
* Scope: a class-level attribute suppresses everything within the class;
* a method-level attribute suppresses everything within that method.
*
* Inline comment for line-level suppression (trailing or preceding line):
*
* $x = something(); // @readalizer-suppress NoLongMethodsRule
* // @readalizer-suppress (preceding line, suppress all)
* // @readalizer-suppress RuleA, RuleB (preceding line, suppress named)
*/
return [
// Paths to scan when no paths are passed on the CLI.
'paths' => [
'app/',
],
// Memory limit for analysis (default: 2G).
'memory_limit' => '2G',
// Cache results between runs.
'cache' => [
'enabled' => true,
'path' => '.readalizer-cache.json',
],
// Optional baseline file to suppress known violations.
// 'baseline' => '.readalizer-baseline.json',
// Paths, directory prefixes, or glob patterns to exclude from scanning.
'ignore' => [
// 'rector.php',
// 'src/Legacy/',
// '*.generated.php',
],
// Choose one or more rulesets (packs).
'ruleset' => [
// File tests
new StrictTypesDeclarationRule(),
new RequireNamespaceRule(),
new RequireNamespaceDeclarationFirstRule(),
new SingleNamespacePerFileRule(),
new SingleClassPerFileRule(),
new NoExecutableCodeInFilesRule(),
new NoBOMRule(),
// Type rules
new NoPhpCloseTagRule(),
new ReturnTypeRequiredRule(),
new NoArrayReturnRule(),
new ParameterTypeRequiredRule(),
],
// Add or override rules on top of rulesets.
'rules' => [
// File structure
// new LineLengthRule(maxLength: 120),
// new CustomFileRule(),
// Type safety
// new CustomTypeRule(),
// Class design
// new CustomClassRule(),
// Method design
// new CustomMethodRule(),
// Naming conventions
// new CustomNamingRule(),
// Expressions & control flow
// new CustomExpressionRule(),
],
];