rapx/analysis/opt/data_collection/
initialization.rs1pub mod local_set;
2pub mod vec_init;
3
4use local_set::LocalSetCheck;
5use vec_init::VecInitCheck;
6
7use crate::analysis::core::dataflow::graph::Graph;
8use crate::analysis::opt::OptCheck;
9
10use super::super::LEVEL;
11use rustc_middle::ty::TyCtxt;
12
13pub struct InitializationCheck {
14 local_set: LocalSetCheck,
15 vec_init: VecInitCheck,
16}
17
18impl OptCheck for InitializationCheck {
19 fn new() -> Self {
20 Self {
21 local_set: LocalSetCheck::new(),
22 vec_init: VecInitCheck::new(),
23 }
24 }
25
26 fn check(&mut self, graph: &Graph, tcx: &TyCtxt) {
27 let level = LEVEL.lock().unwrap();
28 if *level == 2 {
29 self.local_set.check(graph, tcx);
30 self.vec_init.check(graph, tcx);
31 }
32 }
33
34 fn report(&self, graph: &Graph) {
35 self.local_set.report(graph);
36 self.vec_init.report(graph);
37 }
38
39 fn cnt(&self) -> usize {
40 self.local_set.cnt() + self.vec_init.cnt()
41 }
42}