Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove JS/CSS Sniffs #442

Open
rebeccahum opened this issue Aug 27, 2019 · 5 comments
Open

Remove JS/CSS Sniffs #442

rebeccahum opened this issue Aug 27, 2019 · 5 comments
Labels

Comments

@rebeccahum
Copy link
Contributor

With JS and CSS tokenizers slated to be removed in 4.0 of PHPCS, we may have to remove our JS/CSS sniffs for compatibility: squizlabs/PHP_CodeSniffer#2448

JS sniffs:

  • JS/WindowSniff.php
  • JS/DangerouslySetInnerHTMLSniff.php
  • JS/HTMLExecutingFunctionsSniff.php
  • JS/InnerHTMLSniff.php
  • JS/StringConcatSniff.php
  • JS/StrippingTagsSniff.php

CSS Sniffs:

  • UserExperience/AdminBarRemovalSniff.php
@GaryJones
Copy link
Contributor

Side note: @gudmdharalds has confirmed that the vip-go-ci bot can integrate eslint, and we can therefore look at having it use something like https://github.com/mozilla/eslint-plugin-no-unsanitized and similar eslint plugins to identify some of what the sniffs here are looking out for.

squizlabs/PHP_CodeSniffer#2448 (comment) says that PHPCS 4 won't be released until at least 2020, so we have plenty of time before this needs actioning (unless we feel that the eslint solution gives a better outcome / fewer false positives and want to use it sooner rather than later).

@GaryJones
Copy link
Contributor

In PHPCS itself, PHPCSStandards/PHP_CodeSniffer#276 was used to add @deprecated annotations to the relevant sniffs as a "soft deprecation" (defined as "deprecation via changelog mention and/or announcement only."). We can do this today.

Also PHPCSStandards/PHP_CodeSniffer#188 covers how the sniffs will be hard deprecated ("a deprecation notice will be shown at runtime, but will not affect the exit code of PHPCS.") in the last PHPCS 3.x minor release. This is using the new native handling of deprecated sniffs for PHPCS 3.9 (which we'll need VIPCS to have as a minimum to make use of it).

We can do the same for VIPCS. It means we'll need to have a major VIPCS release that fully removes these sniffs, before we can support PHPCS 4 (which will have the CSS and JS tokenizers removed that our deprecated sniffs would otherwise try and use).

@jrfnl
Copy link
Collaborator

jrfnl commented Feb 16, 2024

@GaryJones Glad you like what I've done to make deprecating sniffs more user-friendly 😀

Just to give you some idea, I'm hoping to release version 4.0 ~ end of May (though conferences & speaking may interfere with my planning).

Before 4.0 will be released, some utilities will be added to PHPCSUtils to make cross-version support for PHPCS 3.x/4.x (for scanning PHP files and running tests) easier and to make it more straight-forward to make sniffs compatible with the Tokenizer changes which are included in PHPCS 4.0.

I want those things to be available before releasing 4.0, which should hopefully also encourage more external standards to adopt PHPCSUtils.

I'm currently working on these new features in Utils and intend to include these utilities in PHPCSUtils 1.1.0 (along with some other new helper functionality).

@GaryJones
Copy link
Contributor

GaryJones commented Feb 16, 2024

@rebeccahum I see you included the UserExperience/AdminBarRemovalSniff.php sniff in the list, which uses CSS and PHP tokenizers. Do you think there is value in stripping out the CSS portion and just leaving the PHP checks?

Likewise, how about the Twig, UnderscoreJS, VueJS, Mustache sniffs? Should the whole sniff be soft deprecated, or is there still something to be gained by checking with just the PHP tokenizer?

Edit: added develop...feature/soft-deprecate-sniffs-for-phpcs-4.0 but will hold off on the PR until these questions have answers.

GaryJones added a commit that referenced this issue Feb 16, 2024
CSS/JS tokenizers will be removed for PHPCS 4: squizlabs/PHP_CodeSniffer#2448

This commit _soft_ deprecates these sniffs with a `@deprecated` annotation. They will also get a mention in the changelog.

Hard deprecation using the PHPCS 3.9.0 native handling of deprecated sniffs will follow.

See #442.
@rebeccahum
Copy link
Contributor Author

Re: the admin bar, yeah, I think that would be fine since that is something we will strongly discourage.

Re: the other templating engines, I'm not sure how useful they are, so I'm fine with a soft deprecation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants