Syntax-based linting with tree-sitter queries.
This crate provides:
- Rule loading from multiple sources (builtins, user global, project)
- Rule execution with combined query optimization
- Pluggable data sources for rule conditionals
Rule File Format
# ---
# id = "no-unwrap"
# severity = "warning"
# message = "Avoid unwrap on user input"
# allow = ["**/tests/**"]
# files = ["**/lib.rs", "**/mod.rs"]
# requires = { "rust.edition" = ">=2024" }
# enabled = true # set to false to disable a builtin
# fix = "" # empty = delete match, or use "$capture" to substitute
# ---
@match