Skip to main content

MetricScope

Enum MetricScope 

Source
pub enum MetricScope {
    File,
    Function,
    Container,
}
Expand description

The space kind a metric’s threshold is meaningful on (issue #969).

A threshold gate (bca check, the Python to_sarif binding) walks every crate::FuncSpace — the file-level SpaceKind::Unit root, every container (class / impl / …), and every individual function. For the subtree-summed accessors a metric’s value at any space that owns children is a sum across many functions, so a per-function limit would fire on every non-trivial file and multi-method impl. Scope records the kind each metric actually measures so the front-ends gate it there and nowhere else — keeping the CLI gate and the binding in lockstep, the same way Direction keeps their breach direction aligned.

Variants§

§

File

Gate only the whole-file SpaceKind::Unit root — the loc.* size family, whose limit is a per-file ceiling.

§

Function

Gate only individual function spaces (SpaceKind::Function — free functions, methods, closures). The per-function complexity metrics (cognitive, cyclomatic, abc, mi.) and the subtree sums that describe one function (halstead., nargs, nexits, tokens) live here.

Whether “one function” includes its nested closures is per metric, not per scope. halstead.*, nexits and tokens read subtree sums, because a closure’s tokens and exits really are part of the enclosing body a reader must follow. nargs reads the space’s own parameters instead (#1196): a closure that opens its own space is gated on its own row, and summing its arguments into the enclosing signature made the offender’s number describe something its remediation could not change.

§

Container

Gate only container spaces that own methods (class / struct / trait / impl / namespace / interface) — the object-oriented size metrics nom, wmc, npm, npa.

Implementations§

Source§

impl MetricScope

Source

pub fn admits(self, kind: SpaceKind) -> bool

Whether a threshold with this scope is evaluated against kind.

The single source of truth for the kind-filtering both the CLI gate and the Python binding apply, so the two cannot drift on which space kinds a metric gates.

Trait Implementations§

Source§

impl Clone for MetricScope

Source§

fn clone(&self) -> MetricScope

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 MetricScope

Source§

impl Debug for MetricScope

Source§

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

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

impl Eq for MetricScope

Source§

impl Hash for MetricScope

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for MetricScope

Source§

fn eq(&self, other: &MetricScope) -> 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 MetricScope

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> 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<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<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> 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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.