#![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 ElixirCode {
fn compute<'a>(node: &Node<'a>, code: &'a [u8], stats: &mut Stats) {
use crate::metrics::cognitive::{elixir_call_keyword, elixir_do_block_call_children};
if !stats.is_disabled() || !Self::is_func_space_with_code(node, code) {
return;
}
if !matches!(elixir_call_keyword(node, code), Some("defmodule")) {
return;
}
stats.is_class_space = true;
for stmt in elixir_do_block_call_children(node) {
match elixir_call_keyword(&stmt, code) {
Some("def" | "defmacro") => {
stats.class_nm += 1;
stats.class_npm += 1;
}
Some("defp" | "defmacrop") => {
stats.class_nm += 1;
}
_ => {}
}
}
}
}