moodlehq / moodle-cs

Moodle Coding Style
https://github.com/moodlehq/moodle-cs
GNU General Public License v3.0
18 stars 15 forks source link

moodle-extra standard not included in composer package installation #77

Closed t-schroeder closed 10 months ago

t-schroeder commented 10 months ago

The readme recommends the installation via composer and then also recommends to use the "moodle-extra" standard which is not included in the composer package or any of its dependencies.

andrewnicols commented 10 months ago

Hi @t-schroeder,

I'm not sure I understand - where is it not included, and where do you expect to include it?

Both standards are included with the composer package and just need to be configured within your repository per the instructions here: https://github.com/moodlehq/moodle-cs#using-the-moodle-extra-coding-style

Which part isn't clear or is wrong, and I'll try and improve/correct this.

Thanks

t-schroeder commented 10 months ago

Hi @andrewnicols ,

I followed the instructions from the readme:

composer global require moodlehq/moodle-cs

Then I ran this:

npx grunt ignorefiles

which created the phpcs.xml. Then I created the .phpcs.xml file as explained (for Moodle 4.1.6 in this case) with this content:

<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="MoodleCore">
  <rule ref="./phpcs.xml"/>
  <rule ref="moodle-extra"/>
</ruleset>

Then when I run phpcs I get this:

$ phpcs config.php
ERROR: Referenced sniff "moodle-extra" does not exist

Run "phpcs --help" for usage information

The "moodle" standard works, but "moodle-extra" is not a known standard. See also:

$ phpcs -i
The installed coding standards are MySource, PEAR, PSR1, PSR2, PSR12, Squiz, Zend, moodle and PHPCompatibility

I searched in my global composer installation folder and could not find anything called "moodle-extra":

$ cd ~/.config/composer/
$ find . -name moodle
~/.config/composer/vendor/moodlehq/moodle-cs/moodle
$ find . -name PHPCompatibility
~/.config/composer/vendor/phpcompatibility/php-compatibility/PHPCompatibility
$ find . -name moodle-extra
$

Do I need to clone this repository? It does contain the "moodle-extra" folder at least. From the readme it seemed like I should just have to run the composer command to install the standards.

t-schroeder commented 10 months ago

I seem to have found the cause of the problem. Composer installs an old version of moodlehq/moodle-cs, namely v3.2.5. Any idea why that is?

See my composer.lock:

