diff --git a/.github/workflows/code-analysis.yaml b/.github/workflows/code-analysis.yaml new file mode 100644 index 0000000..0a5fedd --- /dev/null +++ b/.github/workflows/code-analysis.yaml @@ -0,0 +1,44 @@ +name: Code Analysis + +on: + pull_request: null + push: + branches: + - develop + workflow_dispatch: +permissions: + contents: read +jobs: + code_analysis: + strategy: + fail-fast: false + matrix: + actions: + - name: 'PHPStan' + run: composer phpstan + - name: 'Coding Standards' + run: composer fix-cs + # Tests could be run here too, just set the environment variables as needed, see: + # https://docs.github.com/en/actions/learn-github-actions/variables + # - name: 'Tests' + # run: composer test + name: ${{ matrix.actions.name }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Cache Composer dependencies + uses: actions/cache@v4 + with: + path: /tmp/composer-cache + key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }} + - name: Setup PHP + id: setup-php + uses: shivammathur/setup-php@v2 + with: + php-version: 8.1 + extensions: 'ctype,curl,dom,iconv,imagick,intl,json,mbstring,openssl,pcre,pdo,reflection,spl,zip' + ini-values: post_max_size=256M, max_execution_time=180, memory_limit=512M + tools: composer:v2 + - name: Install Composer dependencies + run: composer install --no-interaction --no-ansi --no-progress + - run: ${{ matrix.actions.run }} diff --git a/composer.json b/composer.json index fee0791..2b6074b 100644 --- a/composer.json +++ b/composer.json @@ -10,11 +10,28 @@ "nystudio107/craft-code-editor": "^1.0.0", "putyourlightson/craft-sprig-core": "^2.6.4" }, + "require-dev": { + "craftcms/ecs": "dev-main", + "craftcms/phpstan": "dev-main" + }, + "scripts": { + "phpstan": "phpstan --ansi --memory-limit=1G", + "check-cs": "ecs check --ansi", + "fix-cs": "ecs check --fix --ansi" + }, "autoload": { "psr-4": { "putyourlightson\\sprig\\plugin\\": "src/" } }, + "config": { + "allow-plugins": { + "craftcms/plugin-installer": true, + "yiisoft/yii2-composer": true + }, + "optimize-autoloader": true, + "sort-packages": true + }, "support": { "docs": "https://putyourlightson.com/plugins/sprig", "source": "https://github.com/putyourlightson/craft-sprig", diff --git a/ecs.php b/ecs.php index ff09fdd..85860c2 100644 --- a/ecs.php +++ b/ecs.php @@ -4,11 +4,10 @@ use Symplify\EasyCodingStandard\Config\ECSConfig; return static function(ECSConfig $ecsConfig): void { - $ecsConfig->parallel(); $ecsConfig->paths([ __DIR__ . '/src', __FILE__, ]); - + $ecsConfig->parallel(); $ecsConfig->sets([SetList::CRAFT_CMS_4]); }; diff --git a/phpstan.neon b/phpstan.neon index 4514cd7..44554e4 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,5 +1,6 @@ includes: - - %currentWorkingDirectory%/vendor/craftcms/phpstan/phpstan.neon + - vendor/craftcms/phpstan/phpstan.neon + parameters: level: 5 paths: