slevomat / coding-standard

Slevomat Coding Standard for PHP_CodeSniffer provides many useful sniffs
MIT License
1.37k stars 170 forks source link

AlphabeticallySortedUses disagrees with VSCode on alphabetical order of '\' and '_' characters #1667

Open joachim-n opened 4 months ago

joachim-n commented 4 months ago

The coding standard wants the lines to be like this:

use Drupal\action_link\Ajax\ActionLinkMessageCommand;
use Drupal\action_link\Entity\ActionLinkInterface;
use Drupal\action_link\Plugin\ActionLinkStyle\Ajax;
use Drupal\action_link_formatter_links\DisplayBuildAlter;

But if I select them in VSCode and do 'Sort lines ascending' I get this:

use Drupal\action_link_formatter_links\DisplayBuildAlter;
use Drupal\action_link\Ajax\ActionLinkMessageCommand;
use Drupal\action_link\Entity\ActionLinkInterface;
use Drupal\action_link\Plugin\ActionLinkStyle\Ajax;
kukulich commented 4 months ago

The sorting is compatible with PHPStorm. I was not able to find specification of the order between \ and _ in PSR 12. I'm ok to merge PR that will make this configurable.

Kingdutch commented 2 months ago

I'd argue that the coding standard and PHPStorm are correct here and that VSCode is wrong. VSCode is sorting the strings as-is whereas the coding standards and PHPStorm are more aware that we're dealing with "nested sections". If we alphabetically sort words then "action_link" would come before "action_link_formatter_links".

We can see that PHP treats these as nested "paths" because the following is uncommon but valid PHP:


use Drupal\action_link\{
    Ajax\ActionLinkMessageCommand,
    Entity\ActionLinkInterface,
    Plugin\ActionLinkStyle\Ajax,
};
use Drupal\action_link_formatter_links\{
    DisplayBuildAlter,
};

We should probably file a PHP issue with VSCode instead.