Avatar for the oxc-project user
oxc-project
oxc
Instrumentation
Wall Time
BlogDocsChangelog

feat(linter): overhaul unicorn/no-useless-spread

#4791Merged
Comparing
don/linter/feat/no_useless_spread_overhaul
(
b3c3125
) with
main
(
5992b75
)
CodSpeed Performance Gauge
0%
Improvements
0
Regressions
0
Untouched
29
New
0
Dropped
0
Ignored
0

Benchmarks

Passed

linter[checker.ts]
tasks/benchmark/benches/linter.rs::linter::bench_linter::linter[checker.ts]
CodSpeed Performance Gauge
0%
1.4 s
1.4 s
semantic[cal.com.tsx]
tasks/benchmark/benches/semantic.rs::semantic::bench_semantic::semantic[cal.com.tsx]
CodSpeed Performance Gauge
0%
46.7 ms
46.6 ms
semantic[pdf.mjs]
tasks/benchmark/benches/semantic.rs::semantic::bench_semantic::semantic[pdf.mjs]
CodSpeed Performance Gauge
0%
20.8 ms
20.8 ms
lexer[RadixUIAdoptionSection.jsx]
tasks/benchmark/benches/lexer.rs::lexer::bench_lexer::lexer[RadixUIAdoptionSection.jsx]
CodSpeed Performance Gauge
0%
22.3 µs
22.2 µs
semantic[RadixUIAdoptionSection.jsx]
tasks/benchmark/benches/semantic.rs::semantic::bench_semantic::semantic[RadixUIAdoptionSection.jsx]
CodSpeed Performance Gauge
0%
99.8 µs
99.7 µs
transformer[RadixUIAdoptionSection.jsx]
tasks/benchmark/benches/transformer.rs::transformer::bench_transformer::transformer[RadixUIAdoptionSection.jsx]
CodSpeed Performance Gauge
0%
223.5 µs
223.3 µs
transformer[checker.ts]
tasks/benchmark/benches/transformer.rs::transformer::bench_transformer::transformer[checker.ts]
CodSpeed Performance Gauge
0%
139 ms
139 ms
semantic[checker.ts]
tasks/benchmark/benches/semantic.rs::semantic::bench_semantic::semantic[checker.ts]
CodSpeed Performance Gauge
0%
76.1 ms
76.1 ms
lexer[pdf.mjs]
tasks/benchmark/benches/lexer.rs::lexer::bench_lexer::lexer[pdf.mjs]
CodSpeed Performance Gauge
0%
3.2 ms
3.2 ms
lexer[cal.com.tsx]
tasks/benchmark/benches/lexer.rs::lexer::bench_lexer::lexer[cal.com.tsx]
CodSpeed Performance Gauge
0%
4.9 ms
4.9 ms
codegen_sourcemap[checker.ts]
tasks/benchmark/benches/codegen.rs::codegen::bench_codegen::codegen_sourcemap[checker.ts]
CodSpeed Performance Gauge
0%
72.9 ms
72.9 ms
isolated-declarations[vue-id.ts]
tasks/benchmark/benches/isolated_declarations.rs::transformer::bench_isolated_declarations::isolated-declarations[vue-id.ts]
CodSpeed Performance Gauge
0%
380.3 ms
380.3 ms
minifier[antd.js]
tasks/benchmark/benches/minifier.rs::minifier::bench_minifier::minifier[antd.js]
CodSpeed Performance Gauge
0%
352.6 ms
352.6 ms
transformer[pdf.mjs]
tasks/benchmark/benches/transformer.rs::transformer::bench_transformer::transformer[pdf.mjs]
CodSpeed Performance Gauge
0%
37.8 ms
37.8 ms
lexer[checker.ts]
tasks/benchmark/benches/lexer.rs::lexer::bench_lexer::lexer[checker.ts]
CodSpeed Performance Gauge
0%
12 ms
12 ms
parser[checker.ts]
tasks/benchmark/benches/parser.rs::parser::bench_parser::parser[checker.ts]
CodSpeed Performance Gauge
0%
52.4 ms
52.4 ms
lexer[antd.js]
tasks/benchmark/benches/lexer.rs::lexer::bench_lexer::lexer[antd.js]
CodSpeed Performance Gauge
0%
19.9 ms
19.9 ms
codegen[checker.ts]
tasks/benchmark/benches/codegen.rs::codegen::bench_codegen::codegen[checker.ts]
CodSpeed Performance Gauge
0%
20 ms
20 ms
parser[pdf.mjs]
tasks/benchmark/benches/parser.rs::parser::bench_parser::parser[pdf.mjs]
CodSpeed Performance Gauge
0%
17.1 ms
17.1 ms
minifier[typescript.js]
tasks/benchmark/benches/minifier.rs::minifier::bench_minifier::minifier[typescript.js]
CodSpeed Performance Gauge
0%
635.6 ms
635.6 ms
parser[antd.js]
tasks/benchmark/benches/parser.rs::parser::bench_parser::parser[antd.js]
CodSpeed Performance Gauge
0%
104.3 ms
104.3 ms
parser[cal.com.tsx]
tasks/benchmark/benches/parser.rs::parser::bench_parser::parser[cal.com.tsx]
CodSpeed Performance Gauge
0%
24.2 ms
24.2 ms
semantic[antd.js]
tasks/benchmark/benches/semantic.rs::semantic::bench_semantic::semantic[antd.js]
CodSpeed Performance Gauge
0%
126.8 ms
126.8 ms
transformer[antd.js]
tasks/benchmark/benches/transformer.rs::transformer::bench_transformer::transformer[antd.js]
CodSpeed Performance Gauge
0%
245.2 ms
245.2 ms
sourcemap[cal.com.tsx]
tasks/benchmark/benches/sourcemap.rs::sourcemap::bench_sourcemap::sourcemap[cal.com.tsx]
CodSpeed Performance Gauge
0%
61.5 ms
61.5 ms
transformer[cal.com.tsx]
tasks/benchmark/benches/transformer.rs::transformer::bench_transformer::transformer[cal.com.tsx]
CodSpeed Performance Gauge
0%
62.9 ms
63 ms
parser[RadixUIAdoptionSection.jsx]
tasks/benchmark/benches/parser.rs::parser::bench_parser::parser[RadixUIAdoptionSection.jsx]
CodSpeed Performance Gauge
0%
77 µs
77.3 µs
minifier[react.development.js]
tasks/benchmark/benches/minifier.rs::minifier::bench_minifier::minifier[react.development.js]
CodSpeed Performance Gauge
-1%
3.7 ms
3.7 ms
linter[cal.com.tsx]
tasks/benchmark/benches/linter.rs::linter::bench_linter::linter[cal.com.tsx]
CodSpeed Performance Gauge
-1%
772.2 ms
782.9 ms

Commits

Click on a commit to change the comparison range
Base
main
5992b75
0%
feat(linter): overhaul unicorn/no-useless-spread (#4791) I got tired of seeing useless spreads on ternaries and `arr.reduce()` within my company's internal codebase so I overhauled this rule. ## Changes - add fixer for object spreads ```js const before = { a, ...{ b, c }, d } const after = { a, b, c, d } // fixer does not dedupe spaces before `b` ``` - recursively check for useless clones on complex expressions. This rule now catches and auto-fixes the following cases: ```js // ternaries when both branches create a new array or object const obj = { ...(foo ? { a: 1 } : { b: 2 }) } // recursive, so this can support complex cases const arr = [ ...(foo ? a.map(fn) : bar ? Array.from(iter) : await Promise.all(bar)) ] // reduce functions where the initial accumulator creates a new object or array const obj = { ...(arr.reduce(fn, {}) } ```
b3c3125
8 months ago
by DonIsaac
© 2025 CodSpeed Technology
Home Terms PrivacyDocs