no-cycle finds 0 cycles in next.js (and other lies caches tell you)
The article discusses the discrepancies found in cycle detection algorithms used in linting tools for Next.js. It highlights how different tools can yield varying results due to caching mechanisms that may incorrectly mark files as acyclic. The author identifies a specific bug in the caching logic that leads to false positives in cycle detection.
- ▪Benchmarking revealed that two ESLint plugins found 0 cycles, while a different tool identified 17 cycles in the same codebase.
- ▪The bug in the caching layer caused files with cycles at greater depths to be incorrectly marked as acyclic.
- ▪The issue is exacerbated in larger codebases where a single incorrect cache entry can affect multiple files.
Opening excerpt (first ~120 words) tap to expand
try { if(localStorage) { let currentUser = localStorage.getItem('current_user'); if (currentUser) { currentUser = JSON.parse(currentUser); if (currentUser.id === 3669992) { document.getElementById('article-show-container').classList.add('current-user-is-article-author'); } } } } catch (e) { console.error(e); } Ofri Peretz Posted on May 24 • Originally published at ofriperetz.dev no-cycle finds 0 cycles in next.js (and other lies caches tell you) #eslint #staticanalysis #performance #algorithms Inside our linter benchmarks (2 Part Series) 1 What ground truth caught that unit tests missed: 3 real bugs in 9 flagship lint rules 2 no-cycle finds 0 cycles in next.js (and other lies caches tell you) We benchmark import-next/no-cycle against eslint-plugin-import/no-cycle and oxlint's native Rust…
Excerpt limited to ~120 words for fair-use compliance. The full article is at DEV.to (Top).