Cargo Marker
cargo_marker is the CLI tool for Marker, an experimental linting interface for Rust. It seamlessly integrates with the Rust compiler to provide custom linting capabilities for your Rust projects.
Note
Marker is in the early stages of development, some things are still missing and the API is still unstable.
A list of limitations and planned features can be found in Marker's Readme.
Key Features
- Simple CLI: cargo_marker does all the heavy lifting for you, making custom code analysis, as simple as a single console command.
- Seamless Integration: cargo_marker reuses Rust's existing infrastructure for linting, running Marker as part of your workflow is close to the effort needed for its sibling Clippy.
- Automatic Lint-Crate Compilation: cargo_marker automatically fetches and builds specified lint crates, streamlining the process of incorporating additional linting rules into your project.
- User-Friendly Setup: cargo_marker can automatically set up the driver and toolchain, allowing you to focus on writing quality code. (This version will setup rustc's driver for
nightly-2023-07-13)
Usage
The following is an abbreviated guide. Check out The Marker Book for detailed instructions and additional information.
Installation
# Automatically setup the toolchain and driver
Specifying lints
Marker requires lint crates to be specified. The best way is to add them to the Cargo.toml file, like this:
[]
# A local crate as a path
= { = './marker_lints' }
# An external crate via git
= { = "https://github.com/rust-marker/marker" }
# An external crate from a registry
= "0.2.1"
Running Marker
Running Marker is as simple as running its sibling Clippy. Navigate to your Rust project directory and run the following command:
This will initialize Marker, compile the lint crates and start linting.
Contributing
Contributions are highly appreciated! If you encounter any issues or have suggestions for improvements, please check out Marker's GitHub repository.
License
Copyright (c) 2022-2023 Rust-Marker
Rust-marker is distributed under the terms of the MIT license or the Apache License (Version 2.0).
See LICENSE-APACHE, LICENSE-MIT.