Skip to main content

BaselineStaleness

Struct BaselineStaleness 

Source
pub struct BaselineStaleness {
    pub entries: usize,
    pub matched: usize,
    pub current_findings: usize,
    pub change_scoped: bool,
}
Expand description

One run’s view of a loaded baseline: everything needed to decide whether the baseline still describes the project.

Every command that accepts --baseline builds one of these and asks it the same two questions, so dead-code, dupes and health cannot answer “is this baseline stale enough to say something” three different ways.

Fields§

§entries: usize

Entries saved in the baseline file.

§matched: usize

Baseline entries that matched something in this run.

§current_findings: usize

Findings this run produced before the baseline filtered them. Zero means there was nothing to compare, either because the project is clean or the scope was empty, so staleness cannot be judged.

§change_scoped: bool

True when this run analyzed only part of the project, so a whole-project baseline matches less of it for reasons that are not rot.

Implementations§

Source§

impl BaselineStaleness

Source

pub const fn stale_entries(&self) -> usize

Entries that matched no current finding on this run.

Source

pub const fn warning(&self) -> BaselineStalenessWarning

The advisory warning this run prints on stderr by default.

Silent for a run narrowed to part of the project, because such a run legitimately sees only a slice of a whole-project baseline and re-saving from it would drop every entry the run never looked at. Silent as well when the run produced no findings: a cleaned project and a rotted baseline look identical from here, and the re-save advice is wrong when the right move is deleting the file.

Source

pub const fn trips_gate(&self) -> bool

Whether the opt-in --fail-on-stale-baseline gate fires.

Deliberately stricter than Self::warning: any stale entry counts. The quarter threshold exists to keep an unasked-for line from training people to ignore it, and the empty-run silence exists because an advisory cannot tell rot from success; a repository that passes the flag has asked for both. Change-scope stays the one shared suppression, because a narrowed run still cannot judge a whole-project baseline.

Source

pub fn to_envelope( &self, moved_entries: usize, scope_reasons: BaselineScopeReasons, unrecognised_format: bool, ) -> BaselineStaleness

This run’s machine-readable view of the baseline, for the JSON envelope.

Every member is derived here rather than in a consumer, so the advisory threshold and the gate rule have exactly one implementation. Only health can follow a file move; the commands that match entries by fingerprint pass 0.

scope_reasons and unrecognised_format come from the caller because only the command knows which channels it read and which format it read the file as; this struct carries the counts the analysis needs and nothing more. change_scoped and scope_reasons must agree, which is why every caller derives the boolean from the same reason set it passes here.

unrecognised_format widens gate_trips here, at the single site that builds it, so the opt-in gate, the exit code, every CI surface that reads the boolean and the MCP sentences move together: a file this command cannot read as its own suppresses nothing, which no count can express. Unlike the count rule it is not suppressed by change_scoped, because telling a foreign file from this command’s own needs no project-wide run.

Trait Implementations§

Source§

impl Clone for BaselineStaleness

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for BaselineStaleness

Source§

impl Debug for BaselineStaleness

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for BaselineStaleness

Source§

impl PartialEq for BaselineStaleness

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for BaselineStaleness

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsOut<T> for T
where T: Copy,

Source§

fn as_out(&mut self) -> Out<'_, T>

Returns an out reference to self.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<'a, T> FromIn<'a, T> for T

Source§

fn from_in(t: T, _: &'a Allocator) -> T

Converts to this type from the input type within the given allocator.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<'a, T, U> IntoIn<'a, U> for T
where U: FromIn<'a, T>,

Source§

fn into_in(self, allocator: &'a Allocator) -> U

Converts this type into the (usually inferred) input type within the given allocator.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more