Browse Source
Add simple scripts to convert ruff check and ruff format output to toml exclude sections. These sections can be used to ignore baseline violations for an existing codebase. Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>pull/81622/head
2 changed files with 60 additions and 0 deletions
@ -0,0 +1,18 @@
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env python3 |
||||
|
||||
# Copyright (c) 2024 Basalte bv |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
import sys |
||||
|
||||
# A very simple script to convert ruff format output to toml |
||||
# For example: |
||||
# ruff format --check | ./scripts/ruff/gen_format_exclude.py >> .ruff-excludes.toml |
||||
|
||||
if __name__ == "__main__": |
||||
sys.stdout.write("[format]\n") |
||||
sys.stdout.write("exclude = [\n") |
||||
for line in sys.stdin: |
||||
if line.startswith("Would reformat: "): |
||||
sys.stdout.write(f' "./{line[16:-1]}",\n') |
||||
sys.stdout.write("]\n") |
@ -0,0 +1,42 @@
@@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env python3 |
||||
|
||||
# Copyright (c) 2024 Basalte bv |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
import json |
||||
import sys |
||||
from pathlib import Path, PurePosixPath |
||||
|
||||
# A very simple script to convert ruff lint output from json to toml |
||||
# For example: |
||||
# ruff check --output-format=json | ./scripts/ruff/gen_lint_exclude.py >> .ruff-excludes.toml |
||||
|
||||
|
||||
class RuffRule: |
||||
def __init__(self, code: str, url: str) -> None: |
||||
self.code = code |
||||
self.url = url |
||||
|
||||
def __eq__(self, other: object) -> bool: |
||||
if not isinstance(other, type(self)): |
||||
return NotImplemented |
||||
return self.code.__eq__(other.code) |
||||
|
||||
def __hash__(self) -> int: |
||||
return self.code.__hash__() |
||||
|
||||
|
||||
if __name__ == "__main__": |
||||
violations = json.load(sys.stdin) |
||||
sys.stdout.write("[lint.per-file-ignores]\n") |
||||
|
||||
rules: dict[str, set[RuffRule]] = {} |
||||
for v in violations: |
||||
rules.setdefault(v["filename"], set()).add(RuffRule(v["code"], v["url"])) |
||||
|
||||
for f, rs in rules.items(): |
||||
path = PurePosixPath(f) |
||||
sys.stdout.write(f'"./{path.relative_to(Path.cwd())}" = [\n') |
||||
for r in sorted(rs, key=lambda x: x.code): |
||||
sys.stdout.write(f' "{r.code}",\t# {r.url}\n'.expandtabs()) |
||||
sys.stdout.write("]\n") |
Loading…
Reference in new issue