resyntax
resyntax copied to clipboard
A Racket refactoring engine
It should be possible to tell Resyntax to keep specific collections in sorted order. This could be done with a `keep-sorted` macro by making a Resyntax rule that looks for...
Adds statistics mode for analyzing rule usefulness across large codebases. Addresses #28. ## Changes - Add `--output-summary-stats-only` flag to `resyntax analyze` command - When no `--refactoring-rule` filter: prints matches grouped...
See https://github.com/jackfirth/resyntax/blob/43f5fc6153b1d1dc9fff65a23391c4aac604fb22/default-recommendations/syntax-parse-shortcuts.rkt#L48 and https://github.com/benknoble/frosthaven-manager/pull/126
The identifier-usage-analyzer was not counting identifier uses recorded in the `'disappeared-use` syntax property, which macros use to mark identifiers referenced during expansion but not appearing in the expanded code. ##...
The implementation of `identifier-usage-analyzer` currently doesn't see disappeared uses, as recorded by macros in [the `'disappeared-use` syntax property](https://docs.racket-lang.org/tools/Check_Syntax.html#(part._.Syntax_.Properties_that_.Check_.Syntax_.Looks_.For)). This test should pass: ```scheme #lang resyntax/test header: - #lang racket/base analysis-test:...
No more than 3 should be open at a time.
Adds a refactoring rule to extract complex multi-line initialization expressions from named `let` loops into separate `define` bindings, improving readability by reducing nesting. ## Implementation - **Rule**: Extracts multi-line named...
### Rule summary Old scheme code that doesn't use internal definitions sometimes uses complex named `let` loops with very large expressions used as the initial values for the named `let`'s...
Refactoring suggestions sometimes make sense generally but break intentional code patterns (e.g., visual symmetry in comparisons). Users currently must repeatedly ignore autofixer PRs for these cases. ## Changes - **Added...
Resyntax currently filters syntax objects during analysis by checking if their source locations fall within requested line ranges. As more of the codebase has moved to work with syntax paths,...