diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml new file mode 100644 index 000000000..4f40268c6 --- /dev/null +++ b/.github/workflows/static-analysis.yml @@ -0,0 +1,26 @@ +name: Static analysis + +on: [pull_request] + +jobs: + static-psalm-analysis: + runs-on: ubuntu-latest + strategy: + matrix: + ocp-version: [ 'dev-master' ] + name: Nextcloud ${{ matrix.ocp-version }} + steps: + - name: Checkout + uses: actions/checkout@master + - name: Set up php + uses: shivammathur/setup-php@master + with: + php-version: 7.4 + tools: composer:v1 + coverage: none + - name: Install dependencies + run: composer i + - name: Install dependencies + run: composer require --dev christophwurst/nextcloud:${{ matrix.ocp-version }} + - name: Run coding standards check + run: composer run psalm diff --git a/composer.json b/composer.json index 223d7d598..67a266fff 100644 --- a/composer.json +++ b/composer.json @@ -2,21 +2,24 @@ "name": "nextcloud/notifications", "description": "notifications", "license": "AGPL", - "require": {}, + "require": { + }, "require-dev": { "phpunit/phpunit": "^8.5", - "nextcloud/coding-standard": "^0.3.0" + "nextcloud/coding-standard": "^0.3.0", + "psalm/phar": "^4.3" }, "config": { "optimize-autoloader": true, "classmap-authoritative": true, "platform": { - "php": "7.2" + "php": "7.3" } }, "scripts": { "lint": "find . -name \\*.php -not -path './vendor/*' -not -path './build/*' -print0 | xargs -0 -n1 php -l", "cs:check": "php-cs-fixer fix --dry-run --diff", - "cs:fix": "php-cs-fixer fix" + "cs:fix": "php-cs-fixer fix", + "psalm": "psalm.phar" } } diff --git a/composer.lock b/composer.lock index ca4aa00b2..5508f6dbb 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ff852300cf09d0acae1f3c2866605367", + "content-hash": "e3537c3628e10b6e06c2bb95b2d2786f", "packages": [], "packages-dev": [ { @@ -1317,6 +1317,37 @@ ], "time": "2020-12-01T04:53:52+00:00" }, + { + "name": "psalm/phar", + "version": "4.3.1", + "source": { + "type": "git", + "url": "https://github.com/psalm/phar.git", + "reference": "f61d8f0eaaf5f7c26f1269ddeaf1fbe29dff1bee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/psalm/phar/zipball/f61d8f0eaaf5f7c26f1269ddeaf1fbe29dff1bee", + "reference": "f61d8f0eaaf5f7c26f1269ddeaf1fbe29dff1bee", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "vimeo/psalm": "*" + }, + "bin": [ + "psalm.phar" + ], + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Composer-based Psalm Phar", + "time": "2020-12-03T21:44:12+00:00" + }, { "name": "psr/container", "version": "1.0.0", diff --git a/psalm.xml b/psalm.xml new file mode 100644 index 000000000..8f37a4d7d --- /dev/null +++ b/psalm.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/psalm-baseline.xml b/tests/psalm-baseline.xml new file mode 100644 index 000000000..0453e0c5c --- /dev/null +++ b/tests/psalm-baseline.xml @@ -0,0 +1,92 @@ + + + + + IProvider + IProvider + + + + + null + null + null + null + + + + + null + null + null + null + null + null + null + null + + + + + IProvider + IToken + IToken + IToken + IToken + InvalidTokenException + InvalidTokenException + Manager + + + $this->tokenProvider + $this->tokenProvider + IProvider + Manager + + + + + Type + Type + Type + Type + Type + Type + Type + Type + Type + Type + Type + Type + Type + Type + Type + Type + Type + Type + Type + Type + Type + + + + + $e + $e + ClientException + IProvider + InvalidTokenException + Key + Key + Manager + ServerException + + + $this->keyManager + $this->keyManager + $this->tokenProvider + IProvider + Manager + + +