aboutsummaryrefslogtreecommitdiff
path: root/readme.md
blob: 9a9e0cab988c946f404488a31df5ba0123727db3 (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
## nix-analyzer

`nix-analyzer` intends to be a static analysis tool for the
Nix programming language.

For the time-being, `nix-analyzer` works only with ASTs
produced by the `rnix-parser` crate and does not evaluate
any nix code. 

## Architecture

`nix-analyzer` has the following components:

- `bin`: the CLI/entrypoint
- `lib`: library of lints and utilities to define these
  lints
- `macros`: procedural macros to help define a lint

### `bin`

This is the main point of interaction between `nix-analyzer`
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.

### `macros`

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