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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
use crate::audit::normalized::AuditContext;
use crate::i18n::I18n;
use crate::output::localized::is_english;
use crate::output::report_model::{DesignQualityFindingPresentation, DesignQualityPresentation};
pub(super) fn build_design_quality_details(
normalized: &AuditContext<'_>,
i18n: &I18n,
) -> Option<DesignQualityPresentation> {
let en = is_english(i18n);
normalized.raw_design_quality.map(|dq| {
let warning_count = dq.warnings().count();
let advisory_count = dq.advisories().count();
DesignQualityPresentation {
warning_count,
advisory_count,
findings: dq
.findings
.iter()
.map(|f| {
let level_label = match f.level {
crate::design_quality::FindingLevel::Warning => {
if en {
"Warning"
} else {
"Warnung"
}
}
crate::design_quality::FindingLevel::Advisory => {
if en {
"Advisory"
} else {
"Hinweis"
}
}
};
let confidence_label = match f.confidence {
crate::design_quality::Confidence::High => {
if en {
"High"
} else {
"Hoch"
}
}
crate::design_quality::Confidence::Medium => {
if en {
"Medium"
} else {
"Mittel"
}
}
crate::design_quality::Confidence::Low => {
if en {
"Low"
} else {
"Niedrig"
}
}
};
DesignQualityFindingPresentation {
rule_id: f.rule_id.clone(),
level_label: level_label.to_string(),
confidence_label: confidence_label.to_string(),
selector: f.selector.clone(),
evidence: f.evidence.clone(),
message: crate::design_quality::finding_message_text(
&f.rule_id, f.level, en,
),
}
})
.collect(),
}
})
}