| 83 | } |
| 84 | |
| 85 | fn statistics(results: ScanResult) { |
| 86 | // println!("Processed {:?} files", res.len()); |
| 87 | println!("Scanned a total of {} files", results.parsed_files.len()); |
| 88 | let total: usize = results.parsed_files.len(); |
| 89 | let total_lines: usize = results.parsed_files.iter().map(|p| p.num_lines).sum(); |
| 90 | let failed = results |
| 91 | .parsed_files |
| 92 | .iter() |
| 93 | .filter(|p| p.result.is_err()) |
| 94 | .count(); |
| 95 | let passed = results |
| 96 | .parsed_files |
| 97 | .iter() |
| 98 | .filter(|p| p.result.is_ok()) |
| 99 | .count(); |
| 100 | println!("Passed: {passed} Failed: {failed} Total: {total}"); |
| 101 | println!( |
| 102 | "That is {} % success rate.", |
| 103 | (passed as f64 * 100.0) / total as f64 |
| 104 | ); |
| 105 | let duration = results.t2 - results.t1; |
| 106 | println!("Total time spend: {duration:?}"); |
| 107 | println!( |
| 108 | "Processed {} files. That's {} files/second", |
| 109 | total, |
| 110 | rate(total, duration) |
| 111 | ); |
| 112 | println!( |
| 113 | "Processed {} lines of python code. That's {} lines/second", |
| 114 | total_lines, |
| 115 | rate(total_lines, duration) |
| 116 | ); |
| 117 | } |
| 118 | |
| 119 | fn rate(counter: usize, duration: Duration) -> f64 { |
| 120 | (counter * 1_000_000) as f64 / duration.as_micros() as f64 |