From a0d2892cadbc290ac7e4eb507c7e5cfc55202a53 Mon Sep 17 00:00:00 2001
From: jrfnl
Date: Mon, 12 Jun 2017 01:23:31 +0200
Subject: [PATCH 01/18] :wrench: Travis: update the versions used by the
various PHPCS libaries
As WPCS and PHPCompatibility were for a little while (May - July 2017) not compatible with PHPCS 3.x, the library tags cloned were previously fixed to prevent issues with that.
As both WPCS as well as the PHPCompatibility standard are now compatible with PHPCS 3.x, the changes made in PR 1110 and PR 1183 can be reverted.
Notes:
* PHPCS - use `master`.
WPCS uses a limited set of sniffs from PHPCS itself.
Most of these sniffs are long established, stable and rarely get updated, so using PHPCS `master` should be safe.
* WPCS - use the latest release `0.14.0`.
WPCS is the main source of CS violations and is under active development. This means that new versions of WPCS will easily break the build, so should be managed.
* PHPCompatibility - use `master`.
PHPCompatibility checks PHP cross-version compatibility.
It is actively developed and heavily unit tested, so any new violations found in `_s` because of changes in that library, should actually be addressed in `_s` ASAP.
The PHPCompatibility library became compatible with PHPCS 3.x and improved compatibility with Composer installs in version `8.0.0` which was a breaking change.
To account for that, the location where the library is cloned to and the `phpcs --installed_paths` command have been updated.
Ref: https://github.com/wimg/PHPCompatibility/pull/446
---
.travis.yml | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index a40b9756..182a5677 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -47,16 +47,17 @@ matrix:
# Failures in this section will result in build status 'errored'.
before_script:
- export PHPCS_DIR=/tmp/phpcs
- - export SNIFFS_DIR=/tmp/sniffs
+ - export WPCS_DIR=/tmp/wpcs
+ - export PHPCOMPAT_DIR=/tmp/phpcompatibility
# Install CodeSniffer for WordPress Coding Standards checks.
- - if [[ "$SNIFF" == "1" ]]; then git clone -b 2.9.1 --depth 1 https://github.com/squizlabs/PHP_CodeSniffer.git $PHPCS_DIR; fi
+ - if [[ "$SNIFF" == "1" ]]; then git clone -b master --depth 1 https://github.com/squizlabs/PHP_CodeSniffer.git $PHPCS_DIR; fi
# Install WordPress Coding Standards.
- - if [[ "$SNIFF" == "1" ]]; then git clone -b 0.11.0 --depth 1 https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git $SNIFFS_DIR; fi
+ - if [[ "$SNIFF" == "1" ]]; then git clone -b 0.14.1 --depth 1 https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git $WPCS_DIR; fi
# Install PHP Compatibility sniffs.
- - if [[ "$SNIFF" == "1" ]]; then git clone -b 7.1.5 --depth 1 https://github.com/wimg/PHPCompatibility.git $SNIFFS_DIR/PHPCompatibility; fi
+ - if [[ "$SNIFF" == "1" ]]; then git clone -b master --depth 1 https://github.com/wimg/PHPCompatibility.git $PHPCOMPAT_DIR; fi
# Set install path for PHPCS sniffs.
# @link https://github.com/squizlabs/PHP_CodeSniffer/blob/4237c2fc98cc838730b76ee9cee316f99286a2a7/CodeSniffer.php#L1941
- - if [[ "$SNIFF" == "1" ]]; then $PHPCS_DIR/scripts/phpcs --config-set installed_paths $SNIFFS_DIR; fi
+ - if [[ "$SNIFF" == "1" ]]; then $PHPCS_DIR/bin/phpcs --config-set installed_paths $WPCS_DIR,$PHPCOMPAT_DIR; fi
# After CodeSniffer install you should refresh your path.
- if [[ "$SNIFF" == "1" ]]; then phpenv rehash; fi
# Install JSCS: JavaScript Code Style checker.
@@ -83,7 +84,7 @@ script:
# @link https://pear.php.net/package/PHP_CodeSniffer/
# Uses a custom ruleset based on WordPress. This ruleset is automatically
# picked up by PHPCS as it's named `phpcs.xml(.dist)`.
- - if [[ "$SNIFF" == "1" ]]; then $PHPCS_DIR/scripts/phpcs; fi
+ - if [[ "$SNIFF" == "1" ]]; then $PHPCS_DIR/bin/phpcs; fi
# Receive notifications for build results.
# @link https://docs.travis-ci.com/user/notifications/#Email-notifications
From 94767ab0513f744375bfcb07412b26f61b1f9526 Mon Sep 17 00:00:00 2001
From: jrfnl
Date: Tue, 27 Feb 2018 10:18:26 +0100
Subject: [PATCH 02/18] :wrench: PHPCS: tidy up config file
Comply with strict XML standard.
---
phpcs.xml.dist | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/phpcs.xml.dist b/phpcs.xml.dist
index 5a4ab66b..b6571958 100644
--- a/phpcs.xml.dist
+++ b/phpcs.xml.dist
@@ -24,16 +24,16 @@
-
-
-
+
+
+
-
+
@@ -41,7 +41,7 @@
on the theme hierarchy. -->
-
+
@@ -50,7 +50,7 @@
as set in the "Requires at least" tag in the readme.txt file. -->
-
+
From 92d8673e4a087767d3f4cf9bd084f9bd1a956bc1 Mon Sep 17 00:00:00 2001
From: jrfnl
Date: Tue, 27 Feb 2018 11:08:06 +0100
Subject: [PATCH 03/18] :wrench: PHPCS: add section headings
This is intended to make it clearer for a newcomer to PHPCS to understand how the ruleset is build up and what each part of the ruleset means.
---
phpcs.xml.dist | 31 +++++++++++++++++++++++++++++--
1 file changed, 29 insertions(+), 2 deletions(-)
diff --git a/phpcs.xml.dist b/phpcs.xml.dist
index b6571958..c8e95d43 100644
--- a/phpcs.xml.dist
+++ b/phpcs.xml.dist
@@ -8,6 +8,14 @@
A custom set of code standard rules to check for WordPress themes.
+
+
+
.
-
+
+
+
+
+
+
@@ -54,7 +75,13 @@
-
+
+
+
From c453749f7aec170c4ea1641a7f0ede04df159fda Mon Sep 17 00:00:00 2001
From: jrfnl
Date: Tue, 27 Feb 2018 11:09:06 +0100
Subject: [PATCH 04/18] :wrench: PHPCS: don't ignore warnings, don't list
scanned files
The `-n` flag will ignore warnings completely, while often it is useful to see them and to fix them.
Using `--runtime-set ignore_warnings_on_exit 1` in the Travis script instead, warnings will be shown, both when a developer runs PHPCS on their own machine, as well as in Travis, but warnings will not cause a failed Travis build.
The `-v` flag will list each file being scanned. This is intended for debugging purposes and not needed for normal use.
---
.travis.yml | 2 +-
phpcs.xml.dist | 4 +---
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 182a5677..cb3b4105 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -84,7 +84,7 @@ script:
# @link https://pear.php.net/package/PHP_CodeSniffer/
# Uses a custom ruleset based on WordPress. This ruleset is automatically
# picked up by PHPCS as it's named `phpcs.xml(.dist)`.
- - if [[ "$SNIFF" == "1" ]]; then $PHPCS_DIR/bin/phpcs; fi
+ - if [[ "$SNIFF" == "1" ]]; then $PHPCS_DIR/bin/phpcs --runtime-set ignore_warnings_on_exit 1; fi
# Receive notifications for build results.
# @link https://docs.travis-ci.com/user/notifications/#Email-notifications
diff --git a/phpcs.xml.dist b/phpcs.xml.dist
index c8e95d43..69e0c59f 100644
--- a/phpcs.xml.dist
+++ b/phpcs.xml.dist
@@ -19,10 +19,8 @@
-
+
From dd7a1604e6331976b2f1d04243eacd751b8fe005 Mon Sep 17 00:00:00 2001
From: jrfnl
Date: Tue, 27 Feb 2018 10:29:07 +0100
Subject: [PATCH 05/18] :wrench: PHPCS: clean up the file paths PHPCS shows
This uses a new feature which is available since PHPCS 3.x.
---
phpcs.xml.dist | 3 +++
1 file changed, 3 insertions(+)
diff --git a/phpcs.xml.dist b/phpcs.xml.dist
index 69e0c59f..8e9ed7b8 100644
--- a/phpcs.xml.dist
+++ b/phpcs.xml.dist
@@ -22,6 +22,9 @@
-->
+
+
+
From 878fbde6c49a88f9298aeb76653ce4218772b208 Mon Sep 17 00:00:00 2001
From: jrfnl
Date: Tue, 27 Feb 2018 10:31:24 +0100
Subject: [PATCH 06/18] :wrench: PHPCS: speed up by checking files in parallel
This uses a new feature which is available since PHPCS 3.x.
The effect will depend on the system on which PHPCS is being run, but if parallel processing can be run, the build should be faster using this option.
---
phpcs.xml.dist | 3 +++
1 file changed, 3 insertions(+)
diff --git a/phpcs.xml.dist b/phpcs.xml.dist
index 8e9ed7b8..bc7a1eec 100644
--- a/phpcs.xml.dist
+++ b/phpcs.xml.dist
@@ -25,6 +25,9 @@
+
+
+
From 9ff286964b68e3acdc63e64ab5ee5f5ba19734d1 Mon Sep 17 00:00:00 2001
From: jrfnl
Date: Tue, 27 Feb 2018 10:34:58 +0100
Subject: [PATCH 07/18] :wrench: PHPCS: specify the minimum supported WP
version
A number of additional sniffs have been added to WPCS which all use the `minimum_supported_version` property to know which WP version to check against.
As setting these properties for each sniff becomes tedious and would necessitate the ruleset to be adjusted each time a new sniff which uses that property becomes available, WPCS now offers a (forward-compatible) way to set the minimum supported WP version for all sniffs in one go.
---
phpcs.xml.dist | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/phpcs.xml.dist b/phpcs.xml.dist
index bc7a1eec..2fe41af1 100644
--- a/phpcs.xml.dist
+++ b/phpcs.xml.dist
@@ -70,14 +70,10 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From cb7117a40891573e541f4cc9b2796de5892740ae Mon Sep 17 00:00:00 2001
From: jrfnl
Date: Tue, 27 Feb 2018 10:49:06 +0100
Subject: [PATCH 10/18] :wrench: PHPCS: add a comprehensive PHPCompatibility
exceptions ruleset
WordPress provides backfills for a number of PHP native functions and constants.
These can therefore be safely used in themes and plugins.
This commit adds a whitelist for the PHPCompatibility ruleset of the backfills currently provided by WP.
N.B.: At this moment, none of the whitelisted classes/constants/functions/interfaces are used in `_s`.
However, `_s` is also a teaching tool and an example for others, so having this whitelist block in there serves that purpose and allows for themes which are build onto `_s` to use these PHP features without having to worry about cross-version compatibility notices.
---
phpcs.xml.dist | 31 ++++++++++++++++++++++++++++++-
1 file changed, 30 insertions(+), 1 deletion(-)
diff --git a/phpcs.xml.dist b/phpcs.xml.dist
index 66317a71..ad4fab4c 100644
--- a/phpcs.xml.dist
+++ b/phpcs.xml.dist
@@ -103,5 +103,34 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From 7c24fc751d24707148071a71bae63fc6a1222dac Mon Sep 17 00:00:00 2001
From: jrfnl
Date: Tue, 27 Feb 2018 14:06:45 +0100
Subject: [PATCH 11/18] :wrench: PHPCS: remove exclusions
The ruleset contained some exclusions which are no longer needed.
---
phpcs.xml.dist | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/phpcs.xml.dist b/phpcs.xml.dist
index ad4fab4c..578ce025 100644
--- a/phpcs.xml.dist
+++ b/phpcs.xml.dist
@@ -41,11 +41,7 @@
#############################################################################
-->
-
-
-
-
-
+
' . sprintf( esc_html__( 'Try looking in the monthly archives. %1$s', '_s' ), convert_smilies( ':)' ) ) . '
From 98e3e75109b5636a4801f367f1e4403b4d7c48bb Mon Sep 17 00:00:00 2001
From: jrfnl
Date: Tue, 27 Feb 2018 11:35:30 +0100
Subject: [PATCH 15/18] CS: prefix all variables
While template files are intended to be included from within a function, this doesn't guarantee they always will be.
Therefore all variables declared within template files also need to be prefixed with a theme specific prefix.
As these are "local" variables, renaming them does not constitute a BC-break.
---
404.php | 4 ++--
comments.php | 8 ++++----
header.php | 6 +++---
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/404.php b/404.php
index 9cc9cb66..62c3e068 100644
--- a/404.php
+++ b/404.php
@@ -44,8 +44,8 @@ get_header();
' . sprintf( esc_html__( 'Try looking in the monthly archives. %1$s', '_s' ), convert_smilies( ':)' ) ) . '';
- the_widget( 'WP_Widget_Archives', 'dropdown=1', "after_title=$archive_content" );
+ $_s_archive_content = '
' . sprintf( esc_html__( 'Try looking in the monthly archives. %1$s', '_s' ), convert_smilies( ':)' ) ) . '
From 1abaebcdaa3bdc189208de6c4f3cefd2ef9787d4 Mon Sep 17 00:00:00 2001
From: jrfnl
Date: Tue, 27 Feb 2018 13:59:07 +0100
Subject: [PATCH 16/18] CS: correct indentation of a newly introduced function
---
inc/template-tags.php | 56 +++++++++++++++++++++----------------------
1 file changed, 28 insertions(+), 28 deletions(-)
diff --git a/inc/template-tags.php b/inc/template-tags.php
index f02759c5..056291d5 100644
--- a/inc/template-tags.php
+++ b/inc/template-tags.php
@@ -112,37 +112,37 @@ if ( ! function_exists( '_s_entry_footer' ) ) :
endif;
if ( ! function_exists( '_s_post_thumbnail' ) ) :
-/**
- * Displays an optional post thumbnail.
- *
- * Wraps the post thumbnail in an anchor element on index views, or a div
- * element when on single views.
- */
-function _s_post_thumbnail() {
- if ( post_password_required() || is_attachment() || ! has_post_thumbnail() ) {
- return;
- }
+ /**
+ * Displays an optional post thumbnail.
+ *
+ * Wraps the post thumbnail in an anchor element on index views, or a div
+ * element when on single views.
+ */
+ function _s_post_thumbnail() {
+ if ( post_password_required() || is_attachment() || ! has_post_thumbnail() ) {
+ return;
+ }
- if ( is_singular() ) :
- ?>
+ if ( is_singular() ) :
+ ?>
-
-
-
+
+
+
-
+
+
+
+ the_title_attribute( array(
+ 'echo' => false,
+ ) ),
+ ) );
+ ?>
+
-
the_title_attribute( array(
- 'echo' => false,
- ) ),
- ) );
- ?>
-
-
-
Date: Tue, 27 Feb 2018 14:05:41 +0100
Subject: [PATCH 17/18] CS: reformat a very long line
This line was quite unreadable.
Additionally, it was using the "heavy" `wp_kses_data()` function to escape item count phrase, while that phrase should not contain HTML in the first place and therefore can use the lighter `esc_html()` function to do the output escaping.
---
inc/woocommerce.php | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/inc/woocommerce.php b/inc/woocommerce.php
index 28933f35..6d6000ed 100644
--- a/inc/woocommerce.php
+++ b/inc/woocommerce.php
@@ -225,8 +225,14 @@ if ( ! function_exists( '_s_woocommerce_cart_link' ) ) {
function _s_woocommerce_cart_link() {
?>
-
- cart->get_cart_subtotal() ); ?>cart->get_cart_contents_count(), '_s' ), WC()->cart->get_cart_contents_count() ) ); ?>
+ cart->get_cart_contents_count(), '_s' ),
+ WC()->cart->get_cart_contents_count()
+ );
+ ?>
+ cart->get_cart_subtotal() ); ?>
Date: Tue, 27 Feb 2018 15:03:17 +0100
Subject: [PATCH 18/18] Contributing: add directive about compliance with WPCS
---
.github/CONTRIBUTING.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 11c023c4..a8bbf9bb 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -22,6 +22,7 @@ Found a bug you can fix? Fantastic! Patches are always welcome. Here's a few tip
* Include the purpose of your PR. Be explicit about the issue your PR solves.
* Reference any existing issues that relate to your PR. This allows everyone to easily see all related discussions.
* When submitting a change that affects CSS, please make sure that both SCSS sources and output CSS have been updated equally.
+* `_s` complies with the [WordPress Coding Standards](https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/) and any PR should comply as well.
By contributing code to `_s`, you grant its use under the [GNU General Public License v2 (or later)](LICENSE).