{
    "_readme": [
        "This file locks the dependencies of your project to a known state",
        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
        "This file is @generated automatically"
    ],
    "content-hash": "2ac28d2667b403e7f2f79ee3a37fd37f",
    "packages": [
        {
            "name": "dealerdirect/phpcodesniffer-composer-installer",
            "version": "v0.7.2",
            "source": {
                "type": "git",
                "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git",
                "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db",
                "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db",
                "shasum": ""
            },
            "require": {
                "composer-plugin-api": "^1.0 || ^2.0",
                "php": ">=5.3",
                "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0"
            },
            "require-dev": {
                "composer/composer": "*",
                "php-parallel-lint/php-parallel-lint": "^1.3.1",
                "phpcompatibility/php-compatibility": "^9.0"
            },
            "type": "composer-plugin",
            "extra": {
                "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
            },
            "autoload": {
                "psr-4": {
                    "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
                }
            },
            "notification-url": "https://packagist.org/downloads/",
            "license": [
                "MIT"
            ],
            "authors": [
                {
                    "name": "Franck Nijhof",
                    "email": "franck.nijhof@dealerdirect.com",
                    "homepage": "http://www.frenck.nl",
                    "role": "Developer / IT Manager"
                },
                {
                    "name": "Contributors",
                    "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors"
                }
            ],
            "description": "PHP_CodeSniffer Standards Composer Installer Plugin",
            "homepage": "http://www.dealerdirect.com",
            "keywords": [
                "PHPCodeSniffer",
                "PHP_CodeSniffer",
                "code quality",
                "codesniffer",
                "composer",
                "installer",
                "phpcbf",
                "phpcs",
                "plugin",
                "qa",
                "quality",
                "standard",
                "standards",
                "style guide",
                "stylecheck",
                "tests"
            ],
            "support": {
                "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues",
                "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer"
            },
            "time": "2022-02-04T12:51:07+00:00"
        },
        {
            "name": "moodlehq/moodle-cs",
            "version": "v3.2.5",
            "source": {
                "type": "git",
                "url": "https://github.com/moodlehq/moodle-cs.git",
                "reference": "805a077056117f3e5f26735d5951b7780550070d"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/moodlehq/moodle-cs/zipball/805a077056117f3e5f26735d5951b7780550070d",
                "reference": "805a077056117f3e5f26735d5951b7780550070d",
                "shasum": ""
            },
            "require": {
                "dealerdirect/phpcodesniffer-composer-installer": "^0.7.2",
                "phpcompatibility/php-compatibility": "^9.3",
                "squizlabs/php_codesniffer": "^3.6"
            },
            "replace": {
                "moodlehq/moodle-local_codechecker": "3.1.0"
            },
            "require-dev": {
                "mikey179/vfsstream": "^1.6",
                "overtrue/phplint": "^3.0",
                "phpmd/phpmd": "^2.11",
                "phpunit/phpunit": "^9.5",
                "sebastian/phpcpd": "^6.0",
                "thor-juhasz/phpunit-coverage-check": "^0.3.0"
            },
            "type": "phpcodesniffer-standard",
            "autoload": {
                "psr-4": {
                    "MoodleHQ\\MoodleCS\\moodle\\": "moodle/"
                }
            },
            "notification-url": "https://packagist.org/downloads/",
            "license": [
                "GPL-2.0-or-later"
            ],
            "authors": [
                {
                    "name": "Andrew Lyons",
                    "email": "andrew@nicols.co.uk"
                }
            ],
            "description": "Moodle Coding Sniffer rules",
            "keywords": [
                "phpcs",
                "standards",
                "wordpress"
            ],
            "support": {
                "issues": "https://github.com/moodlehq/moodle-cs/issues",
                "source": "https://github.com/moodlehq/moodle-cs",
                "wiki": "https://github.com/moodlehq/moodle-cs/wiki"
            },
            "time": "2022-10-18T12:59:41+00:00"
        },
        {
            "name": "phpcompatibility/php-compatibility",
            "version": "9.3.5",
            "source": {
                "type": "git",
                "url": "https://github.com/PHPCompatibility/PHPCompatibility.git",
                "reference": "9fb324479acf6f39452e0655d2429cc0d3914243"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243",
                "reference": "9fb324479acf6f39452e0655d2429cc0d3914243",
                "shasum": ""
            },
            "require": {
                "php": ">=5.3",
                "squizlabs/php_codesniffer": "^2.3 || ^3.0.2"
            },
            "conflict": {
                "squizlabs/php_codesniffer": "2.6.2"
            },
            "require-dev": {
                "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0"
            },
            "suggest": {
                "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.",
                "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
            },
            "type": "phpcodesniffer-standard",
            "notification-url": "https://packagist.org/downloads/",
            "license": [
                "LGPL-3.0-or-later"
            ],
            "authors": [
                {
                    "name": "Wim Godden",
                    "homepage": "https://github.com/wimg",
                    "role": "lead"
                },
                {
                    "name": "Juliette Reinders Folmer",
                    "homepage": "https://github.com/jrfnl",
                    "role": "lead"
                },
                {
                    "name": "Contributors",
                    "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors"
                }
            ],
            "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.",
            "homepage": "http://techblog.wimgodden.be/tag/codesniffer/",
            "keywords": [
                "compatibility",
                "phpcs",
                "standards"
            ],
            "support": {
                "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues",
                "source": "https://github.com/PHPCompatibility/PHPCompatibility"
            },
            "time": "2019-12-27T09:44:58+00:00"
        },
        {
            "name": "squizlabs/php_codesniffer",
            "version": "3.7.2",
            "source": {
                "type": "git",
                "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
                "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879",
                "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879",
                "shasum": ""
            },
            "require": {
                "ext-simplexml": "*",
                "ext-tokenizer": "*",
                "ext-xmlwriter": "*",
                "php": ">=5.4.0"
            },
            "require-dev": {
                "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
            },
            "bin": [
                "bin/phpcs",
                "bin/phpcbf"
            ],
            "type": "library",
            "extra": {
                "branch-alias": {
                    "dev-master": "3.x-dev"
                }
            },
            "notification-url": "https://packagist.org/downloads/",
            "license": [
                "BSD-3-Clause"
            ],
            "authors": [
                {
                    "name": "Greg Sherwood",
                    "role": "lead"
                }
            ],
            "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
            "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
            "keywords": [
                "phpcs",
                "standards",
                "static analysis"
            ],
            "support": {
                "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
                "source": "https://github.com/squizlabs/PHP_CodeSniffer",
                "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
            },
            "time": "2023-02-22T23:07:41+00:00"
        }
    ],
    "packages-dev": [],
    "aliases": [],
    "minimum-stability": "stable",
    "stability-flags": [],
    "prefer-stable": false,
    "prefer-lowest": false,
    "platform": [],
    "platform-dev": [],
    "plugin-api-version": "2.6.0"
}
t-schroeder commented 10 months ago

I made a new issue for this since finding out it's an issue of the wrong version being installed. See #78