Skip to content

Commit a96e933

Browse files
committed
update
1 parent 39963eb commit a96e933

File tree

16 files changed

+80
-66
lines changed

16 files changed

+80
-66
lines changed

Diff for: .github/workflows/main.yml

+5-11
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,20 @@ jobs:
1212
php-versions: ['8.1', '8.2', '8.3']
1313

1414
steps:
15-
# Check-out repository under GitHub workspace
16-
# https://github.com/actions/checkout
1715
- uses: actions/checkout@v4
18-
# Step's name
1916
- name: Setup PHP
2017
uses: shivammathur/setup-php@v2
2118
with:
22-
# Specify the PHP version
23-
php-version: '8.2'
19+
php-version: ${{ matrix.version }}
20+
2421
- name: Install
25-
# Install project
2622
run: make install
23+
2724
- name: Run linter
28-
# Run Linter
2925
run: make lint
30-
# Publish code coverage on Code Climate
31-
# https://github.com/paambaati/codeclimate-action
26+
3227
- name: Run test & publish code coverage
33-
uses: paambaati/[email protected]
34-
# Add Code Climate secret key
28+
uses: paambaati/[email protected]
3529
env:
3630
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
3731
with:

Diff for: Makefile

+4-2
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ test:
55
composer exec -v phpunit tests
66

77
lint:
8-
composer exec -v phpcs src tests
8+
composer exec -v phpcs
9+
10+
analyse:
911
composer exec -v phpstan -- analyse -c phpstan.neon
1012

1113
lint-fix:
12-
composer exec phpcbf -- --standard=PSR12 -v src tests
14+
composer exec -v phpcbf
1315

1416
test-coverage:
1517
composer exec --verbose phpunit tests -- --coverage-clover build/logs/clover.xml

Diff for: composer.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
"type": "library",
66
"require": {
77
"php": ">=8.2",
8-
"phpstan/phpstan": "^1",
8+
"phpstan/phpstan": "^2.0",
99
"illuminate/collections": "^12"
1010
},
1111
"license": "MIT",
1212
"autoload": {
1313
"psr-4": {
14-
"Hexlet\\PHPStanFp\\": "src/",
15-
"Hexlet\\PHPStanFp\\Tests\\": "tests/"
14+
"Hexlet\\PHPStanFp\\": "src/",
15+
"Hexlet\\PHPStanFp\\Tests\\": "tests/"
1616
}
1717
},
1818
"extra": {

Diff for: phpcs.xml

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
<?xml version="1.0"?>
22
<ruleset name="ruleset">
33
<description>PSR12</description>
4-
54
<arg name="basepath" value="."/>
65
<arg name="colors"/>
76
<arg name="parallel" value="100"/>
87
<arg value="n"/>
8+
<arg value="p"/>
9+
10+
<file>src</file>
11+
<file>tests</file>
912

1013
<exclude-pattern>vendor/*</exclude-pattern>
1114
<exclude-pattern>tests/*/data/*</exclude-pattern>

Diff for: phpunit.xml

+8-9
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<phpunit backupGlobals="false"
3-
backupStaticAttributes="false"
4-
colors="true"
5-
convertErrorsToExceptions="true"
6-
convertNoticesToExceptions="true"
7-
convertWarningsToExceptions="true"
8-
processIsolation="false"
9-
stopOnFailure="false"
10-
bootstrap="vendor/autoload.php"
2+
<phpunit
3+
backupGlobals="false"
4+
backupStaticProperties="false"
5+
colors="true"
6+
processIsolation="false"
7+
stopOnFailure="true"
8+
cacheResult="true"
9+
bootstrap="vendor/autoload.php"
1110
>
1211
<testsuites>
1312
<testsuite name="Test Suite">

Diff for: src/Rules/Classes/DisallowClassesRule.php

+9-8
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
namespace Hexlet\PHPStanFp\Rules\Classes;
44

5-
use PHPStan\Rules\Rule;
65
use PhpParser\Node;
7-
use PHPStan\Analyser\Scope;
86
use PhpParser\Node\Stmt\Class_;
7+
use PHPStan\Analyser\Scope;
8+
use PHPStan\Rules\Rule;
9+
use PHPStan\Rules\RuleErrorBuilder;
910

1011
class DisallowClassesRule implements Rule
1112
{
@@ -21,16 +22,16 @@ public function getNodeType(): string
2122
return Class_::class;
2223
}
2324

24-
/**
25-
* @param \PhpParser\Node\Stmt\Class_ $node
26-
* @param \PHPStan\Analyser\Scope $scope
27-
* @return string[]
28-
*/
2925
public function processNode(Node $node, Scope $scope): array
3026
{
3127
if (!$this->disallowClasses) {
3228
return [];
3329
}
34-
return ['Should not use classes'];
30+
31+
$errorMessage = 'Should not use classes';
32+
33+
return [
34+
RuleErrorBuilder::message($errorMessage)->build()
35+
];
3536
}
3637
}

