Skip to content

Commit c983d7d

Browse files
[duplicate-code] Separate creation and displaying of similarity reports
1 parent 65b5728 commit c983d7d

File tree

1 file changed

+20
-17
lines changed

1 file changed

+20
-17
lines changed

pylint/checkers/similar.py

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -112,27 +112,30 @@ def _compute_sims(self):
112112

113113
def _display_sims(self, similarities: List[Tuple]) -> None:
114114
"""Display computed similarities on stdout"""
115-
duplicated_line_number = 0
115+
report = self._get_similarity_report(similarities)
116+
print(report)
117+
118+
def _get_similarity_report(self, similarities: List[Tuple]) -> str:
119+
"""Create a report from similarities"""
120+
report: str = ""
121+
duplicated_line_number: int = 0
116122
for number, files in similarities:
117-
print()
118-
print(number, "similar lines in", len(files), "files")
123+
report += f"\n{number} similar lines in {len(files)} files\n"
119124
files = sorted(files)
120-
lineset = idx = None
121-
for lineset, idx in files:
122-
print(f"=={lineset.name}:{idx}")
123-
if lineset:
124-
for line in lineset._real_lines[idx : idx + number]:
125-
print(" ", line.rstrip())
125+
line_set = idx = None
126+
for line_set, idx in files:
127+
report += f"=={line_set.name}:{idx}\n"
128+
if line_set:
129+
for line in line_set._real_lines[idx : idx + number]:
130+
report += f" {line.rstrip()}\n"
126131
duplicated_line_number += number * (len(files) - 1)
127-
total_line_number = sum(len(lineset) for lineset in self.linesets)
128-
print(
129-
"TOTAL lines=%s duplicates=%s percent=%.2f"
130-
% (
131-
total_line_number,
132-
duplicated_line_number,
133-
duplicated_line_number * 100.0 / total_line_number,
134-
)
132+
total_line_number: int = sum(len(lineset) for lineset in self.linesets)
133+
report += "TOTAL lines={} duplicates={} percent={:.2f}\n".format(
134+
total_line_number,
135+
duplicated_line_number,
136+
duplicated_line_number * 100.0 / total_line_number,
135137
)
138+
return report
136139

137140
def _find_common(self, lineset1, lineset2):
138141
"""find similarities in the two given linesets"""

0 commit comments

Comments
 (0)