diff --git a/report/templates/index.html b/report/templates/index.html index 1108de841d..ea4dd0a586 100644 --- a/report/templates/index.html +++ b/report/templates/index.html @@ -198,11 +198,11 @@

Accumulated results

{{ accumulated_results.build_rate |percent }}% - Average coverage + Average line coverage per benchmark {{ accumulated_results.average_coverage |percent }}% - Average line coverage diff + Average line coverage diff per benchmark {{ accumulated_results.average_line_coverage_diff |percent }}% diff --git a/run_all_experiments.py b/run_all_experiments.py index 3a5c96de7b..f5203cc1c5 100755 --- a/run_all_experiments.py +++ b/run_all_experiments.py @@ -492,6 +492,12 @@ def _process_total_coverage_gain() -> dict[str, dict[str, Any]]: return {} coverage_gain: dict[str, dict[str, Any]] = {} + sum_coverage_diff: float = 0.0 + sum_coverage_relative_gain: float = 0.0 + sum_coverage_ofg_total_covered_lines: int = 0 + sum_coverage_ofg_total_new_covered_lines: int = 0 + sum_coverage_existing_total_covered_lines: int = 0 + sum_coverage_existing_total_lines: int = 0 for project, cov_list in textcov_dict.items(): total_cov = textcov.Textcov() for cov in cov_list: @@ -537,7 +543,52 @@ def _process_total_coverage_gain() -> dict[str, dict[str, Any]]: # Fail safe when total_lines is 0 because of invalid coverage report logger.warning( 'Line coverage information missing from the coverage report.') - coverage_gain[project] = {'coverage_diff': 0.0} + coverage_gain[project] = { + 'language': + oss_fuzz_checkout.get_project_language(project), + 'coverage_diff': + 0.0, + 'coverage_relative_gain': + cov_relative_gain, + 'coverage_ofg_total_covered_lines': + total_cov_covered_lines_before_subtraction, + 'coverage_ofg_total_new_covered_lines': + total_cov.covered_lines, + 'coverage_existing_total_covered_lines': + existing_textcov.covered_lines, + 'coverage_existing_total_lines': + total_existing_lines, + } + sum_coverage_diff += coverage_gain[project]['coverage_diff'] + sum_coverage_relative_gain += ( + coverage_gain[project]['coverage_relative_gain']) + sum_coverage_ofg_total_covered_lines += ( + coverage_gain[project]['coverage_ofg_total_covered_lines']) + sum_coverage_ofg_total_new_covered_lines += ( + coverage_gain[project]['coverage_ofg_total_new_covered_lines']) + sum_coverage_existing_total_covered_lines += ( + coverage_gain[project]['coverage_existing_total_covered_lines']) + sum_coverage_existing_total_lines += ( + coverage_gain[project]['coverage_existing_total_lines']) + + # Project-level average data. + if len(coverage_gain): + coverage_gain['AVERAGE'] = { + 'language': + '-', + 'coverage_diff': + sum_coverage_diff / len(coverage_gain), + 'coverage_relative_gain': + sum_coverage_relative_gain / len(coverage_gain), + 'coverage_ofg_total_covered_lines': + sum_coverage_ofg_total_covered_lines / len(coverage_gain), + 'coverage_ofg_total_new_covered_lines': + sum_coverage_ofg_total_new_covered_lines / len(coverage_gain), + 'coverage_existing_total_covered_lines': + sum_coverage_existing_total_covered_lines / len(coverage_gain), + 'coverage_existing_total_lines': + sum_coverage_existing_total_lines / len(coverage_gain), + } return coverage_gain