Part of meta-issue #2571965: [meta] Fix PHP coding standards in core
Step 1: Preparation
Open the file core/phpcs.xml.dist
and add a line for the sniff of this ticket. The sniff name is in the issue title. Make sure your patch will include the addition of this line.
Step 2: Install & configure PHPCS
Install PHP CodeSniffer and the ruleset from the Coder module:
$ composer install
$ ./vendor/bin/phpcs --config-set installed_paths ../../drupal/coder/coder_sniffer
Once you have installed the phpcs package, you can list all the sniffs available to you like this:
$ ./vendor/bin/phpcs --standard=Drupal -e
This will give you a big list of sniffs, and the Drupal-based ones should be present.
Step 3: Prepare the phpcs.xml file
To speed up the testing you should make a copy of the file phpcs.xml.dist
(in the core/
folder) and save it as phpcs.xml
. This is the configuration file for PHP CodeSniffer.
We only want this phpcs.xml file to specify the sniff we're interested in. So we need to remove all the rule items, and add only our own sniff's rule. Rule items look like this:
<rule ref="Drupal.Classes.UnusedUseStatement"/>
Remove all of them, and add only the sniff from this issue title. This will make sure that our tests run quickly, and are not going to contain any output from unrelated sniffs.
Step 4: Run the test
Now you are ready to run the test! From within the core/
folder, run the following command to launch the test:
$ cd core/
$ ../vendor/bin/phpcs -p
This takes a couple of minutes. The -p
flag shows the progress, so you have a bunch of nice dots to look at while it is running.
Step 5: Fix the failures
When the test is complete it will present you a list of all the files that contain violations of your sniff, and the line numbers where the violations occur. You could fix all of these manually, but thankfully phpcbf
can fix many of them. You can call phpcbf like this:
$ ../vendor/bin/phpcbf
This will fix the errors in place. You can then make a diff of the changes using git. You can also re-run the test with phpcs and determine if that fixed all of them.
Comment | File | Size | Author |
---|---|---|---|
#16 | re-roll-2902548-16.patch | 509 bytes | guilhermevp |
#11 | 2902548-11.patch | 504 bytes | guilhermevp |
#10 | no errors.txt | 12.36 KB | guilhermevp |
Comments
Comment #2
mfernea CreditAttribution: mfernea at AmeXio commentedThis should be postponed until #2902547: REMOTE_ADDR and ip_address() in Drupal.Semantics.RemoteAddress is fixed.
Comment #9
quietone CreditAttribution: quietone as a volunteer commentedNo longer postponed
Comment #10
guilhermevp CreditAttribution: guilhermevp at CI&T commentedIn my tests
<rule ref="Drupal.Semantics.RemoteAddress"/>
is returning zero errors.Comment #11
guilhermevp CreditAttribution: guilhermevp at CI&T commentedAdding phpcs.xml.dist patch.
Comment #12
Spokje@guilhermevp is correct in #10, the sniff
Drupal.Semantics.RemoteAddress
does not currently affect any files in9.2.x
, making this a _very_ easy patch to review.- Tests are green
- Patch just adds the sniff to
core/phpcs.xml.dist
One could argue that the sniff is not added to
core/phpcs.xml.dist
in an alphabetical order, in which case it should come right after<rule ref="Drupal.Semantics.PregSecurity"/>
.Then again: this bit of that file isn't in alphabetical order:
So either that's something for a follow-up at the end (if there ever will be one...) of all
Coding Standard
issues, or we don't do alphabetical ordering here.RTBC for me.
Comment #13
longwaveRegarding sort order there is #3135933: Sort sniffs/rules in phpcs.xml.dist and write test to keep them sorted to solve it permanently.
Comment #14
SpokjeExcellent, thanks @longwave for seemingly knowing just about any open issue in the queue 🙏
RTBC it is and stays even more firm now.
Comment #16
guilhermevp CreditAttribution: guilhermevp at CI&T commentedRe-rolled for 9.3.x.
Comment #17
alexpottCommitted and pushed 0e5db56ef2 to 9.3.x and ba7e2fec67 to 9.2.x. Thanks!