debtmap 0.19.1

Code complexity and technical debt analyzer
Documentation
use crate::analyzers::go::debt::detect_complexity_debt;
use crate::analyzers::go::dependencies::extract_dependencies;
use crate::analyzers::go::generated::is_generated_go;
use crate::analyzers::go::metrics::{build_file_metrics, to_function_metrics};
use crate::analyzers::go::visitor::analyze_ast;
use crate::core::FileMetrics;
use crate::core::ast::GoAst;

pub fn analyze_go_file(ast: &GoAst, threshold: u32) -> FileMetrics {
    let analysis = analyze_ast(ast);
    let functions: Vec<_> = analysis.functions.iter().map(to_function_metrics).collect();
    let debt_items = if is_generated_go(&ast.path, &ast.source) {
        Vec::new()
    } else {
        detect_complexity_debt(&ast.path, threshold, &functions)
    };

    build_file_metrics(
        ast.path.clone(),
        functions,
        debt_items,
        extract_dependencies(ast),
        ast.source.lines().count(),
    )
}