timaub's YAML Lint for Drupal

Repérez les erreurs de routing.yml et services.yml Drupal avant drush cr

timaub's YAML Lint for Drupal est une extension VS Code qui vérifie que vos fichiers YAML Drupal pointent vers du code qui existe : classes de contrôleur, @services, noms de routes, permissions, bibliothèques et fichiers CSS/JS. La vérification se fait pendant que vous tapez, hors ligne, sans PHP et sans installation de Drupal.

Free : classes, méthodes, services et routes. Pro : permissions, bibliothèques, fichiers d'assets, dépendances de modules, parents de menu et export CSV.

VS Code avec le routing.yml et le services.yml d'un module ouverts : une classe de contrôleur mal orthographiée et un service non déclaré sont soulignés et listés dans le panneau Problèmes.
Une classe de contrôleur mal orthographiée et un @service non déclaré, soulignés dans le YAML et listés dans le panneau Problèmes.

Écran blanc après drush cr ? C'est le plus souvent une faute de frappe dans un fichier YAML

"You have requested a non-existent service"

Un argument de service dit @entity_type.manger, ou le nom d'une classe de hook a une lettre de trop dans my_module.services.yml. Le conteneur ne se construit plus et tout le site tombe, parfois seulement en production.

Erreur de routing.yml Drupal

_controller: '\Drupal\my_module\Controller\ReportControler::build'. Rien ne se plaint jusqu'à ce que quelqu'un ouvre la page et reçoive une 500.

Route introuvable, bibliothèque introuvable

Un lien de menu pointe vers my_module.setings, une bibliothèque dépend de core/drupal.dialogg, un fichier JS a été renommé. Le YAML est valide ; ses cibles ne le sont pas.

Un schéma JSON valide la forme d'un fichier YAML. Il ne peut pas savoir si la classe, le service ou la route qu'il nomme existe. C'est ce manque que cette extension comble.

Ce qu'elle vérifie : la validation des services.yml Drupal, et plus

RéférenceOùÉdition
La classe PHP existe (PSR-4)_controller, _form, _title_callback, _custom_access, class de service, factory, class de lien de menu, deriverFree
La méthode existe::method des mêmes références (classes sans parent ni trait)Free
Le service est déclaré@id dans arguments, calls, factory, properties, configurator ; parent, decorates, aliasFree
La route existeliens route_name, base_route, appears_on, info.yml configureFree
Le YAML est analysabletout fichier YAML DrupalFree
La permission est déclarée_permission de routingPro
La bibliothèque existedependencies de bibliothèque, libraries de thème, libraries-override, libraries-extendPro
Le fichier CSS/JS existechemins css et js des *.libraries.ymlPro
La dépendance de module est présentedependencies de info.yml, base themePro
Le parent de menu ou d'onglet existeparent de links.menu, parent_id de links.taskPro

Pas de bruit quand elle ne peut pas savoir. Ouvrez un seul module sur mesure et vous n'avez aucun avertissement sur @entity_type.manager ou system.admin : une vérification reste silencieuse quand le module ou le core qu'elle vise n'est pas dans l'espace de travail, et quand les routes, les services ou les permissions sont construits dynamiquement. Pas de Twig et pas de résolution de l'héritage PHP dans cette version.

Free ou Pro

Pro : 39 €/an, une licence par utilisateur, jusqu'à 3 machines.
FonctionFreePro
Classes, méthodes, services, routes, erreurs d'analyseOuiOui
Vue du rapport, analyse de l'espace de travail, multi-racineOuiOui
PermissionsNonOui
Bibliothèques et fichiers CSS/JSNonOui
Dépendances de modules et thème de baseNonOui
Parents des liens de menu et des onglets locauxNonOui
Export CSV du rapportNonOui

Confidentialité

timaub's YAML Lint for Drupal ne collecte aucune donnée, n'écrit jamais dans vos fichiers et n'exécute jamais PHP ni Drush. Sa seule requête réseau est la vérification de la licence Pro auprès de Polar ; sans clé, il n'y en a aucune. Lire la politique de confidentialité.

FAQ

Faut-il PHP, Drush ou un site Drupal qui tourne ?

Non. L'extension lit vos fichiers YAML et PHP comme du texte et résout les classes par leur chemin PSR-4. Elle fonctionne sur un portable qui n'a que VS Code.

Fonctionne-t-elle hors ligne ?

Oui. L'analyse est locale. Une clé Pro est vérifiée en ligne quand vous la saisissez, puis elle continue de fonctionner hors ligne pendant 14 jours après la dernière vérification réussie.

Elle signale un service ou une route que mon module construit en PHP.

Ajoutez le nom exact à drupalYamlLint.knownServices ou knownRoutes, ou désactivez la règle. Les modules qui ont route_callbacks, un route subscriber ou un ServiceProvider sont détectés et laissés tranquilles.

Remplace-t-elle les schémas YAML de Drupal ?

Non, elle les complète. Les schémas vérifient que les clés et les types sont valides ; cette extension vérifie que les cibles existent. Utilisez les deux.

Est-ce un projet Drupal officiel ?

Non. C'est un outil indépendant, sans affiliation avec la Drupal Association ni approbation de sa part. Drupal est une marque déposée de Dries Buytaert.

Essayez-la sur votre prochain module

Installez l'édition Free, ouvrez votre module et regardez le panneau Problèmes.