pub struct ErrorHandlingAnalyzer {
pub max_unwraps_per_function: usize,
}Expand description
Detect error handling smells:
- Empty catch/except blocks (silently swallowed errors)
- Excessive unwrap()/expect() calls in Rust
§References
[1] G. Padua and W. Shang, “Revisiting Exception Handling Practices with Exception Flow Analysis,” Empirical Software Engineering, vol. 23, no. 6, pp. 3337–3383, 2018. doi: 10.1007/s10664-018-9601-8.
[2] A. Rahman, C. Parnin, and L. Williams, “The Seven Sins: Security Smells in Infrastructure as Code Scripts,” in Proc. 41st Int. Conf. Software Engineering (ICSE), 2019, pp. 164–175. doi: 10.1109/ICSE.2019.00033.
Fields§
§max_unwraps_per_function: usizeTrait Implementations§
Source§impl Default for ErrorHandlingAnalyzer
impl Default for ErrorHandlingAnalyzer
Source§impl Plugin for ErrorHandlingAnalyzer
impl Plugin for ErrorHandlingAnalyzer
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 ErrorHandlingAnalyzer
impl RefUnwindSafe for ErrorHandlingAnalyzer
impl Send for ErrorHandlingAnalyzer
impl Sync for ErrorHandlingAnalyzer
impl Unpin for ErrorHandlingAnalyzer
impl UnsafeUnpin for ErrorHandlingAnalyzer
impl UnwindSafe for ErrorHandlingAnalyzer
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