pub struct BrainMethodAnalyzer {
pub min_lines: usize,
pub min_complexity: usize,
pub min_external_refs: usize,
}Expand description
Detect Brain Methods using the detection strategy from [1]:
(LOC > High/2) AND (CYCLO >= High) AND (MAXNESTING >= Several) AND (NOAV > Many)
Since cha does not track MAXNESTING, we use a three-metric variant:
(LOC > 65) AND (CYCLO >= 4) AND (NOAV > 7)
§References
[1] M. Lanza and R. Marinescu, “Object-Oriented Metrics in Practice: Using Software Metrics to Characterize, Evaluate, and Improve the Design of Object-Oriented Systems,” Springer, 2006. doi: 10.1007/3-540-39538-5. Chapter 6.2. Thresholds derived from Table A.2 (45 Java projects): LOC High = 130, CYCLO High ≈ 3.1, Several = 3, Many = 7–8.
Fields§
§min_lines: usizeLOC threshold (High/2 = 65)
min_complexity: usizeCYCLO threshold (High ≈ 4)
min_external_refs: usizeNOAV threshold (Many = 7)
Trait Implementations§
Source§impl Default for BrainMethodAnalyzer
impl Default for BrainMethodAnalyzer
Source§impl Plugin for BrainMethodAnalyzer
impl Plugin for BrainMethodAnalyzer
Source§fn description(&self) -> &str
fn description(&self) -> &str
Short description of what the plugin detects.
Source§fn analyze(&self, ctx: &AnalysisContext<'_>) -> Vec<Finding>
fn analyze(&self, ctx: &AnalysisContext<'_>) -> Vec<Finding>
Run analysis on a single file and return findings.
List of authors.
Auto Trait Implementations§
impl Freeze for BrainMethodAnalyzer
impl RefUnwindSafe for BrainMethodAnalyzer
impl Send for BrainMethodAnalyzer
impl Sync for BrainMethodAnalyzer
impl Unpin for BrainMethodAnalyzer
impl UnsafeUnpin for BrainMethodAnalyzer
impl UnwindSafe for BrainMethodAnalyzer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> GetSetFdFlags for T
impl<T> GetSetFdFlags for T
Source§fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
Query the “status” flags for the
self file descriptor.Source§fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
Source§fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: AsFilelike,
fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: AsFilelike,
Set the “status” flags for the
self file descriptor. Read moreSource§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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