in src/metrics/abc.rs [312:343]
fn java_count_unary_conditions(list_node: &Node, conditions: &mut f64) {
use Java::*;
let list_kind = list_node.kind_id().into();
let mut cursor = list_node.cursor();
// Scans the immediate children nodes of the argument node
if cursor.goto_first_child() {
loop {
// Gets the current child node and its kind
let node = cursor.node();
let node_kind = node.kind_id().into();
// Checks if the node is a unary condition
if matches!(node_kind, MethodInvocation | Identifier | True | False)
&& matches!(list_kind, BinaryExpression)
&& !matches!(list_kind, ArgumentList)
{
*conditions += 1.;
} else {
// Checks if the node is a unary condition container
java_inspect_container(&node, conditions);
}
// Moves the cursor to the next sibling node of the current node
// Exits the scan if there is no next sibling node
if !cursor.goto_next_sibling() {
break;
}
}
}
}