use super::ast_builder::AstBuilder;
use super::doc_gen::DocGenerator;
use super::test_gen::TestGenerator;
use crate::qdd::{
Checkpoint, CodeType, CreateSpec, QddResult, QualityMetrics, QualityProfile, QualityScore,
RollbackPlan,
};
use anyhow::{anyhow, Result};
pub struct QualityCodeGenerator {
pub(crate) profile: QualityProfile,
ast_builder: AstBuilder,
test_generator: TestGenerator,
doc_generator: DocGenerator,
}
impl QualityCodeGenerator {
#[must_use]
pub fn new(profile: QualityProfile) -> Self {
Self {
ast_builder: AstBuilder::new(profile.clone()),
test_generator: TestGenerator::new(profile.clone()),
doc_generator: DocGenerator::new(profile.clone()),
profile,
}
}
}
include!("quality_code_creation.rs");
include!("quality_code_analysis.rs");
include!("quality_code_tests.rs");
include!("quality_code_property_tests.rs");