Last active
December 7, 2023 01:35
-
-
Save kjkorea/1eb65905cc44063f713464c1e1391925 to your computer and use it in GitHub Desktop.
Linting and Formatting in PHP WordPress
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This file is for unifying the coding style for different editors and IDEs | |
| # editorconfig.org | |
| # WordPress Coding Standards | |
| # https://make.wordpress.org/core/handbook/coding-standards/ | |
| root = true | |
| [*] | |
| charset = utf-8 | |
| end_of_line = lf | |
| insert_final_newline = true | |
| trim_trailing_whitespace = true | |
| indent_style = tab | |
| [*.yml] | |
| indent_style = space | |
| indent_size = 2 | |
| [*.md] | |
| trim_trailing_whitespace = false | |
| [{*.txt,wp-config-sample.php}] | |
| end_of_line = lf |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| /** | |
| * https://gist.github.com/publicarray/c409845675e2baea194a38db42fcb237 | |
| * https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues/3855 | |
| */ | |
| $finder = PhpCsFixer\Finder::create() | |
| ->exclude( 'vendor' ) | |
| ->in( __DIR__ ); | |
| $config = new PhpCsFixer\Config(); | |
| return $config->setIndent( "\t" ) | |
| ->setLineEnding( "\r\n" ) | |
| ->setRiskyAllowed( true ) | |
| ->setRules( array( | |
| '@PSR2' => true, | |
| 'cast_spaces' => array( 'space' => 'single' ), | |
| 'array_syntax' => array( 'syntax' => 'long' ), | |
| 'no_closing_tag' => true, | |
| 'no_trailing_whitespace_in_comment' => false, | |
| 'no_spaces_after_function_name' => false, | |
| 'general_phpdoc_annotation_remove' => false, | |
| 'array_indentation' => true, | |
| 'align_multiline_comment' => true, | |
| 'blank_line_after_namespace' => true, | |
| 'blank_line_after_opening_tag' => true, | |
| 'blank_line_before_statement' => false, | |
| // 'blank_line_before_statement' => [ | |
| // 'statements' => ['return', 'try', 'if', 'while', 'for', 'foreach', 'do', 'case'], | |
| // ], | |
| 'braces' => array( | |
| 'allow_single_line_closure' => true, | |
| 'position_after_anonymous_constructs' => 'same', | |
| 'position_after_control_structures' => 'same', | |
| 'position_after_functions_and_oop_constructs' => 'same', | |
| ), | |
| 'class_attributes_separation' => array( | |
| 'elements' => array( | |
| 'const' => 'one', | |
| 'method' => 'one', | |
| 'property' => 'one', | |
| 'trait_import' => 'none' | |
| ) | |
| ), | |
| 'class_definition' => array( 'single_line' => true ), | |
| 'concat_space' => array( 'spacing' => 'one' ), | |
| 'constant_case' => array( 'case' => 'lower' ), | |
| 'dir_constant' => true, | |
| 'elseif' => true, | |
| 'full_opening_tag' => true, | |
| 'fully_qualified_strict_types' => true, | |
| 'function_declaration' => array( 'closure_function_spacing' => 'one' ), | |
| 'spaces_inside_parentheses' => array( 'space' => 'single' ), | |
| // 'WeDevs/space_inside_parenthesis' => true, | |
| // 'WeDevs/blank_line_after_class_opening' => true, | |
| 'function_typehint_space' => true, | |
| 'global_namespace_import' => array( 'import_classes' => true ), | |
| 'include' => true, | |
| 'line_ending' => true, | |
| 'list_syntax' => array( 'syntax' => 'long' ), | |
| 'lowercase_cast' => true, | |
| 'lowercase_keywords' => true, | |
| 'lowercase_static_reference' => true, | |
| 'magic_constant_casing' => true, | |
| 'magic_method_casing' => true, | |
| 'method_argument_space' => true, | |
| 'native_function_casing' => true, | |
| 'method_chaining_indentation' => true, | |
| 'native_function_type_declaration_casing' => true, | |
| 'new_with_braces' => true, | |
| 'no_alternative_syntax' => true, | |
| 'no_blank_lines_after_class_opening' => false, | |
| 'no_blank_lines_after_phpdoc' => true, | |
| 'no_empty_comment' => true, | |
| 'no_empty_phpdoc' => true, | |
| 'no_empty_statement' => true, | |
| 'no_extra_blank_lines' => array( | |
| 'tokens' => array( | |
| 'extra', | |
| 'parenthesis_brace_block', | |
| 'square_brace_block', | |
| 'throw', | |
| 'use', | |
| ) | |
| ), | |
| 'no_leading_import_slash' => true, | |
| 'no_leading_namespace_whitespace' => true, | |
| 'no_mixed_echo_print' => true, | |
| 'no_multiline_whitespace_around_double_arrow' => true, | |
| 'no_short_bool_cast' => true, | |
| 'echo_tag_syntax' => true, | |
| 'no_singleline_whitespace_before_semicolons' => true, | |
| 'no_spaces_around_offset' => array( 'positions' => array( 'outside' ) ), | |
| 'no_spaces_inside_parenthesis' => false, | |
| 'no_superfluous_phpdoc_tags' => array( | |
| 'allow_mixed' => true, | |
| 'allow_unused_params' => true | |
| ), | |
| 'no_trailing_comma_in_list_call' => true, | |
| 'no_trailing_comma_in_singleline_array' => true, | |
| 'no_trailing_whitespace' => true, | |
| 'no_unneeded_control_parentheses' => true, | |
| 'no_unneeded_curly_braces' => true, | |
| 'no_unneeded_final_method' => true, | |
| 'no_unused_imports' => true, | |
| 'no_whitespace_before_comma_in_array' => true, | |
| 'no_whitespace_in_blank_line' => true, | |
| 'normalize_index_brace' => true, | |
| 'object_operator_without_whitespace' => true, | |
| 'ordered_imports' => true, | |
| 'php_unit_fqcn_annotation' => true, | |
| 'phpdoc_align' => array( | |
| 'align' => 'vertical', | |
| 'tags' => array( | |
| 'method', | |
| 'param', | |
| 'property', | |
| 'return', | |
| 'throws', | |
| 'type', | |
| 'var', | |
| ), | |
| ), | |
| 'phpdoc_annotation_without_dot' => true, | |
| 'phpdoc_indent' => true, | |
| 'general_phpdoc_tag_rename' => array( 'fix_inline' => false ), | |
| // WeDevs | |
| // 'general_phpdoc_tag_rename' => [ | |
| // 'fix_annotation' => true, | |
| // 'fix_inline' => true, | |
| // ], | |
| 'binary_operator_spaces' => true, | |
| // WeDevs | |
| // 'binary_operator_spaces' => [ | |
| // 'operators' => ['=' => 'align', '=>' => 'align'], | |
| // ], | |
| 'phpdoc_no_access' => true, | |
| 'phpdoc_no_alias_tag' => true, | |
| 'phpdoc_no_package' => false, | |
| 'phpdoc_no_useless_inheritdoc' => true, | |
| 'phpdoc_return_self_reference' => true, | |
| 'phpdoc_scalar' => true, | |
| 'phpdoc_separation' => true, | |
| 'phpdoc_single_line_var_spacing' => true, | |
| // 'phpdoc_to_comment' => true, | |
| 'phpdoc_trim' => true, | |
| 'phpdoc_trim_consecutive_blank_line_separation' => true, | |
| 'phpdoc_types' => true, | |
| 'phpdoc_types_order' => array( | |
| 'null_adjustment' => 'always_last', | |
| 'sort_algorithm' => 'none', | |
| ), | |
| 'phpdoc_var_without_name' => true, | |
| 'return_type_declaration' => true, | |
| 'semicolon_after_instruction' => true, | |
| 'short_scalar_cast' => true, | |
| 'single_blank_line_before_namespace' => true, | |
| 'single_class_element_per_statement' => true, | |
| 'single_line_comment_style' => array( | |
| 'comment_types' => array( 'hash' ), | |
| ), | |
| 'single_line_throw' => true, | |
| 'single_quote' => true, | |
| 'single_trait_insert_per_statement' => true, | |
| 'space_after_semicolon' => array( | |
| 'remove_in_empty_for_expressions' => true, | |
| ), | |
| 'standardize_increment' => true, | |
| 'standardize_not_equals' => true, | |
| 'ternary_operator_spaces' => true, | |
| 'trailing_comma_in_multiline' => array( 'elements' => array() ), | |
| 'trim_array_spaces' => false, | |
| 'whitespace_after_comma_in_array' => true, | |
| ) )->setFinder( $finder ); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?xml version="1.0" encoding="UTF-8"?> | |
| <ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="WordPress Custom" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/squizlabs/PHP_CodeSniffer/master/phpcs.xsd"> | |
| <description>A custom set of rules for WordPress</description> | |
| <file>.</file> | |
| <exclude-pattern>/wp-admin/*</exclude-pattern> | |
| <exclude-pattern>/wp-content/plugins/*</exclude-pattern> | |
| <exclude-pattern>/wp-includes/*</exclude-pattern> | |
| <exclude-pattern>/wp-*.php</exclude-pattern> | |
| <exclude-pattern>/xmlrpc.php</exclude-pattern> | |
| <exclude-pattern>/.idea/*</exclude-pattern> | |
| <exclude-pattern>/.vscode/*</exclude-pattern> | |
| <exclude-pattern>*/vendor/*</exclude-pattern> | |
| <exclude-pattern>*/node_modules/*</exclude-pattern> | |
| <exclude-pattern>*.min.js</exclude-pattern> | |
| <arg name="extensions" value="php" /> | |
| <arg name="colors" /> | |
| <arg value="sp" /> | |
| <arg name="parallel" value="8" /> | |
| <arg name="cache" value=".phpcs.cache"/> | |
| <!-- <rule ref="PHPCompatibilityWP"/> | |
| <config name="minimum_wp_version" value="7.0"/> --> | |
| <rule ref="WordPress-Extra" /> | |
| <rule ref="WordPress-Docs" /> | |
| <!-- <rule ref="Generic.Commenting.Todo"/> --> | |
| <rule ref="Squiz"> | |
| <exclude name="Squiz.Commenting.FileComment.WrongStyle" /> | |
| <exclude name="Squiz.Commenting.FileComment.MissingPackageTag" /> | |
| </rule> | |
| </ruleset> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| // "[php]": { | |
| // "editor.defaultFormatter": "valeryanm.vscode-phpsab" | |
| // }, | |
| // "phpsab.snifferMode": "onType", | |
| // "phpsab.standard": "WordPress", | |
| // "phpsab.executablePathCS": "vendor/bin/phpcs.bat", | |
| // "phpsab.executablePathCBF": "vendor/bin/phpcbf.bat", | |
| // "[php]": { | |
| // "editor.defaultFormatter": "persoderlind.vscode-phpcbf" | |
| // }, | |
| // "phpcbf.enable": true, | |
| // "phpcbf.standard": "/.phpcs.xml", | |
| // "phpcbf.documentFormattingProvider": true, | |
| // "phpcbf.executablePath": "./vendor/bin/phpcbf.bat", | |
| // "phpcbf.onsave": true, | |
| "phpcs.autoConfigSearch": true, | |
| "phpcs.executablePath": "vendor/bin/phpcs.bat", | |
| "[php]": { | |
| "editor.defaultFormatter": "junstyle.php-cs-fixer" | |
| }, | |
| "php-cs-fixer.allowRisky": true, | |
| "php-cs-fixer.onsave": true,"php-cs-fixer.executablePath": "php-cs-fixer", | |
| // @sync os=windows | |
| "php-cs-fixer.executablePathWindows": "c:/users/kj/.composer/vendor/bin/php-cs-fixer.bat" | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "name": "kj/wordpress", | |
| "authors": [ | |
| { | |
| "name": "kj", | |
| "email": "kj@email.com" | |
| } | |
| ], | |
| "config": { | |
| "allow-plugins": { | |
| "dealerdirect/phpcodesniffer-composer-installer": true | |
| } | |
| }, | |
| "require-dev": { | |
| "wp-coding-standards/wpcs": "^3.0", | |
| "phpcompatibility/php-compatibility": "^9.3", | |
| "squizlabs/php_codesniffer": "^3.7", | |
| "phpcompatibility/phpcompatibility-wp": "^2.1", | |
| "friendsofphp/php-cs-fixer": "^3.40", | |
| "dealerdirect/phpcodesniffer-composer-installer": "^1.0", | |
| "tareq1988/wp-php-cs-fixer": "^1.0" | |
| }, | |
| "scripts": { | |
| "phpcs": "phpcs --standard=./phpcs.xml", | |
| "phpcbf": "phpcbf --standard=./phpcs.xml", | |
| "php-cs-fixer": "php-cs-fixer fix --allow-risky=yes" | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment