use super::super::{AnalysisOptions, diff::ChangedFile};
use crate::config::OraclePolicy;
use crate::domain::Finding;
use std::path::Path;
#[derive(Clone, Debug, Default)]
pub(crate) struct LanguageDiffResult {
pub(crate) findings: Vec<Finding>,
pub(crate) changed_files: usize,
}
#[derive(Clone, Debug, Default)]
pub(crate) struct LanguageRepoResult {
pub(crate) findings: Vec<Finding>,
pub(crate) production_files: usize,
}
pub(crate) trait LanguageAdapter {
fn accepts_path(&self, path: &Path) -> bool;
fn analyze_diff(
&self,
options: &AnalysisOptions,
oracle_policy: &OraclePolicy,
changed_files: &[ChangedFile],
) -> Result<LanguageDiffResult, String>;
fn analyze_repo(
&self,
options: &AnalysisOptions,
oracle_policy: &OraclePolicy,
) -> Result<LanguageRepoResult, String>;
}