Skip to main content

detect_coupling

Function detect_coupling 

Source
pub fn detect_coupling(
    commits: &[CommitInfo],
    min_coupling: f64,
    min_co_changes: u32,
) -> Result<Vec<CoupledPair>, ArgusError>
Expand description

Detect temporal coupling between files.

Returns coupled pairs sorted by coupling_degree descending. Only returns pairs where coupling_degree >= min_coupling and co_changes >= min_co_changes.

§Errors

Returns ArgusError on processing failure.

§Examples

use argus_gitpulse::coupling::detect_coupling;
use argus_gitpulse::mining::{CommitInfo, FileChange, ChangeStatus};

let commits = vec![
    CommitInfo {
        hash: "abc".into(),
        author: "alice".into(),
        email: "alice@example.com".into(),
        timestamp: 1000,
        message: "change".into(),
        files_changed: vec![
            FileChange { path: "a.rs".into(), lines_added: 5, lines_deleted: 0, status: ChangeStatus::Modified },
            FileChange { path: "b.rs".into(), lines_added: 3, lines_deleted: 0, status: ChangeStatus::Modified },
        ],
    },
];
let pairs = detect_coupling(&commits, 0.0, 1).unwrap();
assert_eq!(pairs.len(), 1);