@@ -77,34 +77,46 @@ def generate(
7777 output_path .write_text (html )
7878 logger .info (f"HTML report saved: { output_path } " )
7979
80- def _generate_html (
80+ def _prepare_coverage_data (
8181 self ,
82- title : str ,
83- exact_dups : list [list [str ]],
84- subset_dups : list [tuple [str , str , float ]],
85- similar : list [tuple [str , str , float ]],
86- threshold : float ,
87- ) -> str :
88- """Generate HTML content."""
89- total_tests = len (self .finder .tests )
90- duplicate_count = self .finder .get_duplicate_count ()
82+ ) -> tuple [dict [str , dict [int , str ]], set [tuple [str , int ]], float ]:
83+ """
84+ Collect and analyze source files for coverage display.
9185
92- # Collect and read source files for the split-screen view
86+ Returns:
87+ Tuple of (source_code_map, unique_lines_covered, coverage_percentage)
88+ """
9389 source_reader = SourceCodeReader ()
9490 all_files = set ()
9591 unique_lines_covered = set ()
92+
9693 for test in self .finder .tests :
9794 for filename , line in test .covered_lines :
9895 all_files .add (filename )
9996 unique_lines_covered .add ((filename , line ))
10097
10198 source_code_map = source_reader .read_multiple (list (all_files ))
10299
103- # Calculate total lines in all files
104100 total_lines_in_files = sum (len (lines ) for lines in source_code_map .values ())
105101 lines_covered = len (unique_lines_covered )
106-
107102 coverage_percentage = (lines_covered / total_lines_in_files * 100 ) if total_lines_in_files > 0 else 0
103+
104+ return source_code_map , unique_lines_covered , coverage_percentage
105+
106+ def _generate_html (
107+ self ,
108+ title : str ,
109+ exact_dups : list [list [str ]],
110+ subset_dups : list [tuple [str , str , float ]],
111+ similar : list [tuple [str , str , float ]],
112+ threshold : float ,
113+ ) -> str :
114+ """Generate HTML content."""
115+ total_tests = len (self .finder .tests )
116+ duplicate_count = self .finder .get_duplicate_count ()
117+
118+ # Collect and read source files for the split-screen view
119+ source_code_map , unique_lines_covered , coverage_percentage = self ._prepare_coverage_data ()
108120
109121 html = f"""<!DOCTYPE html>
110122<html lang="en">
0 commit comments