Skip to content

Add new Youwe magento2 coding standards #6

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 12 commits into from
Oct 12, 2022
Merged
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## 3.5.0
### Added
- Args to show phpcs warnings/errors in color and show the correct class that
renders the warning/error. This way it's easier to ignore if necessary.

### Removed
- Rule `Generic.Formatting.MultipleStatementAlignment`, since this did not help for the readability
of the code.


## 3.4.0
### Added
- Constraint for `squizlabs/php_codesniffer` to be compatible with
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ composer global require youwe/coding-standard
First configure PHPStorm to use the right phpcs command.

Go to __Settings > Languages & Frameworks > PHP > Code Sniffer__. Choose
"Local" for the path and fill in the full path to
"Local" for the path and fill in the full path to
`~/.config/composer/vendor/bin/phpcs`

Then go to __Settings > Editor > Inspections__ and search for PHP Code Sniffer
Validation. Select Custom and the add the path to
`~/.config/composer/vendor/youwe/coding-standard/src/Global`
Validation. Select Custom and the add the path to
`~/.config/composer/vendor/youwe/coding-standard/src/Youwe`

# Using the coding standard in a project

Expand All @@ -39,7 +39,7 @@ project.
```xml
<?xml version="1.0"?>
<ruleset>
<rule ref="./vendor/youwe/coding-standard/src/Global"/>
<rule ref="./vendor/youwe/coding-standard/src/Youwe"/>
</ruleset>
```

