Skip to content

Commit 90bee1d

Browse files
committed
Add Psalm
1 parent f5e7658 commit 90bee1d

File tree

6 files changed

+140
-5
lines changed

6 files changed

+140
-5
lines changed

.github/workflows/psalm.yml

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
name: PHP Psalm
2+
3+
on:
4+
workflow_dispatch:
5+
pull_request:
6+
types: [ready_for_review]
7+
release:
8+
types: [published]
9+
10+
jobs:
11+
psalm:
12+
name: Psalm
13+
runs-on: ubuntu-latest
14+
timeout-minutes: 5
15+
steps:
16+
- uses: actions/checkout@v3
17+
with:
18+
ref: ${{ github.head_ref }}
19+
20+
# mtime needs to be restored for Psalm cache to work correctly
21+
- name: Restore mtimes
22+
uses: chetan/git-restore-mtime-action@v2
23+
24+
- name: Setup PHP
25+
uses: shivammathur/setup-php@v2
26+
with:
27+
php-version: 8.2
28+
coverage: none
29+
env:
30+
COMPOSER_TOKEN: ${{ secrets.GH_TOKEN_FOR_COMPOSER_FOR_PRIVATE_REPOS }}
31+
32+
- name: Get Composer cache directory
33+
id: composer-cache
34+
run: |
35+
echo "composer_dir={$(composer config cache-files-dir)}" >> $GITHUB_OUTPUT
36+
37+
- name: Retrieve Composer‘s cache
38+
uses: actions/cache@v3
39+
with:
40+
path: ${{ steps.composer-cache.outputs.composer_dir }}
41+
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
42+
restore-keys: |
43+
${{ runner.os }}-composer-
44+
45+
- name: Install composer dependencies
46+
run: "composer install --no-interaction --no-progress --no-scripts"
47+
48+
# the way cache keys are set up will always cause a cache miss
49+
# but will restore the cache generated during the previous run based on partial match
50+
- name: Retrieve Psalm’s cache
51+
uses: actions/cache@v3
52+
with:
53+
path: ./cache/psalm
54+
key: ${{ runner.os }}-psalm-cache-${{ hashFiles('psalm.xml', 'psalm-baseline.xml') }}
55+
56+
- name: Run Psalm
57+
run: composer psalm

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ composer.lock
55
# phpunit
66
/.phpunit.cache
77
/.phpunit.result.cache
8+
9+
.cache

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ composer require --dev interaction-design-foundation/coding-standard
1414
2. Add composer scripts into your `composer.json`:
1515
```json
1616
"scripts": {
17-
"cs-check": "phpcs",
18-
"cs-fix": "phpcbf"
17+
"cs:check": "phpcs",
18+
"cs:fix": "phpcbf"
1919
}
2020
```
2121

22-
3. Create file phpcs.xml on base path of your repository with content
22+
3. Create file `phpcs.xml` on base path of your repository with content
2323
```xml
2424
<?xml version="1.0"?>
2525
<ruleset name="My Coding Standard">

composer.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
"squizlabs/php_codesniffer": "^3.7"
1111
},
1212
"require-dev": {
13-
"phpunit/phpunit": "^10.1"
13+
"phpunit/phpunit": "^10.1",
14+
"vimeo/psalm": "^5.9"
1415
},
1516
"minimum-stability": "dev",
1617
"prefer-stable": true,
@@ -30,6 +31,9 @@
3031
}
3132
},
3233
"scripts": {
33-
"test": "./vendor/bin/phpunit"
34+
"cs-check": "phpcs",
35+
"cs-fix": "phpcbf",
36+
"test": "phpunit",
37+
"psalm": "psalm"
3438
}
3539
}

psalm-baseline.xml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<files psalm-version="5.9.0@8b9ad1eb9e8b7d3101f949291da2b9f7767cd163">
3+
<file src="IxDFCodingStandard/Sniffs/Classes/ForbidDirectClassInheritanceSniff.php">
4+
<UndefinedClass>
5+
<code>Sniff</code>
6+
</UndefinedClass>
7+
</file>
8+
<file src="IxDFCodingStandard/Sniffs/Classes/ForbidMethodDeclarationSniff.php">
9+
<UndefinedClass>
10+
<code>Sniff</code>
11+
</UndefinedClass>
12+
</file>
13+
<file src="IxDFCodingStandard/Sniffs/Files/BemCasedFilenameSniff.php">
14+
<UndefinedClass>
15+
<code>Sniff</code>
16+
</UndefinedClass>
17+
</file>
18+
<file src="IxDFCodingStandard/Sniffs/Functions/ForbiddenFunctionsSniff.php">
19+
<UndefinedClass>
20+
<code>BaseForbiddenFunctionsSniff</code>
21+
</UndefinedClass>
22+
</file>
23+
<file src="IxDFCodingStandard/Sniffs/Laravel/DisallowGuardedAttributeSniff.php">
24+
<UndefinedClass>
25+
<code>AbstractScopeSniff</code>
26+
</UndefinedClass>
27+
</file>
28+
<file src="IxDFCodingStandard/Sniffs/Laravel/NonExistingBladeTemplateSniff.php">
29+
<UndefinedClass>
30+
<code>Sniff</code>
31+
</UndefinedClass>
32+
</file>
33+
<file src="IxDFCodingStandard/Sniffs/Laravel/RequireCustomAbortMessageSniff.php">
34+
<UndefinedClass>
35+
<code>Sniff</code>
36+
</UndefinedClass>
37+
</file>
38+
<file src="IxDFCodingStandard/Sniffs/NamingConventions/CamelCaseRouteNameSniff.php">
39+
<UndefinedClass>
40+
<code>Sniff</code>
41+
</UndefinedClass>
42+
</file>
43+
<file src="IxDFCodingStandard/Sniffs/NamingConventions/MeaningfulVariableNameSniff.php">
44+
<UndefinedClass>
45+
<code>AbstractVariableSniff</code>
46+
</UndefinedClass>
47+
</file>
48+
<file src="IxDFCodingStandard/TokenHelper.php">
49+
<InternalClass>
50+
<code>\SlevomatCodingStandard\Helpers\TokenHelper</code>
51+
</InternalClass>
52+
</file>
53+
</files>

psalm.xml

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

0 commit comments

Comments
 (0)