Skip to content

[META][DX] Automate phpcs code checks (linting) against all backdrop/backdrop PRs. #3213

@serundeputy

Description

@serundeputy

Describe your issue or idea

Run phpcs Backdrop code standards checks against all backdrop/backdrop PRs.

  • Devs get near real time feedback on code standards violations that can be addressed before a human gets the time to review it for technical implementation.

Actual behavior (if reporting a bug)

  • Currently PRs are not checked for code standards except by humans.

Expected behavior (if reporting a bug)

  • Automate the phpcs checks in ZenCI

There are two PRs on the table to enable this to happen:


To run the phpcs checks locally follow the instructions in the README.md here: https://packagist.org/packages/backdrop/coder


Here is an example of running phpcs locally against one file:

vendor/bin/phpcs --standard=./vendor/backdrop/coder/coder_sniffer/Backdrop core/modules/admin_bar/admin_bar.inc

and the output:

FILE: ...f/code/sites/backdrop-ops/backdrop/core/modules/admin_bar/admin_bar.inc
--------------------------------------------------------------------------------
FOUND 18 ERROR(S) AND 3 WARNING(S) AFFECTING 20 LINE(S)
--------------------------------------------------------------------------------
  35 | WARNING | Line exceeds 80 characters; contains 81 characters
 124 | WARNING | Line exceeds 80 characters; contains 81 characters
 126 | ERROR   | Missing parameter type at position 1
 168 | ERROR   | Missing parameter type at position 1
 172 | ERROR   | Data type of return value is missing
 215 | ERROR   | Inline comments must start with a capital letter
 252 | ERROR   | Doc comment for var A does not match actual variable name
     |         | $tree at position 1
 252 | ERROR   | Parameter comment must be on the next line at position 1
 254 | ERROR   | Missing parameter type at position 2
 256 | ERROR   | Missing parameter type at position 3
 367 | ERROR   | Missing parameter type at position 1
 369 | ERROR   | Missing parameter type at position 2
 396 | ERROR   | The first index in a multi-value array must be on a new line
 399 | ERROR   | Array indentation error, expected 6 spaces but found 4
 408 | ERROR   | Missing parameter type at position 1
 465 | ERROR   | Missing parameter type at position 1
 469 | ERROR   | Data type of return value is missing
 479 | ERROR   | Inline comments must end in full-stops, exclamation marks, or
     |         | question marks
 757 | ERROR   | Missing parameter type at position 1
 821 | WARNING | Format should be "* Implements hook_foo().", "* Implements
     |         | hook_foo_BAR_ID_bar() for xyz_bar().",, "* Implements
     |         | hook_foo_BAR_ID_bar() for xyz-bar.html.twig.", or "*
     |         | Implements hook_foo_BAR_ID_bar() for xyz-bar.tpl.php.".
 834 | ERROR   | Missing parameter type at position 1
--------------------------------------------------------------------------------
UPGRADE TO PHP_CODESNIFFER 2.0 TO FIX ERRORS AUTOMATICALLY
--------------------------------------------------------------------------------


  • We can break this up into per module tasks.
  • We should file the PRs against this branch https://github.com/backdrop/backdrop/tree/phpcs rather than the 1.x branch until we get complete coverge

Each participant should self assign themselves a core module and add it to the list here:

core/includes

core/modules

  • admin_bar @serundeputy
  • block @serundeputy
  • book @serundeputy
  • ckeditor
  • color
  • comment
  • config
  • contact
  • contextual
  • dashboard
  • date
  • dblog
  • email
  • entity
  • field
  • field_ui
  • file
  • filter
  • image
  • installer
  • language
  • layout
  • link
  • locale
  • menu
  • node
  • path
  • redirect
  • search
  • simpletest
  • syslog
  • system
  • taxonomy
  • translation
  • update
  • user
  • views
  • views_ui

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions