Repository Analysis

ratatui/ratatui

A Rust crate for cooking up terminal user interfaces (TUIs) 👨‍🍳🐀 https://ratatui.rs

16.7 Moderate AI signal View on GitHub
16.7
Adjusted Score
16.7
Raw Score
100%
Time Factor
2026-05-30
Last Push
20,761
Stars
Rust
Language
97,502
Lines of Code
362
Files
1236
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 0MEDIUM 197LOW 1039

Pattern Findings

1236 matches across 7 categories. Click a row to expand file-level details.

Over-Commented Block1029 hits · 907 pts
SeverityFileLineSnippet
LOWratatui-termion/src/lib.rs1// show the feature flags in the generated documentation
LOWratatui-termion/src/lib.rs21//! This crate provides the [Termion] backend implementation for Ratatui.
LOWratatui-termion/src/lib.rs61/// This is done by calling [`IntoRawMode::into_raw_mode()`] and
LOWratatui-termion/src/lib.rs81/// let writer = stderr().into_raw_mode()?.into_alternate_screen()?;
LOWratatui-termion/src/lib.rs101 writer: W,
LOWratatui/Cargo.toml21rustdoc-args = ["--cfg", "docsrs"]
LOWratatui/Cargo.toml101## Enable all unstable features.
LOWratatui/tests/state_serde.rs1//! State like [`ListState`], [`TableState`] and [`ScrollbarState`] can be serialized and
LOWratatui/src/lib.rs1#![no_std]
LOWratatui/src/lib.rs21//! </div>
LOWratatui/src/lib.rs41//! fn main() -> std::io::Result<()> {
LOWratatui/src/lib.rs61//! Most application authors should start with one of these entry points:
LOWratatui/src/lib.rs81//! contracts
LOWratatui/src/lib.rs101//! You can also watch the [FOSDEM 2024 talk] about Ratatui which gives a brief introduction to
LOWratatui/src/lib.rs121//!
LOWratatui/src/lib.rs141//!
LOWratatui/src/lib.rs161//! break Ok(());
LOWratatui/src/lib.rs181//! let mut terminal = ratatui::init();
LOWratatui/src/lib.rs201//! for the full chooser including `try_*` and `*_with_options`.
LOWratatui/src/lib.rs221//! are drawn to the terminal. See the [Widgets] section of the [Ratatui Website] and the [Widget
LOWratatui/src/lib.rs241//! let text = Paragraph::new("Hello World!");
LOWratatui/src/lib.rs261//! [`Terminal`] cursor methods can be overwritten by the next render pass if that pass sets
LOWratatui/src/lib.rs281//! // handle other key events
LOWratatui/src/lib.rs301//! use ratatui::layout::{Constraint, Layout};
LOWratatui/src/lib.rs321//! ```text
LOWratatui/src/lib.rs341//! ```rust,no_run
LOWratatui/src/lib.rs361//! ]);
LOWratatui/src/lib.rs381//! [Installation]: https://ratatui.rs/installation/
LOWratatui/src/lib.rs401//! [Styling Recipes]: https://ratatui.rs/recipes/render/
LOWratatui/src/lib.rs421//! [`style` module]: style
LOWratatui/src/lib.rs441//! [Crate Badge]: https://img.shields.io/crates/v/ratatui?logo=rust&style=flat-square&logoColor=E05D44&color=E05D44
LOWratatui/src/lib.rs461//! [`ratatui-termwiz`]: https://crates.io/crates/ratatui-termwiz
LOWratatui/src/init.rs1//! Terminal initialization and restoration functions.
LOWratatui/src/init.rs21//!
LOWratatui/src/init.rs41//! - [`DefaultTerminal`] - A type alias for `Terminal<CrosstermBackend<Stdout>>`, providing a
LOWratatui/src/init.rs61//! - [`try_restore`] - Same as [`restore`] but returns a `Result` instead of printing errors.
LOWratatui/src/init.rs81//!
LOWratatui/src/init.rs101//! _ => {}
LOWratatui/src/init.rs121//! ```
LOWratatui/src/init.rs141//! loop {
LOWratatui/src/init.rs161//! let mut terminal = ratatui::try_init_with_options(options)?;
LOWratatui/src/init.rs181//!
LOWratatui/src/init.rs201use ratatui_core::terminal::{Terminal, TerminalOptions};
LOWratatui/src/init.rs221/// This function is a convenience wrapper around [`init`] and [`restore`], and is useful for simple
LOWratatui/src/init.rs241/// }
LOWratatui/src/init.rs261/// terminal.draw(|frame| frame.render_widget(format!("{GREETING}"), frame.area()))?;
LOWratatui/src/init.rs281/// }
LOWratatui/src/init.rs301/// Ok(())
LOWratatui/src/init.rs321{
LOWratatui/src/init.rs341///
LOWratatui/src/init.rs361///
LOWratatui/src/init.rs381/// Ensure that this method is called *after* your app installs any other panic hooks to ensure the
LOWratatui/src/init.rs401 let backend = CrosstermBackend::new(stdout());
LOWratatui/src/init.rs421///
LOWratatui/src/init.rs441/// ```rust,no_run
LOWratatui/src/init.rs461/// - Raw mode is enabled
LOWratatui/src/init.rs481/// # Examples
LOWratatui/src/init.rs501/// This function should be called before the program exits to ensure that the terminal is
LOWratatui/src/init.rs521/// ```rust,no_run
LOWratatui/src/init.rs541/// Use [`restore`] instead of this function when you don't need to handle the error yourself, as
969 more matches not shown…
Decorative Section Separators190 hits · 690 pts
SeverityFileLineSnippet
MEDIUMratatui/src/lib.rs322//! Title Bar───────────────────────────────────
MEDIUMratatui/src/lib.rs323//! ┌Left────────────────┐┌Right───────────────┐
MEDIUMratatui/src/lib.rs325//! └────────────────────┘└────────────────────┘
MEDIUMratatui/src/lib.rs326//! Status Bar──────────────────────────────────
MEDIUMexamples/apps/constraint-explorer/src/main.rs62/// ┌──────────────┐
MEDIUMexamples/apps/constraint-explorer/src/main.rs65/// └──────────────┘
MEDIUMratatui-core/src/layout.rs25//! ┌─────────────→
MEDIUMratatui-core/src/layout/layout.rs833 // <───────────────────────────────────area_size──────────────────────────────────>
MEDIUMratatui-core/src/layout/layout.rs836 // ┌────┬───────────────────┬────┬─────variables─────┬────┬───────────────────┬────┐
MEDIUMratatui-core/src/layout/layout.rs839 // ┌ ┐┌──────────────────┐┌ ┐┌──────────────────┐┌ ┐┌──────────────────┐┌ ┐
MEDIUMratatui-core/src/layout/layout.rs841 // └ ┘└──────────────────┘└ ┘└──────────────────┘└ ┘└──────────────────┘└ ┘
MEDIUMratatui-core/src/layout/layout.rs844 // └─┬──┶━━━━━━━━━┳━━━━━━━━━┵─┬──┶━━━━━━━━━┳━━━━━━━━━┵─┬──┶━━━━━━━━━┳━━━━━━━━━┵─┬──┘
MEDIUMratatui-core/src/layout/layout.rs846 // └────────────╂───────────┴────────────╂───────────┴────────────╂──Spacers──┘
MEDIUMratatui-core/src/layout/layout.rs848 // ┗━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━Segments━━━━━━━━┛
MEDIUMratatui-core/src/layout/layout.rs931 // ┌────┬───────────────────┬────┬─────variables─────┬────┬───────────────────┬────┐
MEDIUMratatui-core/src/layout/layout.rs934 // ┌ ┐┌──────────────────┐┌ ┐┌──────────────────┐┌ ┐┌──────────────────┐┌ ┐
MEDIUMratatui-core/src/layout/layout.rs936 // └ ┘└──────────────────┘└ ┘└──────────────────┘└ ┘└──────────────────┘└ ┘
MEDIUMratatui-core/src/layout/layout.rs1111/// ┌──────┐┌──────┐
MEDIUMratatui-core/src/layout/layout.rs1113/// └──────┘└──────┘
MEDIUMratatui-core/src/layout/layout.rs1116/// ┌──────┐┌────────────┐
MEDIUMratatui-core/src/layout/layout.rs1118/// └──────┘└────────────┘
MEDIUMratatui-core/src/layout/layout.rs1298 /// ┌────────┐
MEDIUMratatui-core/src/layout/layout.rs1300 /// └────────┘
MEDIUMratatui-core/src/layout/layout.rs1305 /// ┌────────┐
MEDIUMratatui-core/src/layout/layout.rs1307 /// └────────┘
MEDIUMratatui-core/src/layout/layout.rs1312 /// ┌───────────┐
MEDIUMratatui-core/src/layout/layout.rs1314 /// └───────────┘
MEDIUMratatui-core/src/layout/layout.rs1319 /// ┌───────────────┐
MEDIUMratatui-core/src/layout/layout.rs1321 /// └───────────────┘
MEDIUMratatui-core/src/layout/layout.rs1326 /// ┌────────────┐
MEDIUMratatui-core/src/layout/layout.rs1328 /// └────────────┘
MEDIUMratatui-core/src/layout/layout.rs1333 /// ┌────────┐
MEDIUMratatui-core/src/layout/layout.rs1335 /// └────────┘
MEDIUMratatui-core/src/layout/layout.rs1340 /// ┌────────┐
MEDIUMratatui-core/src/layout/layout.rs1342 /// └────────┘
MEDIUMratatui-core/src/layout/layout.rs1347 /// ┌─────────────────────┐
MEDIUMratatui-core/src/layout/layout.rs1349 /// └─────────────────────┘
MEDIUMratatui-core/src/layout/layout.rs1354 /// ┌────────────┐
MEDIUMratatui-core/src/layout/layout.rs1356 /// └────────────┘
MEDIUMratatui-core/src/layout/layout.rs30// ┌ ┐┌──────────────────┐┌ ┐┌──────────────────┐┌ ┐┌──────────────────┐┌ ┐
MEDIUMratatui-core/src/layout/layout.rs32// └ ┘└──────────────────┘└ ┘└──────────────────┘└ ┘└──────────────────┘└ ┘
MEDIUMratatui-core/src/layout/layout.rs1368 /// ┌───────┐
MEDIUMratatui-core/src/layout/layout.rs1370 /// └───────┘
MEDIUMratatui-core/src/layout/constraint.rs82 /// ┌────────────────────────────┐┌──────────────────┐
MEDIUMratatui-core/src/layout/constraint.rs84 /// └────────────────────────────┘└──────────────────┘
MEDIUMratatui-core/src/layout/constraint.rs90 /// ┌──────────────────────────────────────┐┌────────┐
MEDIUMratatui-core/src/layout/constraint.rs92 /// └──────────────────────────────────────┘└────────┘
MEDIUMratatui-core/src/layout/constraint.rs105 /// ┌────────────────────────────┐┌──────────────────┐
MEDIUMratatui-core/src/layout/constraint.rs107 /// └────────────────────────────┘└──────────────────┘
MEDIUMratatui-core/src/layout/constraint.rs113 /// ┌──────────────────────────────────────┐┌────────┐
MEDIUMratatui-core/src/layout/constraint.rs115 /// └──────────────────────────────────────┘└────────┘
MEDIUMratatui-core/src/layout/constraint.rs128 /// ┌──────────────────┐┌──────────────────┐
MEDIUMratatui-core/src/layout/constraint.rs130 /// └──────────────────┘└──────────────────┘
MEDIUMratatui-core/src/layout/constraint.rs136 /// ┌──────────────────┐┌────────────────────────────┐
MEDIUMratatui-core/src/layout/constraint.rs138 /// └──────────────────┘└────────────────────────────┘
MEDIUMratatui-core/src/layout/constraint.rs156 /// ┌────────────────────────────────────┐┌──────────┐
MEDIUMratatui-core/src/layout/constraint.rs158 /// └────────────────────────────────────┘└──────────┘
MEDIUMratatui-core/src/layout/constraint.rs164 /// ┌───────────────────────┐┌───────────────────────┐
MEDIUMratatui-core/src/layout/constraint.rs166 /// └───────────────────────┘└───────────────────────┘
MEDIUMratatui-core/src/layout/constraint.rs180 /// ┌───────────────────────┐┌───────────────────────┐
130 more matches not shown…
AI Slop Vocabulary5 hits · 15 pts
SeverityFileLineSnippet
MEDIUM…mples/concepts/state/src/bin/nested-stateful-widget.rs5//! and want to leverage the benefits of the StatefulWidget pattern at multiple levels.
MEDIUM.github/workflows/ci.yml25# without having to wait for the comprehensive matrix of tests to complete.
MEDIUMratatui-core/src/backend.rs70//! This creates a seamless transition between the application and the regular terminal session, as
MEDIUMratatui-widgets/src/clear.rs27/// For a more complete example how to utilize `Clear` to realize popups see
MEDIUMratatui-widgets/src/block.rs205/// - [Collapse borders recipe] - Techniques for creating seamless layouts (on the ratatui website)
Fake / Example Data7 hits · 7 pts
SeverityFileLineSnippet
LOWexamples/apps/popup/src/main.rs59 let paragraph = Paragraph::new("Lorem ipsum").block(popup_block);
LOWratatui-widgets/examples/scrollbar.rs109 Line::from_iter(["Lorem ipsum dolor sit amet, consectetur adipiscing elit.".repeat(10)]),
LOWratatui-widgets/examples/scrollbar.rs109 Line::from_iter(["Lorem ipsum dolor sit amet, consectetur adipiscing elit.".repeat(10)]),
LOWratatui-widgets/examples/shadow.rs124 let sentence = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore
LOWratatui-widgets/examples/shadow.rs124 let sentence = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore
LOWratatui-widgets/src/paragraph.rs1325 let paragraph = Paragraph::new("Lorem ipsum");
LOWratatui-widgets/src/paragraph.rs1334 let paragraph = Paragraph::new("Lorem ipsum");
Slop Phrases2 hits · 4 pts
SeverityFileLineSnippet
LOWexamples/apps/todo-list/src/main.rs80 "Minnak loves to be pet by you! Don't forget to pet and give some treats!",
MEDIUMratatui-core/src/layout.rs82//! Here's a simple example of creating a basic layout using the [`Layout`] struct:
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippet
LOW.github/workflows/check-pr.yml65 # Check if pattern matches
LOW.github/workflows/ci.yml198 # Check if README.md is up-to-date with the crate's documentation.
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippet
MEDIUM.github/workflows/release-plz.yml44 # Create a PR with the new versions and changelog, preparing the next release.