summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Sassoulas <pierre.sassoulas@gmail.com>2021-07-01 13:59:13 +0200
committerPierre Sassoulas <pierre.sassoulas@gmail.com>2021-07-01 14:17:44 +0200
commitc983d7d7620db90b82d13d3aa8cc48c8d7b96085 (patch)
treec95a8cbf402601cb5cc9117193db23fc70deab71
parent65b57287ab2ebc6950f56b0b0fc1a6ae5dbde202 (diff)
downloadpylint-git-c983d7d7620db90b82d13d3aa8cc48c8d7b96085.tar.gz
[duplicate-code] Separate creation and displaying of similarity reports
-rw-r--r--pylint/checkers/similar.py37
1 files changed, 20 insertions, 17 deletions
diff --git a/pylint/checkers/similar.py b/pylint/checkers/similar.py
index 19a7c0ba1..77c762294 100644
--- a/pylint/checkers/similar.py
+++ b/pylint/checkers/similar.py
@@ -112,27 +112,30 @@ class Similar:
def _display_sims(self, similarities: List[Tuple]) -> None:
"""Display computed similarities on stdout"""
- duplicated_line_number = 0
+ report = self._get_similarity_report(similarities)
+ print(report)
+
+ def _get_similarity_report(self, similarities: List[Tuple]) -> str:
+ """Create a report from similarities"""
+ report: str = ""
+ duplicated_line_number: int = 0
for number, files in similarities:
- print()
- print(number, "similar lines in", len(files), "files")
+ report += f"\n{number} similar lines in {len(files)} files\n"
files = sorted(files)
- lineset = idx = None
- for lineset, idx in files:
- print(f"=={lineset.name}:{idx}")
- if lineset:
- for line in lineset._real_lines[idx : idx + number]:
- print(" ", line.rstrip())
+ line_set = idx = None
+ for line_set, idx in files:
+ report += f"=={line_set.name}:{idx}\n"
+ if line_set:
+ for line in line_set._real_lines[idx : idx + number]:
+ report += f" {line.rstrip()}\n"
duplicated_line_number += number * (len(files) - 1)
- total_line_number = sum(len(lineset) for lineset in self.linesets)
- print(
- "TOTAL lines=%s duplicates=%s percent=%.2f"
- % (
- total_line_number,
- duplicated_line_number,
- duplicated_line_number * 100.0 / total_line_number,
- )
+ total_line_number: int = sum(len(lineset) for lineset in self.linesets)
+ report += "TOTAL lines={} duplicates={} percent={:.2f}\n".format(
+ total_line_number,
+ duplicated_line_number,
+ duplicated_line_number * 100.0 / total_line_number,
)
+ return report
def _find_common(self, lineset1, lineset2):
"""find similarities in the two given linesets"""