#![allow(clippy::wildcard_imports, clippy::enum_glob_use)]
#![allow(
clippy::cast_precision_loss,
clippy::cast_possible_truncation,
clippy::cast_sign_loss
)]
use super::*;
impl Npm for GroovyCode {
fn compute<'a>(
node: &Node<'a>,
_code: &'a [u8],
ancestors: Ancestors<'a, '_>,
stats: &mut Stats,
) {
use crate::metrics::npa::{groovy_body_is_interface_like, groovy_has_explicit_public};
use Groovy::*;
match node.kind_id().into() {
ClassBody | EnumBody => {
let is_interface_like = groovy_body_is_interface_like(node, ancestors);
for method in direct_child_funcs::<Self>(node) {
if is_interface_like {
stats.interface_nm += 1;
stats.interface_npm += 1;
} else {
stats.class_nm += 1;
if groovy_has_explicit_public(&method) {
stats.class_npm += 1;
}
}
}
}
_ => {}
}
}
}