in bugbug/tools/code_review.py [0:0]
def retrieve_comments_with_hunks(self):
def comment_filter(comment: InlineComment):
# We want to keep all generated comments
if comment.is_generated:
return True
comment_content = comment.content
# Ignore very short and very long comments
if not 50 < len(comment_content) < 500:
return False
# Ignore comments with URLs
if "https://" in comment_content or "http://" in comment_content:
return False
# Ignore nit comments
if self.NIT_PATTERN.search(comment_content):
return False
# Ignore comments with code blocks
if "```" in comment_content:
return False
comment_lower = comment_content.lower()
if any(
phrase in comment_lower
for phrase in [
"wdyt?",
"what do you think?",
"you explain",
"understand",
]
):
return False
return True
for diff_id, comments in self.get_all_inline_comments(comment_filter):
try:
patch_set = PatchSet.from_string(self.load_raw_diff_by_id(diff_id))
except UnidiffParseError:
# TODO: use log instead of print
print(f"Failed to parse {diff_id}")
continue
except ConduitError:
logger.warning("Failed to load %d", diff_id)
continue
file_map = {
patched_file.path: patched_file
for patched_file in patch_set
if patched_file.is_modified_file
}
for comment in comments:
patched_file = file_map.get(comment.filename)
if not patched_file:
continue
hunk = self.get_matching_hunk(patched_file, comment)
if not hunk:
continue
yield hunk, comment