Diff for: src/Rules/Exceptions/DisallowThrowRule.php

+9-8
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
namespace Hexlet\PHPStanFp\Rules\Exceptions;
44

5-
use PHPStan\Rules\Rule;
65
use PhpParser\Node;
6+
use PhpParser\Node\Expr\Throw_;
77
use PHPStan\Analyser\Scope;
8-
use PhpParser\Node\Stmt\Throw_;
8+
use PHPStan\Rules\Rule;
9+
use PHPStan\Rules\RuleErrorBuilder;
910

1011
class DisallowThrowRule implements Rule
1112
{
@@ -21,16 +22,16 @@ public function getNodeType(): string
2122
return Throw_::class;
2223
}
2324

24-
/**
25-
* @param \PhpParser\Node\Stmt\Throw_ $node
26-
* @param \PHPStan\Analyser\Scope $scope
27-
* @return string[]
28-
*/
2925
public function processNode(Node $node, Scope $scope): array
3026
{
3127
if (!$this->disallowThrow) {
3228
return [];
3329
}
34-
return ['Should not use throw'];
30+
31+
$errorMessage = 'Should not use throw';
32+
33+
return [
34+
RuleErrorBuilder::message($errorMessage)->build()
35+
];
3536
}
3637
}

Diff for: src/Rules/Expression/DisallowUnusedExpressionRule.php

+6-3
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
namespace Hexlet\PHPStanFp\Rules\Expression;
44

5-
use PHPStan\Rules\Rule;
65
use PhpParser\Node;
7-
use PHPStan\Analyser\Scope;
86
use PhpParser\Node\Stmt\Expression;
7+
use PHPStan\Analyser\Scope;
8+
use PHPStan\Rules\Rule;
9+
use PHPStan\Rules\RuleErrorBuilder;
910

1011
class DisallowUnusedExpressionRule implements Rule
1112
{
@@ -36,6 +37,8 @@ public function processNode(Node $node, Scope $scope): array
3637
return [];
3738
}
3839

39-
return ['Enforce that an expression gets used'];
40+
return [
41+
RuleErrorBuilder::message('Enforce that an expression gets used')->build()
42+
];
4043
}
4144
}

Diff for: src/Rules/Functions/DisallowMutatingFunctionsRule.php

+8-3
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
namespace Hexlet\PHPStanFp\Rules\Functions;
44

5-
use PHPStan\Rules\Rule;
65
use PhpParser\Node;
7-
use PHPStan\Analyser\Scope;
86
use PhpParser\Node\Expr\FuncCall;
7+
use PHPStan\Analyser\Scope;
8+
use PHPStan\Rules\Rule;
9+
use PHPStan\Rules\RuleErrorBuilder;
910

1011
class DisallowMutatingFunctionsRule implements Rule
1112
{
@@ -65,6 +66,10 @@ public function processNode(Node $node, Scope $scope): array
6566
return [];
6667
}
6768

68-
return ["The use of function '{$name}' is not allowed as it might be a mutating function"];
69+
$errorMessage = "The use of function '{$name}' is not allowed as it might be a mutating function";
70+
71+
return [
72+
RuleErrorBuilder::message($errorMessage)->build()
73+
];
6974
}
7075
}

Diff for: src/Rules/Loops/DisallowLoopsRule.php

