`drush config:inspect --todo`: automate finding low-hanging fruit & high-hanging (high impact) fruit

Created on 3 October 2023, over 1 year ago
Updated 4 October 2023, over 1 year ago

Problem/Motivation

Blocked on ✨ Identify which properties must be made validatable elsewhere Fixed .

Rather than scanning the output of $ vendor/bin/drush config:inspect --detail --list-constraints manually to find next most important things to work on (which I've done a number of times for #2164373, see #41 there for example.

If we want to make it easy (and fun!) to contribute more validation constraints, we need to make it easy to discover what the next most important issue would be. Having this functionality would mean anybody would just need to do:

composer require drush/drush drupal/config_inspector
vendor/bin/drush pm:install -y config_inspector
vendor/bin/drush config:inspector --todo

… and they'd see it right there, tailored for the website they're running it on!

Steps to reproduce

Proposed resolution

You can optionally ask for less:

$ vendor/bin/drush config:inspect --todo=5
➜  πŸ€– Analyzing…

πŸ“πŸ“πŸ“πŸ“πŸ“πŸ“πŸ“πŸ“πŸ“πŸ“πŸ“πŸ“
πŸ“ Low-hanging fruit πŸ‡
πŸ‡πŸ‡πŸ‡πŸ‡πŸ‡πŸ‡πŸ‡πŸ‡πŸ‡πŸ‡πŸ‡πŸ‡
 β†ͺ The 5 unvalidatable config OBJECTS closest to 100% validatability:

  1. 97%: user.mail
  2. 91%: system.menu.account
  3. 91%: system.menu.admin
  4. 91%: system.menu.footer
  5. 91%: system.menu.main

➜  πŸ‘©πŸ»β€πŸ’» See details:
➜  drush config:inspect --filter-keys=[ONE OF THE ABOVE] --detail --list-constraints


🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎
🍎 High-hanging fruit 🍏
🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏
 β†ͺ The 5 unvalidatable config TYPES with the biggest impact:

  1. 17%: views.field.field     affects 937 property paths, 17% of @todos or  8% of total
  2.  8%: views.view.*          affects 433 property paths,  8% of @todos or  4% of total
  3.  5%: views.style.table     affects 281 property paths,  5% of @todos or  2% of total
  4.  4%: views.filter.boolean  affects 247 property paths,  4% of @todos or  2% of total
  5.  4%: views.display.default affects 219 property paths,  4% of @todos or  2% of total

(Total property paths on this Drupal site: 11417)

➜  πŸ§‘β€πŸ’» List all affected property paths (make sure to escape the asterisk with a backslash!)
➜  drush config:inspect --detail --list-constraints --fields=key,constraints | grep "@todo" | grep [ONE OF THE ABOVE]

But by default you'll get 15:

$ vendor/bin/drush config:inspect --todo
➜  πŸ€– Analyzing…

πŸ“πŸ“πŸ“πŸ“πŸ“πŸ“πŸ“πŸ“πŸ“πŸ“πŸ“πŸ“
πŸ“ Low-hanging fruit πŸ‡
πŸ‡πŸ‡πŸ‡πŸ‡πŸ‡πŸ‡πŸ‡πŸ‡πŸ‡πŸ‡πŸ‡πŸ‡
 β†ͺ The 15 unvalidatable config OBJECTS closest to 100% validatability:

  1. 97%: user.mail
  2. 91%: system.menu.account
  3. 91%: system.menu.admin
  4. 91%: system.menu.footer
  5. 91%: system.menu.main
  6. 91%: system.menu.tools
  7. 89%: shortcut.set.default
  8. 86%: node.type.article
  9. 86%: node.type.page
 10. 84%: editor.editor.basic_html
 11. 82%: block_content.type.basic
 12. 82%: comment.type.comment
 13. 82%: taxonomy.vocabulary.tags
 14. 80%: system.maintenance
 15. 79%: user.settings

➜  πŸ‘©πŸ»β€πŸ’» See details:
➜  drush config:inspect --filter-keys=[ONE OF THE ABOVE] --detail --list-constraints


🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎
🍎 High-hanging fruit 🍏
🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏
 β†ͺ The 15 unvalidatable config TYPES with the biggest impact:

  1. 17%: views.field.field                   affects 937 property paths, 17% of @todos or  8% of total
  2.  8%: views.view.*                        affects 433 property paths,  8% of @todos or  4% of total
  3.  5%: views.style.table                   affects 281 property paths,  5% of @todos or  2% of total
  4.  4%: views.filter.boolean                affects 247 property paths,  4% of @todos or  2% of total
  5.  4%: views.display.default               affects 219 property paths,  4% of @todos or  2% of total
  6.  3%: views.filter.language               affects 187 property paths,  3% of @todos or  2% of total
  7.  3%: _core_config_info                   affects 176 property paths,  3% of @todos or  2% of total
  8.  3%: config_dependencies                 affects 162 property paths,  3% of @todos or  1% of total
  9.  3%: views.filter.string                 affects 144 property paths,  3% of @todos or  1% of total
 10.  2%: core.entity_form_display.*.*.*      affects 136 property paths,  2% of @todos or  1% of total
 11.  2%: views.field.*                       affects 125 property paths,  2% of @todos or  1% of total
 12.  2%: block.block.*                       affects 120 property paths,  2% of @todos or  1% of total
 13.  2%: views.sort.date                     affects  87 property paths,  2% of @todos or  1% of total
 14.  1%: field_formatter.entity_view_display affects  80 property paths,  1% of @todos or  1% of total
 15.  1%: views.display.page                  affects  80 property paths,  1% of @todos or  1% of total

(Total property paths on this Drupal site: 11417)

➜  πŸ§‘β€πŸ’» List all affected property paths (make sure to escape the asterisk with a backslash!)
➜  drush config:inspect --detail --list-constraints --fields=key,constraints | grep "@todo" | grep [ONE OF THE ABOVE]

(This was on 724c8d4dd84c1651d3b80a92c99101a3adde0aae of Drupal core β€” anyone should be able to reproduce this.)

Remaining tasks

User interface changes

API changes

Data model changes

✨ Feature request
Status

Fixed

Version

2.1

Component

User interface

Created by

πŸ‡§πŸ‡ͺBelgium wim leers Ghent πŸ‡§πŸ‡ͺπŸ‡ͺπŸ‡Ί

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

Production build 0.71.5 2024