Skip to content

Commit 044d21d

Browse files
committed
chore: configure linters and fixers
1 parent e478a5f commit 044d21d

5 files changed

Lines changed: 182 additions & 0 deletions

File tree

phpcs.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0"?>
2+
<ruleset name="template_name">
3+
<rule ref="PSR1">
4+
<!-- False positive from class readonly with php 8.2 -->
5+
<exclude name="PSR1.Files.SideEffects.FoundWithSymbols"/>
6+
</rule>
7+
</ruleset>

phpmd.xml

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
<?xml version="1.0"?>
2+
<ruleset name="template_name rule set"
3+
xmlns="http://pmd.sf.net/ruleset/1.0.0"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
6+
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
7+
<rule ref="rulesets/cleancode.xml">
8+
<exclude name="BooleanArgumentFlag"/>
9+
<exclude name="StaticAccess"/>
10+
</rule>
11+
<rule ref="rulesets/cleancode.xml/BooleanArgumentFlag">
12+
<properties>
13+
<property name="ignorepattern"
14+
value="/^(__construct|format|.*[bB]ool.*|convert.*|.*[tT]earDown.*|snakify)$/"/>
15+
</properties>
16+
</rule>
17+
<rule ref="rulesets/cleancode.xml/StaticAccess">
18+
<properties>
19+
<property name="ignorepattern" value="/(^createFrom|Raised|from|tryFrom|stack)/i"/>
20+
</properties>
21+
</rule>
22+
<rule ref="rulesets/controversial.xml"/>
23+
<rule ref="rulesets/design.xml/CouplingBetweenObjects">
24+
<properties>
25+
<property name="maximum" value="20"/>
26+
</properties>
27+
</rule>
28+
<rule ref="rulesets/unusedcode.xml">
29+
<exclude name="UnusedFormalParameter"/>
30+
</rule>
31+
<rule ref="rulesets/codesize.xml">
32+
<exclude name="CyclomaticComplexity"/>
33+
<exclude name="ExcessiveClassLength"/>
34+
<exclude name="ExcessiveMethodLength"/>
35+
<exclude name="ExcessiveParameterList"/>
36+
<exclude name="TooManyFields"/>
37+
</rule>
38+
<rule ref="rulesets/codesize.xml/CyclomaticComplexity">
39+
<priority>1</priority>
40+
<properties>
41+
<property name="reportLevel" value="5"/>
42+
</properties>
43+
</rule>
44+
<rule ref="rulesets/codesize.xml/ExcessiveClassLength">
45+
<priority>1</priority>
46+
<properties>
47+
<property name="minimum" value="80"/>
48+
<property name="ignore-whitespace" value="true"/>
49+
</properties>
50+
</rule>
51+
<rule ref="rulesets/codesize.xml/ExcessiveMethodLength">
52+
<priority>1</priority>
53+
<properties>
54+
<property name="minimum" value="25"/>
55+
<property name="ignore-whitespace" value="true"/>
56+
</properties>
57+
</rule>
58+
<rule ref="rulesets/codesize.xml/ExcessiveParameterList">
59+
<priority>1</priority>
60+
<properties>
61+
<property name="minimum" value="15"/>
62+
</properties>
63+
</rule>
64+
<rule ref="rulesets/codesize.xml/TooManyFields">
65+
<priority>1</priority>
66+
<properties>
67+
<property name="maxfields" value="12"/>
68+
</properties>
69+
</rule>
70+
<rule ref="rulesets/naming.xml">
71+
<exclude name="ShortVariable"/>
72+
<exclude name="LongVariable"/>
73+
<exclude name="ShortClassName"/>
74+
<exclude name="LongClassName"/>
75+
<exclude name="ShortMethodName"/>
76+
</rule>
77+
<rule ref="rulesets/naming.xml/ShortVariable">
78+
<properties>
79+
<property name="exceptions" value="id,db,at,in"/>
80+
</properties>
81+
</rule>
82+
<rule ref="rulesets/naming.xml/LongClassName">
83+
<properties>
84+
<property name="maximum" value="50"/>
85+
</properties>
86+
</rule>
87+
<rule ref="rulesets/naming.xml/ShortClassName">
88+
<properties>
89+
<property name="exceptions" value="Id,Ok"/>
90+
</properties>
91+
</rule>
92+
<rule ref="rulesets/naming.xml/LongVariable">
93+
<properties>
94+
<property name="maximum" value="30"/>
95+
</properties>
96+
</rule>
97+
<rule ref="rulesets/naming.xml/ShortMethodName">
98+
<properties>
99+
<property name="exceptions" value="at,in,id,to"/>
100+
</properties>
101+
</rule>
102+
</ruleset>

phpstan.neon

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
parameters:
2+
level: 10
3+
bootstrapFiles: []
4+
paths:
5+
- src
6+
reportUnmatchedIgnoredErrors: false
7+
treatPhpDocTypesAsCertain: false
8+
ignoreErrors:
9+
- identifier: missingType.generics
10+
- identifier: missingType.iterableValue
11+
- '#Method [a-zA-Z0-9\\_\\:\(\)]+ should return static\([a-zA-Z0-9\\_\\:\(\)]+<T>\) but returns static\([a-zA-Z0-9\\_\\:\(\)]+<mixed>\)#'
12+
includes:
13+
- vendor/bnf/phpstan-psr-container/extension.neon

psalm.xml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0"?>
2+
<psalm
3+
errorLevel="8"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xmlns="https://getpsalm.org/schema/config"
6+
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
7+
findUnusedBaselineEntry="true"
8+
findUnusedPsalmSuppress="true"
9+
disableSuppressAll="true"
10+
findUnusedCode="false"
11+
>
12+
<projectFiles>
13+
<directory name="src"/>
14+
<ignoreFiles>
15+
<directory name="vendor"/>
16+
</ignoreFiles>
17+
</projectFiles>
18+
<enableExtensions>
19+
<extension name="decimal"/>
20+
<extension name="pdo"/>
21+
<extension name="ds"/>
22+
</enableExtensions>
23+
</psalm>

rector.php

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
3+
/* @noinspection DevelopmentDependenciesUsageInspection */
4+
5+
declare(strict_types=1);
6+
7+
use Rector\Caching\ValueObject\Storage\FileCacheStorage;
8+
use Rector\CodeQuality\Rector\Class_\InlineConstructorDefaultToPropertyRector;
9+
use Rector\Config\RectorConfig;
10+
use Rector\Php80\Rector\Class_\ClassPropertyAssignToConstructorPromotionRector;
11+
use Rector\Php83\Rector\ClassMethod\AddOverrideAttributeToOverriddenMethodsRector;
12+
use Rector\Set\ValueObject\LevelSetList;
13+
14+
return static function (RectorConfig $config): void {
15+
$config->paths([
16+
__DIR__ . '/src',
17+
__DIR__ . '/tests',
18+
]);
19+
20+
// register a single rule
21+
$config->rule(InlineConstructorDefaultToPropertyRector::class);
22+
23+
$config->skip([AddOverrideAttributeToOverriddenMethodsRector::class]);
24+
$config->skip([
25+
ClassPropertyAssignToConstructorPromotionRector::class => [
26+
__DIR__ . '/tests/Stub/Variety.php',
27+
],
28+
]);
29+
30+
// define sets of rules
31+
$config->sets([
32+
LevelSetList::UP_TO_PHP_83,
33+
]);
34+
35+
$config->cacheClass(FileCacheStorage::class);
36+
$config->cacheDirectory('/tmp/rector');
37+
};

0 commit comments

Comments
 (0)