1313
1414permissions :
1515 contents : read
16+ security-events : write # Required to upload SARIF files
1617
1718jobs :
1819 scan :
@@ -21,33 +22,36 @@ jobs:
2122 steps :
2223 - uses : actions/checkout@v6
2324
24- # - name: Validate composer.json and composer.lock
25- # run: composer validate --strict
26-
27- # This config file gets auto-loaded by PHPStan
25+ # This config file gets auto-loaded by Psalm
2826 # !!!! The old bcc-signon plugin and the bcc-wp-proxy plugin are excluded from analysis!
29- - name : Set PHPStan config
27+ - name : Set Psalm config
3028 run : |
31- cat <<'EOF' > phpstan.neon
32- parameters:
33- level: 1 # form 0 to 11 where 0 is the loosest and 11 the strictest
34- errorFormat: github
35- paths:
36- - plugins
37- scanFiles:
38- - custom-defs.stub
39- bootstrapFiles:
40- - plugins/bcc-login/bcc-login.php
41- ignoreErrors:
42- - '#Path in require\(\) "build/.+\.asset\.php" is not a file or it does not exist\.#'
43- excludePaths:
44- - plugins/bcc-signon/*
45- - plugins/bcc-wp-proxy/*
46- includes:
47- - vendor/szepeviktor/phpstan-wordpress/extension.neon
29+ cat <<'EOF' > psalm.xml
30+ <?xml version="1.0"?>
31+ <!-- Psalm has levels of strictness (errorLevel) from 1 (most strict) to 8 (most lenient). -->
32+ <psalm
33+ xmlns="https://getpsalm.org/schema/config"
34+ errorLevel="2"
35+ >
36+ <projectFiles>
37+ <directory name="plugins" />
38+ <ignoreFiles>
39+ <directory name="plugins/bcc-signon" />
40+ <directory name="plugins/bcc-wp-proxy" />
41+ </ignoreFiles>
42+ </projectFiles>
43+ <stubs>
44+ <file name="custom-defs.stub" />
45+ </stubs>
46+ <plugins>
47+ <pluginClass class="PsalmWordPress\Plugin">
48+ <requireAllParams value="true" />
49+ </pluginClass>
50+ </plugins>
51+ </psalm>
4852 EOF
4953
50- - name : Create custom stubs for plugin functions. If this grows too big it can be commited as a separate file
54+ - name : Create stubs for dependency functions (e.g. other plugin funcions) . If this grows too big it can be commited as a separate file
5155 run : |
5256 cat <<'EOF' > custom-defs.stub
5357 <?php
@@ -69,11 +73,19 @@ jobs:
6973 function get_culture() {};
7074 EOF
7175
72- - name : Install PHPStan and Wordpress-stub
76+ - name : Install Psalm and Wordpress stubs
7377 run : |
74- composer require --dev phpstan/phpstan
75- composer require --dev szepeviktor/phpstan -wordpress
78+ composer require --dev php-stubs/wordpress-stubs ~6.8.0
79+ composer require --dev humanmade/psalm-plugin -wordpress
7680
77- - name : Run PHPStan
78- run : vendor/bin/phpstan analyse --no-progress
81+ - name : Run Psalm
82+ uses : psalm/psalm-github-actions@26f175f4d1d9006ea675bb78831ae94126017b07
83+ with :
84+ security_analysis : true
85+ composer_require_dev : true
86+ report_file : results.sarif
7987
88+ - name : Upload Security Analysis results to GitHub
89+ uses : github/codeql-action/upload-sarif@v4
90+ with :
91+ sarif_file : results.sarif
0 commit comments