Expand Down
12 changes: 8 additions & 4 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
{
"name": "youwe/coding-standard",
"description": "Youwe PHP Coding Standard",
"type": "phpcs-sniffs",
"license": "MIT",
"prefer-stable": true,
"minimum-stability": "stable",
"type": "phpcodesniffer-standard",
"authors": [
{
"name": "Youwe B.V.",
Expand All @@ -13,9 +11,12 @@
],
"require": {
"php": "^7.0 || ^8.0",
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.2",
"phpmd/phpmd": "^2.0",
"squizlabs/php_codesniffer": "~3.5.4 || ~3.6.0"
"squizlabs/php_codesniffer": "^3.5.4"
},
"minimum-stability": "stable",
"prefer-stable": true,
"autoload": {
"psr-4": {
"Youwe\\CodingStandard\\": "src"
Expand All @@ -41,6 +42,9 @@
]
},
"config": {
"allow-plugins": {
"dealerdirect/phpcodesniffer-composer-installer": true
},
"sort-packages": true
}
}
26 changes: 23 additions & 3 deletions src/GlobalCommon/ruleset.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
-->
<ruleset name="Global/Common">
<description>Global its extension to PSR2.</description>
<!-- Show sniff codes in all reports. Easier to ignore rules when necessary -->
<arg value="s"/>
<!-- Use colors in output -->
<arg name="colors" />

<!-- Base rules on PSR12 -->
<rule ref="PSR12">
Expand Down Expand Up @@ -55,8 +59,11 @@
<exclude name="Squiz.Commenting.FunctionComment.Missing"/>
<exclude name="Squiz.Commenting.FunctionComment.MissingReturn"/>
<exclude name="Squiz.Commenting.FunctionComment.MissingParamTag"/>
<exclude name="Squiz.Commenting.FunctionComment.SpacingAfterParamType"/>
</rule>
<rule ref="Squiz.Commenting.FunctionCommentThrowTag">
<exclude name="Squiz.Commenting.FunctionCommentThrowTag.WrongNumber" />
</rule>
<rule ref="Squiz.Commenting.FunctionCommentThrowTag"/>
<rule ref="Squiz.Commenting.VariableComment">
<exclude name="Squiz.Commenting.VariableComment.IncorrectVarType"/>
<exclude name="Squiz.Commenting.VariableComment.Missing"/>
Expand All @@ -65,11 +72,17 @@
<!-- Files -->
<rule ref="Generic.Files.ByteOrderMark"/>
<rule ref="Generic.Files.LineEndings"/>
<rule ref="Generic.Files.LineLength"/>
<rule ref="Generic.Files.LineLength">
<exclude-pattern>*.xml</exclude-pattern>
<properties>
<property name="lineLimit" value="200" />
<property name="absoluteLineLimit" value="800" />
<property name="ignoreComments" value="true" />
</properties>
</rule>

<!-- Formatting -->
<rule ref="Generic.Formatting.DisallowMultipleStatements"/>
<rule ref="Generic.Formatting.MultipleStatementAlignment"/>

<!-- Functions -->
<rule ref="Generic.Functions.CallTimePassByReference"/>
Expand All @@ -96,4 +109,11 @@

<!-- Whitespace -->
<rule ref="Generic.WhiteSpace.ScopeIndent"/>
<rule ref="Squiz.WhiteSpace.FunctionSpacing">
<properties>
<property name="spacing" value="1" />
<property name="spacingBeforeFirst" value="0" />
<property name="spacingAfterLast" value="0" />
</properties>
</rule>
</ruleset>
20 changes: 0 additions & 20 deletions src/MediaCT/phpmd.xml

This file was deleted.

13 changes: 0 additions & 13 deletions src/MediaCT/ruleset.xml

This file was deleted.

192 changes: 192 additions & 0 deletions src/Youwe/eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
{
"env": {
"amd": true,
"browser": true,
"es6": true,
"es2016": true,
"es2017": true,
"es2018": true,
"es2019": true,
"es2020": true,
"es2021": true,
"es2022": true,
"jquery": true,
"prototypejs": true
},
"rules": {
"array-bracket-spacing": [2, "never"],
"arrow-parens": 2,
"arrow-spacing": [2, {"after": true, "before": true}],
"block-spacing": [2, "always"],
"brace-style": [2, "1tbs", {"allowSingleLine": true}],
"comma-dangle": [ 2, "always-multiline" ],
"comma-spacing": [2, {"after": true, "before": false}],
"comma-style": [2, "last"],
"consistent-return": 2,
"constructor-super": 2,
"curly": [2, "all"],
"dot-location": [2, "property"],
"dot-notation": [2, {"allowKeywords": true}],
"eol-last": 2,
"eqeqeq": [2, "smart"],
"func-call-spacing": [2, "never"],
"func-style": [2, "expression"],
"generator-star-spacing": [2, {"after": true, "before": true}],
"guard-for-in": 2,
"indent": [2, 4],
"key-spacing": [2, {"afterColon": true, "beforeColon": false}],
"keyword-spacing": [2, {"after": true, "before": true}],
"linebreak-style": [2, "unix"],
"lines-around-comment": [
2,
{
"beforeBlockComment": true,
"allowBlockStart": true,
"allowObjectStart": true
}
],
"lines-between-class-members": [2, "always", {"exceptAfterSingleLine": true}],
"max-depth": [2, 2],
"max-len": [2, 120, 4],
"max-nested-callbacks": [2, 3],
"multiline-ternary": [2, "always-multiline"],
"new-cap": [2, {"capIsNew": false, "newIsCap": true, "properties": true}],
"new-parens": 2,
"newline-after-var": 2,
"no-alert": 2,
"no-array-constructor": 2,
"no-caller": 2,
"no-case-declarations": 2,
"no-catch-shadow": 2,
"no-class-assign": 2,
"no-compare-neg-zero": 2,
"no-cond-assign": 2,
"no-console": 2,
"no-const-assign": 2,
"no-constant-condition": 2,
"no-control-regex": 2,
"no-debugger": 2,
"no-delete-var": 2,
"no-dupe-args": 2,
"no-dupe-class-members": 2,
"no-dupe-keys": 2,
"no-duplicate-case": 2,
"no-else-return": 2,
"no-empty-character-class": 2,
"no-empty-pattern": 2,
"no-empty": [2, {"allowEmptyCatch": true}],
"no-eval": 2,
"no-ex-assign": 2,
"no-extend-native": 2,
"no-extra-bind": 2,
"no-extra-boolean-cast": 2,
"no-extra-parens": 2,
"no-extra-semi": 2,
"no-fallthrough": 2,
"no-floating-decimal": 2,
"no-func-assign": 2,
"no-global-assign": 2,
"no-implied-eval": 2,
"no-inner-declarations": 2,
"no-invalid-regexp": 2,
"no-irregular-whitespace": 2,
"no-iterator": 2,
"no-labels": [2, {"allowLoop": false, "allowSwitch": false}],
"no-lone-blocks": 2,
"no-lonely-if": 2,
"no-loop-func": 2,
"no-mixed-operators": [2, {"allowSamePrecedence": true, "groups": [["==", "!=", "===", "!==", ">", ">=", "<", "<="], ["&&", "||"], ["in", "instanceof"]]}],
"no-mixed-spaces-and-tabs": 2,
"no-multi-spaces": 2,
"no-multi-str": 2,
"no-multiple-empty-lines": [2, {"max": 1, "maxEOF": 0}],
"no-native-reassign": 2,
"no-negated-in-lhs": 2,
"no-new-func": 2,
"no-new-object": 2,
"no-new-symbol": 2,
"no-new-wrappers": 2,
"no-new": 2,
"no-obj-calls": 2,
"no-octal-escape": 2,
"no-octal": 2,
"no-proto": 2,
"no-prototype-builtins": 2,
"no-redeclare": 2,
"no-regex-spaces": 2,
"no-return-assign": 2,
"no-self-assign": [2, {"props": true}],
"no-self-compare": 2,
"no-sequences": 2,
"no-shadow": 2,
"no-shadow-restricted-names": 2,
"no-sparse-arrays": 2,
"no-tabs": 2,
"no-template-curly-in-string": 2,
"no-this-before-super": 2,
"no-throw-literal": 2,
"no-trailing-spaces": 2,
"no-undef": 2,
"no-undef-init": 2,
"no-unexpected-multiline": 2,
"no-unmodified-loop-condition": 2,
"no-unneeded-ternary": [2, {"defaultAssignment": false}],
"no-unreachable": 2,
"no-unsafe-finally": 2,
"no-unsafe-negation": 2,
"no-unused-expressions": [2, {"allowShortCircuit": true, "allowTaggedTemplates": true, "allowTernary": true}],
"no-unused-labels": 2,
"no-unused-vars": [
2,
{
"args": "after-used",
"vars": "all",
"varsIgnorePattern": "^config$"
}
],
"no-use-before-define": 2,
"no-useless-call": 2,
"no-useless-computed-key": 2,
"no-useless-constructor": 2,
"no-useless-escape": 2,
"no-useless-rename": 2,
"no-useless-return": 2,
"no-var": 2,
"no-void": 2,
"no-whitespace-before-property": 2,
"no-with": 2,
"object-curly-newline": [2, {"consistent": true, "multiline": true}],
"object-curly-spacing": [2, "always"],
"object-property-newline": [2, {"allowMultiplePropertiesPerLine": true}],
"one-var": [2, {"initialized": "never"}],
"operator-assignment": [2, "always"],
"operator-linebreak": [2, "after", {"overrides": {":": "before", "?": "before", "|>": "before"}}],
"padded-blocks": [2, {"blocks": "never", "classes": "never", "switches": "never"}],
"prefer-const": [2, {"destructuring": "all"}],
"prefer-promise-reject-errors": 2,
"quote-props": [2, "as-needed"],
"quotes": [2, "single", {"allowTemplateLiterals": true, "avoidEscape": true}],
"radix": 2,
"require-yield": 2,
"rest-spread-spacing": [2, "never"],
"semi": [2, "always"],
"semi-spacing": 2,
"space-before-blocks": [2, "always"],
"space-before-function-paren": [2, "always"],
"space-in-parens": [2, "never"],
"space-infix-ops": 2,
"space-unary-ops": [2, {"nonwords": false, "words": true}],
"spaced-comment": [2, "always", {"block": {"balanced": true, "exceptions": ["*"], "markers": ["*package", "!", ",", ":", "::", "flow-include"]}, "line": {"markers": ["*package", "!", "/", ",", "="]}}],
"strict": ["error", "function"],
"symbol-description": 2,
"template-curly-spacing": [2, "never"],
"template-tag-spacing": [2, "never"],
"unicode-bom": [2, "never"],
"use-isnan": 2,
"valid-typeof": 2,
"vars-on-top": 2,
"wrap-iife": [2, "any", {"functionPrototypeMethods": true}],
"yield-star-spacing": [2, "both"],
"yoda": [2, "never"]
}
}
17 changes: 17 additions & 0 deletions src/Youwe/ruleset.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0"?>
<!--
/**
* Copyright Youwe. All rights reserved.
* https://www.youweagency.com
*/
-->
<ruleset name="Youwe">
<description>Youwe coding standards</description>

<rule ref="../GlobalCommon"/>
<rule ref="../GlobalPhpUnit"/>

<rule ref="Generic.Classes.DuplicateClassName" />
<rule ref="Generic.CodeAnalysis.UselessOverridingMethod" />
<rule ref="Squiz.PHP.Eval" />
</ruleset>