cloud-run-job-base/scripts/generate_linter_from_json.py

49 lines
1.6 KiB
Python

import json
class GenerateLinter:
def __init__(self,
json_file="ruff-report.json",
output_file="lint-result.json"):
"""
初期化
"""
self.json_file = json_file
self.output_file = output_file
def _genarate_lint_report(self, data: list) -> str:
_str = ""
if not data:
_str += "## Linter(リンタ)指摘事項なし\n\n"
_str += "素晴らしいコードです!🎉\n"
return _str
_str += "## Linter(リンタ)レビュー\n\n"
_str += "以下の指摘事項があります。コードを見直してください。\n\n"
_str += "### 指摘事項一覧\n"
_str += "|コード|重要性|ファイル名|行数|課題内容\n"
_str += "|---|---|---|---|---|\n"
for issue in data:
code = issue.get("code", "-")
severity = issue.get("severity", "-")
filename = issue.get("filename", "-")
line = issue.get("location", {}).get("line", "-")
message = issue.get("message", "-")
_str += f"|{code}|{severity}|{filename}|{line}|{message}|\n"
return _str
def generate_lint_report_json(self):
with open(self.json_file, "r") as f:
data = json.load(f)
with open(self.output_file, "w") as f:
report = {"body": self._genarate_lint_report(data)}
json.dump(report, f, ensure_ascii=False, indent=4)
print(f"Linter report generated: {self.output_file}")
if __name__ == "__main__":
generator = GenerateLinter()
generator.generate_lint_report_json()