From ff9c7b25f6a8d571706c00a5cdfc2fb11247d950 Mon Sep 17 00:00:00 2001 From: "ry.yamafuji" Date: Thu, 4 Dec 2025 14:33:31 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=AA=E3=83=B3=E3=82=BF=E3=83=BC=E3=82=92?= =?UTF-8?q?=E5=AE=9F=E8=A1=8C=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/pyruff.yml | 15 +++++++-- .gitignore | 1 + scripts/generate_linter_from_json.py | 49 ++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 scripts/generate_linter_from_json.py diff --git a/.github/workflows/pyruff.yml b/.github/workflows/pyruff.yml index 6c5339d..090d3fe 100644 --- a/.github/workflows/pyruff.yml +++ b/.github/workflows/pyruff.yml @@ -32,13 +32,22 @@ jobs: pip install -r requirements.txt pip install -r requirements-dev.txt + - name: Check Initer + id: checkIniter + run: | + ruff check . --output-format json --output-file ruff-report.json + + - name: Generate Linter Report + id: generateLinterReport + run: | + python scripts/generate_linter_from_json.py + + - name: pull_request message with Ruff Lint results id: prMessageRuffLint run: | - echo 'echo ${{ toJson(github.event_name) }}' - echo 'echo ${{ toJson(github.event) }}' curl -v -X POST \ -H "Content-Type: application/json" \ -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ - -d "{\"body\": \"## :mag: Ruff Lint Results\n\`\`\`\ntest\n\`\`\`\"}" \ + -d @lint-result.json \ ${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/issues/8/comments diff --git a/.gitignore b/.gitignore index 1dddfae..139d1f8 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ __pycache__/ *.py[cod] *$py.class ruff-report.* +lint-result.json # C extensions *.so diff --git a/scripts/generate_linter_from_json.py b/scripts/generate_linter_from_json.py new file mode 100644 index 0000000..9d3c076 --- /dev/null +++ b/scripts/generate_linter_from_json.py @@ -0,0 +1,49 @@ +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() \ No newline at end of file