Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Spectra JS/TS Linter

Линтер с базой заложенной во время работы в Astramanga. На данный момент в стадии написания RFC.

Статический анализатор JavaScript и TypeScript, построенный поверх полного графа программы — не только AST, но и IR, CFG, DFG, alias-анализ, граф вызовов и зависимостей.

Конкуренция не в скорости — а в способности видеть то, что другие инструменты не могут.

Чем отличается

Существующие линтеры (ESLint, Biome, oxlint) работают на уровне AST-паттернов. Этого достаточно для стилистических проверок, но принципиально недостаточно для обнаружения проблем, требующих понимания потока данных и межпроцедурного контекста.

Этот проект строит полный граф программы и даёт правилам доступ ко всем уровням одновременно.

Архитектура

  Wrapper        — политика: что показывать пользователю
     ↑ факты + флаги достоверности
  Ring 1         — анализ: alias-analysis, query engine, правила
     ↑ структурный артефакт
  Ring 0         — парсер: AST, IR, CFG, DFG, граф вызовов
  • Ring 0 — «тупой парсер». Строит граф, помечает достоверность, не знает о правилах. Результат — переносимый артефакт (можно передать через git).
  • Ring 1 — анализ. Summary-based alias analysis через CFL-reachability, fused pull-push execution, demand-driven дорогие анализы.
  • Wrapper — конфигурация и решение о репортинге.

Реализация на Rust. Правила пишутся на JS, компилируются в Rule IR.

Статус

Стадия архитектурного дизайна. Полный RFC: RFC.md

About

Линтер с базой заложенной во время работы в Astramanga

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors