1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use std::{
collections::{BTreeSet, HashMap, HashSet},
fs,
};
use crate::analyzer::{
optimizations::Optimization, qa::QualityAssurance, utils::LineNumber,
vulnerabilities::Vulnerability,
};
use super::{
optimization_report::generate_optimization_report, qa_report::generate_qa_report,
vulnerability_report::generate_vulnerability_report,
};
pub fn generate_report(
vulnerabilities: HashMap<Vulnerability, Vec<(String, BTreeSet<LineNumber>)>>,
optimizations: HashMap<Optimization, Vec<(String, BTreeSet<LineNumber>)>>,
qa: HashMap<QualityAssurance, Vec<(String, BTreeSet<LineNumber>)>>,
) {
let mut solstat_report = String::from("");
if vulnerabilities.len() > 0 {
solstat_report.push_str(&generate_vulnerability_report(vulnerabilities));
solstat_report.push_str("\n\n");
}
if optimizations.len() > 0 {
solstat_report.push_str(&generate_optimization_report(optimizations));
solstat_report.push_str("\n\n");
}
if qa.len() > 0 {
solstat_report.push_str(&generate_qa_report(qa));
solstat_report.push_str("\n\n");
}
fs::write("solstat_report.md", solstat_report).expect("Unable to solstat_report to file");
}