Bug fixes 🐛
- NativeFunctionInvocation: use
FunctionsAnalyzer::isGlobalFunctionCallso only real global function calls are touched (#275) — thanks @gnutix - StatementIndentation: handle comments directly above a
case, and template files (#278) — thanks @gnutix - Invalidate the cache when a local checker's own code changes, so edits to custom rules are picked up (#211) — thanks @gnutix
Blink (experimental Go engine) 😉
Ported fixers and sniffs
- Port 7 ClassNotation fixers to Go (#284)
- Port 5 FunctionNotation fixers from PHP-CS-Fixer (#282)
- Port Operator, ControlStructure, ArrayNotation and ReturnNotation fixers (#281)
- Port LanguageConstruct fixers (combine issets/unsets, no unset on property) (#283)
- Port 5 PhpUnit fixers (strict, assert new names, mock, dedicate assert internal type, namespaced) (#280)
- Port StringNotation string/heredoc fixers (#285)
- Port 8 misc PHP-CS-Fixer fixers (Strict, Alias, Basic, Attribute, Namespace) (#286)
- Port 6 phpdoc fixers (#292)
- Port MethodChainingNewline and StandaloneLineConstructorParam (#299) — thanks @gnutix
- Port MultilinePromotedPropertiesFixer (#303)
- Port GroupImportFixer (#305)
- Port CommentToPhpdocFixer (#304)
- Port risky DateTimeImmutable fixer (#295)
- Port NativeFunctionInvocationFixer (#270)
- Add ArrayPush, BacktickToShellExec, EregToPreg, ModernizeStrpos, PowToExponentiation, SetTypeToCast (#269) — thanks @gnutix
- Add DeclareStrictTypes, VoidReturn, StaticLambda, NoUselessElse, NoUnneededFinalMethod, NoPhp4Constructor (#263) — thanks @gnutix
- Add 6 string, naming and serialization rules (#266) — thanks @gnutix
- Add DirConstant, CombineNestedDirname, ImplodeCall, NoUselessSprintf, ModernizeTypesCasting, FopenFlagOrder (#264) — thanks @gnutix
- Add 4 PHPUnit rules, DoctrineAnnotationBraces and GlobalKeywordSniff (#267) — thanks @gnutix
- Add LanguageConstructSpacing sniff to match the PHP engine (#249)
- The rest of #250 in one PR (skip semantics, rule defaults, 8 new rules) (#274) — thanks @gnutix
Parity and correctness fixes:
- Fix two rules counted wrong in the README coverage (#300) — thanks @gnutix
- Map deprecated PHP-CS-Fixer rules to their successors (#296) — thanks @gnutix
- Fix SpacesInsideParentheses, LineLength on attributes, TrimArraySpaces and FunctionDeclaration (#301) — thanks @GErpeldinger
- Fix StandaloneLineRequiredParam, BracesPosition, StatementIndentation, MethodArgumentSpace and TrailingCommaInMultiline (#291) — thanks @GErpeldinger
- Fix NoUnneededControlParentheses on clone, and ConstantCase on names (#289) — thanks @GErpeldinger
- Fix NoUnusedImports and OrderedImports (#260) — thanks @gnutix
- Fix 8 rules that changed valid code (#259) — thanks @gnutix
- Fix TernaryOperatorSpaces, FullyQualifiedStrictTypes and NullableTypeDeclaration (#258) — thanks @gnutix
- Fix BracesPosition, StatementIndentation and AddMissingParamName (#261) — thanks @gnutix
- Read inline-HTML indent in ArrayIndentation for .html.php parity (#272)
- Make the lexer give the same tokens as
token_get_all(#268) — thanks @gnutix - Default AlignMultilineComment to phpdocs_only, matching the engine (#252)
Option reading:
- Read the options of 13 rules (#298) — thanks @gnutix
- Read the options of PhpdocAlign (#290) — thanks @GErpeldinger
- Read the options of 6 rules (#256) — thanks @gnutix
- Read the options of 4 phpdoc rules (#257) — thanks @gnutix
Performance and infrastructure:
- Scan Doctrine annotations lazily (#276) — thanks @gnutix
- NoUnusedImports, avoid rescans per import (#277) — thanks @gnutix
- Let rules skip files without their trigger (#288) — thanks @gnutix
- Add a stream version, to share work between rules (#279) — thanks @gnutix
- Classify array brackets in one pass (#287) — thanks @gnutix
- Delete empty tokens after each rule, and make per-cs the same list as ECS (#253) — thanks @gnutix
- Measure blink coverage against the full fixer universe (#271)
- Let projects register their own fixers (#251) — thanks @gnutix
- Consolidate CI into fewer jobs (#293)