+5-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
namespace Hexlet\PHPStanFp\Rules\Loops;
44

5-
use PHPStan\Rules\Rule;
65
use PhpParser\Node;
76
use PHPStan\Analyser\Scope;
7+
use PHPStan\Rules\Rule;
8+
use PHPStan\Rules\RuleErrorBuilder;
89

910
abstract class DisallowLoopsRule implements Rule
1011
{
@@ -21,7 +22,9 @@ public function processNode(Node $node, Scope $scope): array
2122
return [];
2223
}
2324

24-
return ["Should not use loop {$this->getLoopType()}"];
25+
return [
26+
RuleErrorBuilder::message("Should not use loop {$this->getLoopType()}")->build()
27+
];
2528
}
2629

2730
abstract protected function getLoopType(): string;

Diff for: src/Rules/Variables/DisallowMutationRule.php

+11-7
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
namespace Hexlet\PHPStanFp\Rules\Variables;
44

5-
use PHPStan\Rules\Rule;
65
use PhpParser\Node;
76
use PHPStan\Analyser\Scope;
7+
use PHPStan\Rules\Rule;
8+
use PHPStan\Rules\RuleErrorBuilder;
89

910
abstract class DisallowMutationRule implements Rule
1011
{
@@ -34,18 +35,21 @@ public function processNode(Node $node, Scope $scope): array
3435

3536
switch ($node->var->getType()) {
3637
case 'Expr_ArrayDimFetch':
37-
return [$errorMessage];
38-
39-
case 'Expr_Array':
38+
return [
39+
RuleErrorBuilder::message($errorMessage)->build()
40+
];
41+
case 'Expr_List':
4042
$containsTypedItems = collect($node->var->items)
4143
->map(fn($item) => $item->value->name)
4244
->filter(fn($name) => !is_null($name))
4345
->contains(fn($name) => $scope->hasVariableType($name)->yes());
44-
return $containsTypedItems ? [$errorMessage] : [];
4546

46-
case 'Expr_Variable':
47-
return $scope->hasVariableType($node->var->name)->yes() ? [$errorMessage] : [];
47+
return $containsTypedItems ? [RuleErrorBuilder::message($errorMessage)->build()] : [];
4848

49+
case 'Expr_Variable':
50+
return $scope->hasVariableType($node->var->name)->yes()
51+
? [RuleErrorBuilder::message($errorMessage)->build()]
52+
: [];
4953
default:
5054
return [];
5155
}

Diff for: tests/Rules/Classes/data/classes.php

+2-4
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,23 @@
22

33
class ExampleClass
44
{
5-
65
}
76

87
abstract class ExampleAbstractClass
98
{
10-
119
}
1210

1311
final class ExampleFinalClass
1412
{
15-
1613
}
1714

1815
function example()
1916
{
2017
// do not cause an error
2118
$someVar = 'class';
2219

23-
$anonymous = new class {};
20+
$anonymous = new class {
21+
};
2422
}
2523

2624
// do not cause an error

Diff for: tests/Rules/Exceptions/data/exceptions.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ function example()
77
// do not cause an error
88
$someVar = 'throw';
99

10-
$anonymous = new class {};
10+
$anonymous = new class {
11+
};
1112
}
1213

1314
// do not cause an error

Diff for: tests/Rules/Expression/data/expressions.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ function ds()
1717

1818
$a++;
1919

20-
function example() {
20+
function example()
21+
{
2122
9 + 7;
2223

2324
print_r();
@@ -30,5 +31,4 @@ function example() {
3031
print_r('some text');
3132

3233
for ($i = 0; 2 + 5; $i++) {
33-
3434
}

Diff for: tests/Rules/Loops/data/loops.php

-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
} while ($a < 3);
1313

1414
for ($i = 0; $i < 2; $i++) {
15-
1615
}
1716

1817
$arr = array(1, 2, 3, 4);

Diff for: tests/Rules/Variables/data/assign.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313

1414
$a = 15;
1515

16-
function ds($arg1, &$arg2) {
16+
function ds($arg1, &$arg2)
17+
{
1718
$arg1 = 2;
1819
$arg2 = 'text';
1920

0 commit comments

Comments
 (0)