bot/code_review_bot/report/debug.py (37 lines of code) (raw):

# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. import json import os.path import time import structlog from code_review_bot.report.base import Reporter logger = structlog.get_logger(__name__) class DebugReporter(Reporter): """ Debug the issues found and report through the logs Build a json file with all issues details, stored as a TC artifact """ def __init__(self, output_dir): assert os.path.isdir(output_dir), "Invalid output dir" self.report_path = os.path.join(output_dir, "report.json") def publish(self, issues, revision, task_failures, links, reviewers): """ Display issues choices """ # Simply output issues details through logging logger.info("Debug revision", rev=str(revision)) for issue in issues: logger.info( "Issue {}".format( "publishable" if issue.is_publishable() else "silent" ), issue=str(issue), ) for task in task_failures: logger.info("Task failure detected", name=task.name, task=task.id) for patch in revision.improvement_patches: logger.info(f"Patch {patch}") # Output json report in public directory report = { "time": time.time(), "revision": revision.as_dict(), "issues": [issue.as_dict() for issue in issues], "patches": { patch.analyzer.name: patch.url or patch.path for patch in revision.improvement_patches }, "task_failures": [ {"name": task.name, "id": task.id} for task in task_failures ], } with open(self.report_path, "w") as f: json.dump(report, f)