diff options
| -rw-r--r-- | Cargo.lock | 104 | ||||
| -rw-r--r-- | Cargo.toml | 14 | ||||
| -rw-r--r-- | bin/Cargo.toml | 8 | ||||
| -rw-r--r-- | bin/src/main.rs (renamed from src/main.rs) | 0 | ||||
| -rw-r--r-- | lib/Cargo.toml | 8 | ||||
| -rw-r--r-- | lib/src/lib.rs | 7 | ||||
| -rw-r--r-- | macros/Cargo.toml | 8 | ||||
| -rw-r--r-- | macros/src/lib.rs | 7 | ||||
| -rw-r--r-- | readme.md | 35 |
9 files changed, 79 insertions, 112 deletions
diff --git a/Cargo.lock b/Cargo.lock deleted file mode 100644 index f09d0c9..0000000 --- a/Cargo.lock +++ /dev/null | |||
| @@ -1,104 +0,0 @@ | |||
| 1 | # This file is automatically @generated by Cargo. | ||
| 2 | # It is not intended for manual editing. | ||
| 3 | version = 3 | ||
| 4 | |||
| 5 | [[package]] | ||
| 6 | name = "anyhow" | ||
| 7 | version = "1.0.43" | ||
| 8 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 9 | checksum = "28ae2b3dec75a406790005a200b1bd89785afc02517a00ca99ecfe093ee9e6cf" | ||
| 10 | |||
| 11 | [[package]] | ||
| 12 | name = "autocfg" | ||
| 13 | version = "1.0.1" | ||
| 14 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 15 | checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" | ||
| 16 | |||
| 17 | [[package]] | ||
| 18 | name = "cbitset" | ||
| 19 | version = "0.2.0" | ||
| 20 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 21 | checksum = "29b6ad25ae296159fb0da12b970b2fe179b234584d7cd294c891e2bbb284466b" | ||
| 22 | dependencies = [ | ||
| 23 | "num-traits", | ||
| 24 | ] | ||
| 25 | |||
| 26 | [[package]] | ||
| 27 | name = "countme" | ||
| 28 | version = "2.0.4" | ||
| 29 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 30 | checksum = "328b822bdcba4d4e402be8d9adb6eebf269f969f8eadef977a553ff3c4fbcb58" | ||
| 31 | |||
| 32 | [[package]] | ||
| 33 | name = "hashbrown" | ||
| 34 | version = "0.9.1" | ||
| 35 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 36 | checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" | ||
| 37 | |||
| 38 | [[package]] | ||
| 39 | name = "memoffset" | ||
| 40 | version = "0.6.4" | ||
| 41 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 42 | checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" | ||
| 43 | dependencies = [ | ||
| 44 | "autocfg", | ||
| 45 | ] | ||
| 46 | |||
| 47 | [[package]] | ||
| 48 | name = "nix-analyzer" | ||
| 49 | version = "0.1.0" | ||
| 50 | dependencies = [ | ||
| 51 | "anyhow", | ||
| 52 | "rnix", | ||
| 53 | ] | ||
| 54 | |||
| 55 | [[package]] | ||
| 56 | name = "num-traits" | ||
| 57 | version = "0.2.14" | ||
| 58 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 59 | checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" | ||
| 60 | dependencies = [ | ||
| 61 | "autocfg", | ||
| 62 | ] | ||
| 63 | |||
| 64 | [[package]] | ||
| 65 | name = "rnix" | ||
| 66 | version = "0.9.0" | ||
| 67 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 68 | checksum = "1b37f8af07a0354606141df076458660af7e22238e4117a041c21c548080addd" | ||
| 69 | dependencies = [ | ||
| 70 | "cbitset", | ||
| 71 | "rowan", | ||
| 72 | "smol_str", | ||
| 73 | ] | ||
| 74 | |||
| 75 | [[package]] | ||
| 76 | name = "rowan" | ||
| 77 | version = "0.12.6" | ||
| 78 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 79 | checksum = "a1b36e449f3702f3b0c821411db1cbdf30fb451726a9456dce5dabcd44420043" | ||
| 80 | dependencies = [ | ||
| 81 | "countme", | ||
| 82 | "hashbrown", | ||
| 83 | "memoffset", | ||
| 84 | "rustc-hash", | ||
| 85 | "text-size", | ||
| 86 | ] | ||
| 87 | |||
| 88 | [[package]] | ||
| 89 | name = "rustc-hash" | ||
| 90 | version = "1.1.0" | ||
| 91 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 92 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" | ||
| 93 | |||
| 94 | [[package]] | ||
| 95 | name = "smol_str" | ||
| 96 | version = "0.1.18" | ||
| 97 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 98 | checksum = "b203e79e90905594272c1c97c7af701533d42adaab0beb3859018e477d54a3b0" | ||
| 99 | |||
| 100 | [[package]] | ||
| 101 | name = "text-size" | ||
| 102 | version = "1.1.0" | ||
| 103 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 104 | checksum = "288cb548dbe72b652243ea797201f3d481a0609a967980fcc5b2315ea811560a" | ||
| @@ -1,10 +1,8 @@ | |||
| 1 | [package] | 1 | [workspace] |
| 2 | name = "nix-analyzer" | ||
| 3 | version = "0.1.0" | ||
| 4 | edition = "2018" | ||
| 5 | 2 | ||
| 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | 3 | members = [ |
| 4 | "bin", | ||
| 5 | "lib", | ||
| 6 | "macros" | ||
| 7 | ] | ||
| 7 | 8 | ||
| 8 | [dependencies] | ||
| 9 | anyhow = "1.0" | ||
| 10 | rnix = "0.9.0" | ||
diff --git a/bin/Cargo.toml b/bin/Cargo.toml new file mode 100644 index 0000000..57cff11 --- /dev/null +++ b/bin/Cargo.toml | |||
| @@ -0,0 +1,8 @@ | |||
| 1 | [package] | ||
| 2 | name = "bin" | ||
| 3 | version = "0.1.0" | ||
| 4 | edition = "2018" | ||
| 5 | |||
| 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | ||
| 7 | |||
| 8 | [dependencies] | ||
diff --git a/src/main.rs b/bin/src/main.rs index e7a11a9..e7a11a9 100644 --- a/src/main.rs +++ b/bin/src/main.rs | |||
diff --git a/lib/Cargo.toml b/lib/Cargo.toml new file mode 100644 index 0000000..49e2e49 --- /dev/null +++ b/lib/Cargo.toml | |||
| @@ -0,0 +1,8 @@ | |||
| 1 | [package] | ||
| 2 | name = "lib" | ||
| 3 | version = "0.1.0" | ||
| 4 | edition = "2018" | ||
| 5 | |||
| 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | ||
| 7 | |||
| 8 | [dependencies] | ||
diff --git a/lib/src/lib.rs b/lib/src/lib.rs new file mode 100644 index 0000000..31e1bb2 --- /dev/null +++ b/lib/src/lib.rs | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | #[cfg(test)] | ||
| 2 | mod tests { | ||
| 3 | #[test] | ||
| 4 | fn it_works() { | ||
| 5 | assert_eq!(2 + 2, 4); | ||
| 6 | } | ||
| 7 | } | ||
diff --git a/macros/Cargo.toml b/macros/Cargo.toml new file mode 100644 index 0000000..6a47e03 --- /dev/null +++ b/macros/Cargo.toml | |||
| @@ -0,0 +1,8 @@ | |||
| 1 | [package] | ||
| 2 | name = "macros" | ||
| 3 | version = "0.1.0" | ||
| 4 | edition = "2018" | ||
| 5 | |||
| 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | ||
| 7 | |||
| 8 | [dependencies] | ||
diff --git a/macros/src/lib.rs b/macros/src/lib.rs new file mode 100644 index 0000000..31e1bb2 --- /dev/null +++ b/macros/src/lib.rs | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | #[cfg(test)] | ||
| 2 | mod tests { | ||
| 3 | #[test] | ||
| 4 | fn it_works() { | ||
| 5 | assert_eq!(2 + 2, 4); | ||
| 6 | } | ||
| 7 | } | ||
diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..9a9e0ca --- /dev/null +++ b/readme.md | |||
| @@ -0,0 +1,35 @@ | |||
| 1 | ## nix-analyzer | ||
| 2 | |||
| 3 | `nix-analyzer` intends to be a static analysis tool for the | ||
| 4 | Nix programming language. | ||
| 5 | |||
| 6 | For the time-being, `nix-analyzer` works only with ASTs | ||
| 7 | produced by the `rnix-parser` crate and does not evaluate | ||
| 8 | any nix code. | ||
| 9 | |||
| 10 | ## Architecture | ||
| 11 | |||
| 12 | `nix-analyzer` has the following components: | ||
| 13 | |||
| 14 | - `bin`: the CLI/entrypoint | ||
| 15 | - `lib`: library of lints and utilities to define these | ||
| 16 | lints | ||
| 17 | - `macros`: procedural macros to help define a lint | ||
| 18 | |||
| 19 | ### `bin` | ||
| 20 | |||
| 21 | This is the main point of interaction between `nix-analyzer` | ||
| 22 | and the end user. It's output is human-readable and should | ||
| 23 | also support JSON/errorfmt outputs for external tools to | ||
| 24 | use. | ||
| 25 | |||
| 26 | ### `lib` | ||
| 27 | |||
| 28 | A library of AST-based lints and utilities to help write | ||
| 29 | those lints. It should be easy for newcomers to write lints | ||
| 30 | without being familiar with the rest of the codebase. | ||
| 31 | |||
| 32 | ### `macros` | ||
| 33 | |||
| 34 | This crate intends to be a helper layer to declare lints and | ||
| 35 | their metadata. | ||
