[package] name = "nyx-scanner" version = "0.5.0" edition = "2024" rust-version = "1.88" description = "A multi-language static analysis tool for detecting security vulnerabilities" license = "GPL-3.0-or-later" authors = ["Eli Peter "] homepage = "https://github.com/elicpeter/nyx" repository = "https://github.com/elicpeter/nyx" documentation = "https://github.com/elicpeter/nyx/tree/master/docs" keywords = ["security", "vulnerability", "scanner", "static-analysis", "cli"] categories = ["security", "command-line-utilities", "development-tools", "parser-implementations", "text-processing"] readme = "README.md" default-run = "nyx" exclude = [ "assets/", "frontend/node_modules/", ".github/", "CLAUDE.md", ".claude/", ".idea/", "tests/", "benches/", "docs/", ".DS_Store", ".nyx/", ".z3-trace", "target/", "book/", ] autoexamples = false [features] default = ["serve"] serve = ["dep:axum", "dep:tokio", "dep:tokio-stream", "dep:tower-http"] smt = ["dep:z3", "z3/bundled"] smt-system-z3 = ["dep:z3"] # Build switch for the internal `nyx-docgen` tool. Empty on purpose: it # only gates the [[bin]] target so consumers of `cargo install nyx-scanner` # don't pick up the docgen binary. Maintainers run it via # `cargo run --features docgen --bin nyx-docgen`. docgen = [] [lib] name = "nyx_scanner" path = "src/lib.rs" [[bin]] name = "nyx" path = "src/main.rs" [[bin]] name = "nyx-docgen" path = "tools/docgen/main.rs" required-features = ["docgen"] [[bench]] name = "scan_bench" harness = false [dev-dependencies] tempfile = "3.26.0" criterion = { version = "0.8", features = ["html_reports"] } assert_cmd = "2" predicates = "3" glob = "0.3" tower = { version = "0.5", features = ["util"] } [dependencies] directories = "6.0.0" clap = { version = "4.5.60", features = ["derive"] } serde = { version = "1.0.228", features = ["derive"] } serde_json = "1.0" toml = "1.0.3" tracing-subscriber = { version = "0.3.22", features = ["env-filter", "json", "ansi","time"] } tracing = "0.1.44" num_cpus = "1.17.0" rusqlite = { version = "0.39.0", features = ["bundled"] } r2d2_sqlite = { version = "0.33.0", features = ["bundled"] } ignore = "0.4.25" tree-sitter = "0.26.6" tree-sitter-rust = "0.24.0" tree-sitter-c = "0.24.1" tree-sitter-cpp = "0.23.4" tree-sitter-java = "0.23.5" tree-sitter-typescript = "0.23.2" tree-sitter-javascript = "0.25.0" tree-sitter-go = "0.25.0" tree-sitter-php = "0.24.2" tree-sitter-python = "0.25.0" tree-sitter-ruby = "0.23.1" crossbeam-channel = "0.5.15" blake3 = "1.8.3" once_cell = "1.21.3" console = "0.16.2" terminal_size = "0.4" rayon = "1.11.0" r2d2 = "0.8.10" bytesize = "2.3.1" chrono = { version = "0.4.44", default-features = false, features = ["std", "clock", "serde"] } thiserror = "2.0.18" dashmap = "6.1.0" parking_lot = "0.12" petgraph = { version = "0.8.3", features = ["serde-1"] } bitflags = "2.11.0" phf = { version = "0.13.1", features = ["macros"] } indicatif = "0.18.4" smallvec = { version = "1.15", features = ["serde"] } uuid = { version = "1", features = ["v4"] } axum = { version = "0.8", optional = true } tokio = { version = "1", features = ["rt-multi-thread", "macros", "signal", "sync"], optional = true } tokio-stream = { version = "0.1", features = ["sync"], optional = true } tower-http = { version = "0.6", features = ["cors", "compression-gzip", "trace", "set-header", "limit"], optional = true } z3 = { version = "0.20.0", optional = true} [profile.release] lto = true codegen-units = 1 debug = 1 strip = "none"