aboutsummaryrefslogtreecommitdiff
path: root/docs/architecture.txt
blob: fb2d724be5728de99b4b77da923e24706a58e666 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
architecture
============

statix has the following components:
  * bin: the CLI/entrypoint
  * lib: library of lints and utilities to define these lints
  * vfs: virtual filesystem
  * macros: procedural macros to help define a lint


bin
---

This is the main point of interaction between `statix` and
the end user. It's output is human-readable and should also
support JSON/errorfmt outputs for external tools to use.


lib
---

A library of AST-based lints and utilities to help write
those lints. It should be easy for newcomers to write lints
without being familiar with the rest of the codebase.


vfs
---

VFS is an in-memory filesystem. It provides cheap-to-copy
handles (`FileId`s) to access paths and file contents.


macros
------

This crate intends to be a helper layer to declare lints and
their metadata.