Analysis tools logo

32 Rust Static Analysis Tools

Type:
Any

What is Rust?

Rust is a multi-paradigm programming language focused on performance and safety, especially safe concurrency. Rust is syntactically similar to C++, and provides memory safety without using garbage collection.

Rust was originally designed by Graydon Hoare at Mozilla Research, with contributions from Dave Herman, Brendan Eich, and others. The designers refined the language while writing the Servo layout or browser engine, and the Rust compiler. It has gained increasing use in industry, and…

(More info)

What are the best Rust analysis tools?

97

Mega-Linter

  • Type: cli
335

Mega-Linter can handle any type of project thanks to its 70+ embedded Linters, its advanced reporting, runnable on any CI system or locally, with assisted installation and configuration, able to apply formatting and fixes

34

clippy

  • Type: cli
6463

A code linter to catch common mistakes and improve your Rust code.

15

cargo-audit

  • Type: cli
883

Audit Cargo.lock for crates with security vulnerabilities reported to the [RustSec Advisory Database](https://github.com/RustSec/advisory-db/).

12

rust-analyzer

  • Type: ide-plugin
7496

Supports functionality such as 'goto definition', type inference, symbol search, reformatting, and code completion, and enables renaming and refactorings.

5

rustfmt

  • Type: cli
3929

A tool for formatting Rust code according to style guidelines.

3

cargo-spellcheck

  • Type: cli
210

Checks all your documentation for spelling and grammar mistakes with hunspell (ready) and languagetool (preview)

3

cargo-bloat

  • Type: cli
1195

Find out what takes most of the space in your executable. supports ELF (Linux, BSD), Mach-O (macOS) and PE (Windows) binaries.

3

cargo udeps

  • Type: cli
585

Find unused dependencies in Cargo.toml. It either prints out a "unused crates" line listing the crates, or it prints out a line saying that no crates were unused.

3

Rust Language Server

  • Type: ide-plugin
3393

Supports functionality such as 'goto definition', symbol search, reformatting, and code completion, and enables renaming and refactorings.

2

cargo-expand

  • Type: cli
1130

Cargo subcommand to show result of macro expansion and #[derive] expansion applied to the current crate. This is a wrapper around a more verbose compiler command.

2

cargo-inspect

  • Type: cli
320

Inspect Rust code without syntactic sugar to see what the compiler does behind the curtains.

2

MIRAI

  • Type: cli
576

And abstract interpreter operating on Rust's mid-level intermediate language, and providing warnings based on taint analysis.

2

todocheck

  • Type: cli
357

Linter for integrating annotated TODOs with your issue trackers

2

trivy

  • Type: cli
8846

A Simple and Comprehensive Vulnerability Scanner for Containers and other Artifacts, Suitable for CI. Trivy detects vulnerabilities of OS packages (Alpine, RHEL, CentOS, etc.) and application dependencies (Bundler, Composer, npm, yarn, etc.). Checks containers and filesystems.

1

C2Rust

  • Type: cli
2040

C2Rust helps you migrate C99-compliant code to Rust. The translator (or transpiler) produces unsafe Rust code that closely mirrors the input C code.

1

cargo-deny

  • Type: cli
656

A cargo plugin for linting your dependencies. It can be used either as a command line too, a Rust crate, or a Github action for CI. It checks for valid license information, duplicate crates, security vulnerabilities, and more.

1

dylint

  • Type: cli
85

A tool for running Rust lints from dynamic libraries. Dylint makes it easy for developers to maintain their own personal lint collections.

1

electrolysis

  • Type: cli
271

A tool for formally verifying Rust programs by transpiling them into definitions in the Lean theorem prover.

1

rustfix

  • Type: cli
656

Read and apply the suggestions made by rustc (and third-party lints, like those offered by clippy).

1

RustViz

  • Type: cli
1867

RustViz is a tool that generates visualizations from simple Rust programs to assist users in better understanding the Rust Lifetime and Borrowing mechanism. It generates SVG files with graphical indicators that integrate with mdbook to render visualizations of data-flow in Rust programs.

1

Sonatype

  • Type: service

Reports known vulnerabilities in common dependencies and recommends updated packages to minimize breaking changes

0

herbie

  • Type: cli
173

Adds warnings or errors to your crate when using a numerically unstable floating point expression.

0

linter-rust

  • Type: cli
44

Linting your Rust-files in Atom, using rustc and cargo.

0

lizard

  • Type: cli
1222

Lizard is an extensible Cyclomatic Complexity Analyzer for many programming languages including C/C++ (doesn't require all the header files or Java imports). It also does copy-paste detection (code clone detection/code duplicate detection) and many other forms of static code analysis. Counts lines of code without comments, CCN (cyclomatic complexity number), token count of functions, parameter count of functions.

0

prae

  • Type: cli
36

Provides a convenient macro that allows you to generate type wrappers that promise to always uphold arbitrary invariants that you specified.

0

Prusti

  • Type: cli
450

A static verifier for Rust, based on the Viper verification infrastructure. By default Prusti verifies absence of panics by proving that statements such as unreachable!() and panic!() are unreachable.

0

Rudra

  • Type: cli
673

Rust Memory Safety & Undefined Behavior Detection. It is capable of analyzing single Rust packages as well as all the packages on crates.io.

0

rust-audit

  • Type: cli
128

Audit Rust binaries for known bugs or security vulnerabilities. This works by embedding data about the dependency tree (Cargo.lock) in JSON format into a dedicated linker section of the compiled executable.

0

warnalyzer

  • Type: cli
60

Show unused code from multi-crate Rust projects

-2

ShiftLeft Scan

  • Type: cli
  • Type: service
362

Scan is a free open-source DevSecOps platform for detecting security issues in source code and dependencies. It supports a broad range of languages and CI/CD pipelines.

Deprecated/unmaintained tools

0

Corrode

  • Type: cli
2078

Semi-automatic translation from C to Rust. Could reveal bugs in the original implementation by showing Rust compiler warnings and errors. Superseded by C2Rust.

0

pfff

  • Type: cli
141

Facebook's tools for code analysis, visualizations, or style-preserving source transformation for many languages.

❤️ Sponsor this project

We are currently looking for partners who want to sponsor hosting and development of the project.

Check out our Github Sponsors page here

Missing an entry? Please let us know.