FirstTask | {T286557} >
Since we don't have a regular release process (yet, see T266890), filing for discussion/consideration by others.
Changes since v35, as of 42da59a0554332e5a60ea3bcbf91c906b78b4517, manually organized and tweaked based on results of running gen-changelog.sh:
```
### New sniffs ###
* Re-apply "Add PSR2.ControlStructures.SwitchDeclaration" (Jforrester)
* Add `SetMethodsSniff` for PHPUnit tests using MockBuilder::setMethods (Daimona Eaytoy)
* Enable `Generic.WhiteSpace.LanguageConstructSpacing` (Umherirrender)
* Add `StaticClosureSniff` (Umherirrender)
### Changed sniffs ###
* SpaceBeforeBracketSniff: Fix newline handling (DannyS712)
* DirUsageSniff: Check strings outside of classes (DannyS712)
* Cache PHPUnitTestTrait::isTestFile() results (Thiemo Kreuz)
* AlphabeticArraySortSniff: Preserve tabs when autofixing (Umherirrender)
* FunctionAnnotationsSniff: recognize more phpunit annotations (DannyS712)
* FinalPrivateSniff: Combine two early returns (Umherirrender)
* ValidGlobalNameSniff: fix quotes around expected names (DannyS712)
* SpecificAssertionsSniff: fix order of assertStringContainsString parameters (DannyS712)
* UnusedUseStatement: Add support for understanding multiple namespaces (Thiemo Kreuz)
* Fix false positive for Java-style array<int, string> types (Thiemo Kreuz)
* Move helper to DocumentationTypeTrait and reuse more often (Thiemo Kreuz)
* Fix spacing around exception type on @throws tag (Umherirrender)
* UnusedUseStatement: Fix support for Java-style array<int, string> (Thiemo Kreuz)
* UnusedUseStatement: Add support for Java-style arrays in @phan-var (Thiemo Kreuz)
* SpaceyParenthesisSniff: Fix error message for long array case (Umherirrender)
* ForbiddenFunctionsSniff: Warn about use of define() with deprecated third argument (Umherirrender)
* UnusedUseStatementSniff: Add support for phan annotations (Umherirrender)
* UnusedUseStatementSniff: Micro-optimizations (Daimona Eaytoy)
* UnusedUseStatementSniff: Include class names in messages (Lucas Werkmeister)
* UnsortedUseStatementsSniff: Fix loop on live coding/incomplete code (Umherirrender)
* SpaceBeforeBracketSniff: Remove special check (Umherirrender)
* DocCommentSniff: Remove SpacingDocTag for no-spaces before @param (Umherirrender)
* FunctionCommentSniff: Rename and remove variables in (Umherirrender)
* ValidGlobalNameSniff: Allow non-two-characters prefixes for global variables (Alexander Mashin)
* ValidGlobalNameSniff: Don't return on first valid name (DannyS712)
### Documentation, dependencies and build changes ###
* build: Updating mediawiki/minus-x to 1.1.1 (libraryupgrader)
* internal: Use static closures (Umherirrender)
* Use neutral language (Reedy)
* Fix PSR-4 autoloading for composer 2.0 (Reedy)
* internal: Fix doc type for token argument in SpaceyParenthesisSniff (Umherirrender)
* Remove reference to T_RETURN_TYPE (Umherirrender)
* internal: Use param and return type hint on non-inherited functions (Umherirrender)
* internal: Add return type hint to Sniff::register implementation (Umherirrender)
* build: Update squizlabs/php_codesniffer to 3.6.0 (Umherirrender)
* Improve performance of exclude-pattern in ruleset.xml (Umherirrender)
* build: Split scripts in composer.json from "composer test" (Umherirrender)
### Test coverage ###
* Test nested but not in_array branch in InArrayUsageSniff (Umherirrender)
* Test RedundantVarNameSniff (Umherirrender)
* Test bad @phan-var in UnusedUseStatementSniff (Umherirrender)
* Test ClassLevelLicenseSniff (Umherirrender)
* Test spacing around @var in PropertyDocumentationSniff (Umherirrender)
* Test doc comment does not belongs to function in PhpunitAnnotationsSniff (Umherirrender)
* Test missing scope branch in SpaceBeforeClassBraceSniff (Umherirrender)
* Test empty comment branch in SpaceBeforeSingleLineCommentSniff (Umherirrender)
* Test namespaced function is_null in IsNullSniff (Umherirrender)
* Test nested parenthesis in arguments in ForbiddenFunctionsSniff (Umherirrender)
* Add newline test to IfElseStructureSniff (Umherirrender)
* Test non-parenthesis branch in DirUsageSniff (Umherirrender)
* Add newline test to WhiteSpaceBeforeFunction (Umherirrender)
* Test non-parenthesis branch in DeprecatedPHPUnitMethodsSniff (Umherirrender)
* Test ValidGlobalNameSniff with multi prefixes (Umherirrender)
* Test PrefixedGlobalFunctionsSniff with ignore list (Umherirrender)
* Test non-parenthesis and complex value branch in SpecificAssertionsSniff (Umherirrender)
* Test non-parenthesis and complex value branch in AssertionOrderSniff (Umherirrender)
* Test non-parenthesis branch in AssertCountSniff (Umherirrender)
* Add test for ExtensionInfo util class (Umherirrender)
* Test non-parenthesis branch in OpeningKeywordParenthesisSniff (Umherirrender)
* Test for param name and duplicate @return in FunctionCommentSniff (Umherirrender)
* Test edge case in PlusStringConcatSniff (Umherirrender)
* Test edge case in AlphabeticArraySortSniff (Umherirrender)
* Test edge case in VariadicArgumentSniff (Umherirrender)
* Test edge cases in UnicodeEscapeSniff (Umherirrender)
* Test edge cases in UnusedUseStatementSniff (Umherirrender)
* Add test for index error in AssignmentInReturnSniff (Thiemo Kreuz)
```