| 131 | } |
| 132 | |
| 133 | pub fn compute_library_api_coverage(&mut self) -> Result<&HashMap<String, f32>> { |
| 134 | self.api_coverage.clear(); |
| 135 | let mut cov_cache: HashMap<String, (u32, u32)> = HashMap::new(); |
| 136 | for func_name in self.get_global_branches().get_entity().keys() { |
| 137 | let (covered, total) = self |
| 138 | .get_global_branches() |
| 139 | .compute_func_branch_status(func_name); |
| 140 | cov_cache.insert(func_name.to_string(), (covered, total)); |
| 141 | } |
| 142 | for gadget in get_func_gadgets() { |
| 143 | let func = gadget.get_func_name(); |
| 144 | let api_cov = self |
| 145 | .get_global_branches() |
| 146 | .compute_recursive_func_coverage(func, &cov_cache)?; |
| 147 | self.api_coverage.insert(func.to_string(), api_cov); |
| 148 | } |
| 149 | Ok(&self.api_coverage) |
| 150 | } |
| 151 | |
| 152 | pub fn is_library_api_all_covered(&self) -> bool { |
| 153 | for v in self.api_coverage.values() { |