#![cfg_attr(coverage_nightly, coverage(off))]
use crate::services::deep_context::*;
use crate::services::progress::{MultiProgress, ProgressBar, ProgressStyle};
use anyhow::Result;
use rayon::prelude::*;
use std::path::Path;
use std::sync::Arc;
use tokio::sync::mpsc;
use tracing::{info, warn};
const ANALYSIS_COUNT: u64 = 8;
pub use crate::services::deep_context::{ChurnAnalysis, DependencyGraph};
pub use crate::services::lightweight_provability_analyzer::{FunctionId, ProofSummary};
pub use crate::services::satd_detector::SATDAnalysisResult;
pub struct ConcurrentDeepContextAnalyzer {
config: DeepContextConfig,
progress: MultiProgress,
}
impl ConcurrentDeepContextAnalyzer {
#[provable_contracts_macros::contract("pmat-core.yaml", equation = "check_compliance")]
pub fn new(config: DeepContextConfig) -> Self {
Self {
config,
progress: MultiProgress::new(),
}
}
}
pub struct AstCache {
data: std::collections::HashMap<std::path::PathBuf, ParsedAst>,
}
impl AstCache {
fn new() -> Self {
Self {
data: std::collections::HashMap::new(),
}
}
fn insert(&mut self, path: std::path::PathBuf, ast: ParsedAst) {
self.data.insert(path, ast);
}
fn files(&self) -> &std::collections::HashMap<std::path::PathBuf, ParsedAst> {
&self.data
}
}
#[derive(Default)]
pub struct ParsedAst {
}
#[derive(Default)]
pub struct ComplexityResult {
}
#[derive(Default)]
pub struct ComplexityResults {
}
impl ComplexityResults {
fn combine(_results: Vec<ComplexityResult>) -> Self {
Self::default()
}
}
#[derive(Default)]
pub struct BigOResults {
}
#[derive(Default)]
pub struct TDGResults {
}
#[derive(Default)]
pub struct DeadCodeResults {
}
pub struct CombinedAnalyses {
pub complexity: ComplexityResults,
pub provability: Vec<ProofSummary>,
pub satd: SATDAnalysisResult,
pub churn: ChurnAnalysis,
pub dag: DependencyGraph,
pub tdg: TDGResults,
pub big_o: BigOResults,
pub dead_code: DeadCodeResults,
}
pub struct DeepAnalysisResult {
pub analyses: CombinedAnalyses,
pub timestamp: std::time::SystemTime,
}
include!("deep_context_concurrent_analysis.rs");
include!("deep_context_concurrent_tests.rs");